{"version":3,"sources":["webpack:///./node_modules/scheduler/cjs/scheduler.production.min.js","webpack:///./node_modules/prop-types/factoryWithThrowingShims.js","webpack:///./node_modules/prop-types/index.js","webpack:///./node_modules/react-jw-player/dist/helpers/get-event-name-from-prop.js","webpack:///./node_modules/react-jw-player/dist/create-event-handlers/on-play.js","webpack:///./node_modules/popper.js/dist/esm/popper.js","webpack:///./node_modules/process/browser.js","webpack:///./node_modules/react-jw-player/dist/react-jw-player.js","webpack:///./resources/js/bootstrap.js","webpack:///./node_modules/react-jw-player/dist/create-event-handlers/on-video-load.js","webpack:///./resources/js/home.js","webpack:///./node_modules/react-jw-player/dist/create-event-handlers/on-ad-play.js","webpack:///./resources/js/components/PostComponents/Image.jsx","webpack:///./resources/js/components/Dummies/SmallPostDummy.jsx","webpack:///./resources/js/components/Models/SmallPost.jsx","webpack:///./resources/js/libraries/js.cookie.js","webpack:///./node_modules/react-jw-player/dist/create-event-handlers/on-full-screen.js","webpack:///./node_modules/react-jw-player/dist/create-event-handlers/on-mute.js","webpack:///./resources/js/components/Pages/HomePage.jsx","webpack:///./resources/js/components/PostComponents/Ad.jsx","webpack:///./resources/js/translation.js","webpack:///./node_modules/object-assign/index.js","webpack:///./resources/js/other.js","webpack:///./resources/js/components/InfiniteScroll.jsx","webpack:///./resources/js/poll.js","webpack:///./node_modules/scheduler/index.js","webpack:///./node_modules/bootstrap/dist/js/bootstrap.js","webpack:///./node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack:///./node_modules/react-jw-player/dist/helpers/set-jw-player-defaults.js","webpack:///./resources/js/menu.js","webpack:///./resources/js/components/Partials/TermFilter.jsx","webpack:///./node_modules/react-fast-compare/index.js","webpack:///./lang sync ^\\.\\/.*\\.json$","webpack:///./node_modules/react-jw-player/dist/player-prop-types.js","webpack:///./node_modules/react-jw-player/dist/helpers/get-player-opts.js","webpack:///./node_modules/react-jw-player/dist/create-event-handlers/on-time.js","webpack:///./node_modules/react-jw-player/dist/helpers/install-player-script.js","webpack:///./node_modules/react-jw-player/dist/create-event-handlers/index.js","webpack:///./resources/js/components/Partials/Emoji.jsx","webpack:///./resources/js/components/PostComponents/CommentsForm.jsx","webpack:///./resources/js/components/PostComponents/Comment.jsx","webpack:///./resources/js/components/Partials/Reactions.jsx","webpack:///./resources/js/components/Dummies/CommentDummy.jsx","webpack:///./resources/js/components/Partials/Icon.jsx","webpack:///./resources/js/components/PostComponents/SocialShare.jsx","webpack:///./resources/js/components/PostComponents/Comments.jsx","webpack:///./resources/js/components/PostComponents/ShareButton.jsx","webpack:///./resources/js/components/Dummies/PostDummy.jsx","webpack:///./resources/js/components/PostComponents/Carousel/ShoppingCarouselItem.jsx","webpack:///./node_modules/ssr-window/ssr-window.esm.js","webpack:///./node_modules/dom7/dom7.esm.js","webpack:///./node_modules/swiper/shared/dom.js","webpack:///./node_modules/swiper/shared/utils.js","webpack:///./node_modules/swiper/shared/get-support.js","webpack:///./node_modules/swiper/shared/get-device.js","webpack:///./node_modules/swiper/shared/get-browser.js","webpack:///./node_modules/swiper/core/transition/transitionEmit.js","webpack:///./node_modules/swiper/core/events/onTouchStart.js","webpack:///./node_modules/swiper/core/events/onTouchMove.js","webpack:///./node_modules/swiper/core/events/onTouchEnd.js","webpack:///./node_modules/swiper/core/events/onResize.js","webpack:///./node_modules/swiper/core/events/onClick.js","webpack:///./node_modules/swiper/core/events/onScroll.js","webpack:///./node_modules/swiper/core/events/index.js","webpack:///./node_modules/swiper/core/breakpoints/setBreakpoint.js","webpack:///./node_modules/swiper/core/check-overflow/index.js","webpack:///./node_modules/swiper/core/defaults.js","webpack:///./node_modules/swiper/core/moduleExtendParams.js","webpack:///./node_modules/swiper/core/core.js","webpack:///./node_modules/swiper/core/events-emitter.js","webpack:///./node_modules/swiper/core/update/index.js","webpack:///./node_modules/swiper/core/update/updateSize.js","webpack:///./node_modules/swiper/core/update/updateSlides.js","webpack:///./node_modules/swiper/core/update/updateAutoHeight.js","webpack:///./node_modules/swiper/core/update/updateSlidesOffset.js","webpack:///./node_modules/swiper/core/update/updateSlidesProgress.js","webpack:///./node_modules/swiper/core/update/updateProgress.js","webpack:///./node_modules/swiper/core/update/updateSlidesClasses.js","webpack:///./node_modules/swiper/core/update/updateActiveIndex.js","webpack:///./node_modules/swiper/core/update/updateClickedSlide.js","webpack:///./node_modules/swiper/core/translate/index.js","webpack:///./node_modules/swiper/core/translate/getTranslate.js","webpack:///./node_modules/swiper/core/translate/setTranslate.js","webpack:///./node_modules/swiper/core/translate/minTranslate.js","webpack:///./node_modules/swiper/core/translate/maxTranslate.js","webpack:///./node_modules/swiper/core/translate/translateTo.js","webpack:///./node_modules/swiper/core/transition/index.js","webpack:///./node_modules/swiper/core/transition/setTransition.js","webpack:///./node_modules/swiper/core/transition/transitionStart.js","webpack:///./node_modules/swiper/core/transition/transitionEnd.js","webpack:///./node_modules/swiper/core/slide/index.js","webpack:///./node_modules/swiper/core/slide/slideTo.js","webpack:///./node_modules/swiper/core/slide/slideToLoop.js","webpack:///./node_modules/swiper/core/slide/slideNext.js","webpack:///./node_modules/swiper/core/slide/slidePrev.js","webpack:///./node_modules/swiper/core/slide/slideReset.js","webpack:///./node_modules/swiper/core/slide/slideToClosest.js","webpack:///./node_modules/swiper/core/slide/slideToClickedSlide.js","webpack:///./node_modules/swiper/core/loop/index.js","webpack:///./node_modules/swiper/core/loop/loopCreate.js","webpack:///./node_modules/swiper/core/loop/loopFix.js","webpack:///./node_modules/swiper/core/loop/loopDestroy.js","webpack:///./node_modules/swiper/core/grab-cursor/index.js","webpack:///./node_modules/swiper/core/grab-cursor/setGrabCursor.js","webpack:///./node_modules/swiper/core/grab-cursor/unsetGrabCursor.js","webpack:///./node_modules/swiper/core/breakpoints/index.js","webpack:///./node_modules/swiper/core/breakpoints/getBreakpoint.js","webpack:///./node_modules/swiper/core/classes/index.js","webpack:///./node_modules/swiper/core/classes/addClasses.js","webpack:///./node_modules/swiper/core/classes/removeClasses.js","webpack:///./node_modules/swiper/core/images/index.js","webpack:///./node_modules/swiper/core/images/loadImage.js","webpack:///./node_modules/swiper/core/images/preloadImages.js","webpack:///./node_modules/swiper/core/modules/resize/resize.js","webpack:///./node_modules/swiper/core/modules/observer/observer.js","webpack:///./node_modules/swiper/shared/create-element-if-not-defined.js","webpack:///./node_modules/swiper/modules/navigation/navigation.js","webpack:///./node_modules/swiper/shared/classes-to-selector.js","webpack:///./node_modules/swiper/modules/pagination/pagination.js","webpack:///./node_modules/swiper/modules/autoplay/autoplay.js","webpack:///./node_modules/swiper/components-shared/utils.js","webpack:///./node_modules/swiper/components-shared/params-list.js","webpack:///./node_modules/swiper/shared/calc-looped-slides.js","webpack:///./node_modules/swiper/react/get-children.js","webpack:///./node_modules/swiper/components-shared/update-swiper.js","webpack:///./node_modules/swiper/react/use-isomorphic-layout-effect.js","webpack:///./node_modules/swiper/react/context.js","webpack:///./node_modules/swiper/react/swiper.js","webpack:///./node_modules/swiper/components-shared/get-params.js","webpack:///./node_modules/swiper/components-shared/mount-swiper.js","webpack:///./node_modules/swiper/components-shared/get-changed-params.js","webpack:///./node_modules/swiper/components-shared/update-on-virtual-data.js","webpack:///./node_modules/swiper/react/virtual.js","webpack:///./node_modules/swiper/react/loop.js","webpack:///./node_modules/swiper/react/swiper-slide.js","webpack:///./resources/js/components/PostComponents/Carousel/Carousel.jsx","webpack:///./resources/js/components/PostComponents/Carousel/ShoppingCarousel.jsx","webpack:///./resources/js/components/PostComponents/Terms.jsx","webpack:///./resources/js/components/Partials/Rating.jsx","webpack:///./resources/js/components/PostComponents/Unmute.jsx","webpack:///./resources/js/components/PostComponents/ExitLink.jsx","webpack:///./resources/js/components/PostComponents/RecommendedPosts.jsx","webpack:///./resources/js/components/Models/Post.jsx","webpack:///./node_modules/react-jw-player/dist/helpers/get-curried-on-load.js","webpack:///./node_modules/react-jw-player/dist/helpers/remove-jw-player-instance.js","webpack:///./node_modules/lazysizes/lazysizes.js","webpack:///./node_modules/react-jw-player/dist/helpers/initialize.js","webpack:///./node_modules/react-jw-player/dist/create-event-handlers/on-before-play.js","webpack:///./node_modules/dompurify/dist/purify.js","webpack:///./node_modules/react-jw-player/dist/default-props.js","webpack:///(webpack)/buildin/global.js"],"names":["f","g","h","k","l","window","MessageChannel","p","q","t","a","exports","unstable_now","b","setTimeout","u","Date","now","clearTimeout","unstable_forceFrameRate","w","performance","x","y","z","console","A","cancelAnimationFrame","requestAnimationFrame","error","B","C","D","E","F","G","Math","floor","H","I","port2","port1","onmessage","postMessage","J","c","length","push","d","e","K","L","M","pop","m","n","v","r","sortIndex","id","N","O","P","Q","R","S","T","U","V","callback","startTime","expirationTime","W","X","priorityLevel","Y","Z","unstable_IdlePriority","unstable_ImmediatePriority","unstable_LowPriority","unstable_NormalPriority","unstable_Profiling","unstable_UserBlockingPriority","unstable_cancelCallback","unstable_continueExecution","unstable_getCurrentPriorityLevel","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_requestPaint","unstable_runWithPriority","unstable_scheduleCallback","delay","timeout","unstable_shouldYield","unstable_wrapCallback","apply","this","arguments","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","module","shim","props","propName","componentName","location","propFullName","secret","err","Error","name","getShim","isRequired","ReactPropTypes","array","bool","func","number","object","string","symbol","any","arrayOf","element","elementType","instanceOf","node","objectOf","oneOf","oneOfType","shape","exact","checkPropTypes","PropTypes","Object","defineProperty","value","default","prop","arr","slice","eventName","_eventName","Array","isArray","from","firstLetter","rest","toLowerCase","join","event","playReason","setState","hasPlayed","onAutoStart","state","oldstate","onPlay","onResume","isBrowser","document","navigator","timeoutDuration","longerTimeoutBrowsers","i","userAgent","indexOf","debounce","Promise","fn","called","resolve","then","scheduled","isFunction","functionToCheck","toString","call","getStyleComputedProperty","property","nodeType","css","ownerDocument","defaultView","getComputedStyle","getParentNode","nodeName","parentNode","host","getScrollParent","body","_getStyleComputedProp","overflow","overflowX","overflowY","test","getReferenceNode","reference","referenceNode","isIE11","MSInputMethodContext","documentMode","isIE10","isIE","version","getOffsetParent","documentElement","noOffsetParent","offsetParent","nextElementSibling","getRoot","findCommonOffsetParent","element1","element2","order","compareDocumentPosition","Node","DOCUMENT_POSITION_FOLLOWING","start","end","range","createRange","setStart","setEnd","commonAncestorContainer","contains","firstElementChild","element1root","getScroll","side","undefined","upperSide","html","scrollingElement","includeScroll","rect","subtract","scrollTop","scrollLeft","modifier","top","bottom","left","right","getBordersSize","styles","axis","sideA","sideB","parseFloat","getSize","computedStyle","max","parseInt","getWindowSizes","height","width","classCallCheck","instance","Constructor","TypeError","createClass","defineProperties","target","descriptor","enumerable","configurable","writable","key","protoProps","staticProps","prototype","obj","_extends","assign","source","hasOwnProperty","getClientRect","offsets","getBoundingClientRect","result","sizes","clientWidth","clientHeight","horizScrollbar","offsetWidth","vertScrollbar","offsetHeight","getOffsetRectRelativeToArbitraryNode","children","parent","fixedPosition","isHTML","childrenRect","parentRect","scrollParent","borderTopWidth","borderLeftWidth","marginTop","marginLeft","getViewportOffsetRectRelativeToArtbitraryNode","excludeScroll","relativeOffset","innerWidth","innerHeight","offset","isFixed","getFixedPositionOffsetParent","parentElement","el","getBoundaries","popper","padding","boundariesElement","boundaries","boundariesNode","_getWindowSizes","isPaddingNumber","getArea","_ref","computeAutoPlacement","placement","refRect","rects","sortedAreas","keys","map","area","sort","filteredAreas","filter","_ref2","computedPlacement","variation","split","getReferenceOffsets","commonOffsetParent","getOuterSizes","marginBottom","marginRight","getOppositePlacement","hash","replace","matched","getPopperOffsets","referenceOffsets","popperRect","popperOffsets","isHoriz","mainSide","secondarySide","measurement","secondaryMeasurement","find","check","runModifiers","modifiers","data","ends","findIndex","cur","match","forEach","warn","enabled","update","isDestroyed","arrowStyles","attributes","flipped","options","positionFixed","flip","originalPlacement","position","isCreated","onUpdate","onCreate","isModifierEnabled","modifierName","some","getSupportedPropertyName","prefixes","upperProp","charAt","toUpperCase","prefix","toCheck","style","destroy","removeAttribute","willChange","disableEventListeners","removeOnDestroy","removeChild","getWindow","setupEventListeners","updateBound","addEventListener","passive","scrollElement","attachToScrollParents","scrollParents","isBody","eventsEnabled","enableEventListeners","scheduleUpdate","removeEventListener","isNumeric","isNaN","isFinite","setStyles","unit","isFirefox","isModifierRequired","requestingName","requestedName","requesting","_requesting","requested","placements","validPlacements","clockwise","counter","index","concat","reverse","BEHAVIORS","parseOffset","basePlacement","useHeight","fragments","frag","trim","divider","search","splitRegex","ops","op","mergeWithPrevious","reduce","str","toValue","index2","Defaults","shift","shiftvariation","_data$offsets","isVertical","shiftOffsets","preventOverflow","transformProp","popperStyles","transform","priority","primary","escapeWithReference","secondary","min","keepTogether","opSide","arrow","_data$offsets$arrow","arrowElement","querySelector","len","sideCapitalized","altSide","arrowElementSize","center","popperMarginSide","popperBorderSide","sideValue","round","placementOpposite","flipOrder","behavior","step","refOffsets","overlapsRef","overflowsLeft","overflowsRight","overflowsTop","overflowsBottom","overflowsBoundaries","flippedVariationByRef","flipVariations","flippedVariationByContent","flipVariationsByContent","flippedVariation","getOppositeVariation","inner","subtractLength","hide","bound","computeStyle","legacyGpuAccelerationOption","gpuAcceleration","offsetParentRect","shouldRound","noRound","referenceWidth","popperWidth","isVariation","horizontalToInteger","verticalToInteger","getRoundedOffsets","devicePixelRatio","prefixedProperty","invertTop","invertLeft","applyStyle","setAttribute","onLoad","modifierOptions","Popper","_this","bind","jquery","Utils","global","PopperUtils","cachedSetTimeout","cachedClearTimeout","process","defaultSetTimout","defaultClearTimeout","runTimeout","fun","currentQueue","queue","draining","queueIndex","cleanUpNextTick","drainQueue","run","marker","runClearTimeout","Item","noop","nextTick","args","title","browser","env","argv","versions","on","addListener","once","off","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","listeners","binding","cwd","chdir","dir","umask","_createClass","_react","_react2","_interopRequireDefault","_reactFastCompare2","_createEventHandlers2","_getCurriedOnLoad2","_getPlayerOpts2","_initialize3","_installPlayerScript2","_removeJwPlayerInstance2","_setJwPlayerDefaults2","_defaultProps2","_playerPropTypes2","__esModule","ReactJWPlayer","_Component","_classCallCheck","self","ReferenceError","_possibleConstructorReturn","__proto__","getPrototypeOf","adHasPlayed","hasFired","eventHandlers","uniqueScriptId","useMultiplePlayerScripts","playerId","videoRef","_initialize","_setVideoRef","subClass","superClass","create","constructor","setPrototypeOf","_inherits","isJWPlayerScriptLoaded","jwplayer","existingScript","getElementById","isUsingMultiplePlayerScripts","onload","context","onLoadCallback","scriptSrc","playerScript","nextProps","hasFileChanged","file","hasPlaylistChanged","playlist","_props","player","playerOpts","component","createElement","className","ref","Component","defaultProps","displayName","propTypes","require","$","jQuery","axios","defaults","headers","common","withCredentials","CancelToken","axiosSource","forms","getElementsByTagName","cancel","onVideoLoad","onAdResume","onAdPlay","Image","focalX","focalY","focalZ","small","media","normal","formats","_this2","image","RegExp","imgixUrl","stateData","paddingBottom","React","backgroundImage","data-pin-nopin","src","alt","imageUrl","URL","searchParams","set","imageMain","imageLazy","Fragment","sizeName","format","src1x","src2x","type","data-srcset","data-src","SmallPostDummy","columnSize","SmallPost","post","rowCount","postsBeforeAd","shortContent","DOMPurify","sanitize","excerpt","featured_image","href","url","categories","date_text","dangerouslySetInnerHTML","__html","infinityIndex","Ad","nbr","fitAdsToContent","timestamp","Cookie","factory","registeredInModuleLoader","define","OldCookies","Cookies","api","noConflict","extend","init","converter","path","expires","setMilliseconds","getMilliseconds","toUTCString","JSON","stringify","write","encodeURIComponent","String","decodeURIComponent","escape","stringifiedAttributes","attributeName","cookie","cookies","rdecode","parts","json","read","parse","get","getJSON","remove","withConverter","fullscreen","onEnterFullScreen","onExitFullScreen","mute","onMute","onUnmute","HomePage","pagetype","endpoint","urlStructure","getInitialState","seoDataArray","seoData","meta_data","socialData","social_title","social_description","social_url","social_image","created_at","modified","seo_author_name","seo_category_name","seo_tags","seo_author_first_name","seo_author_last_name","aller_ga","previous","InfiniteScroll","pageId","perPage","getSeoDataArray","getEndpoint","Post","homeElement","ReactDOM","render","adSlots","count","data-aller-ad-placement","data-aduniqueid","transReplaces","text","replaces","trans","locale","getAttribute","translation","translations","trans_choice","_translation$split2","single","plural","getOwnPropertySymbols","propIsEnumerable","propertyIsEnumerable","toObject","val","test1","getOwnPropertyNames","test2","fromCharCode","test3","letter","shouldUseNative","symbols","to","s","viewSize","envs","appendChild","curEnv","classList","add","display","childType","Children","only","lastIndex","page","initialPage","total","perpage","progress","completed","skeleton","date","stateObjs","metaObjs","domain","pathname","categorySlug","tagSlug","childrenDivided","tags","orderDirection","year","month","hideAds","cursor","topAdDiv","usedTimestamps","keyToTimestamp","infiniteScroll","handleScroll","onOrderingChange","returner","current_page","history","pushState","current_url","metaData","cts","metadata","publishedTime","postDate","author","postAuthor","loggedIn","contentType","pageType","doUpdateMetaData","metaElement","headElement","content","updateBrowserHistory","updateMetaData","DFPInit","adsUniqueId","hideAdsEnabled","_ana_hide_ads","hideDuration","_ana_hide_ads_duration_active","hideUntil","_ana_hide_ads_duration","hasNewTimestamp","initiateAd","instgrm","Embeds","response","status","log","values","newChildCollection","last_page","prevState","shouldHideAds","random","scrollHeight","ordering","preview","contentWrapper","findDOMNode","scrollY","each","_this3","up","down","reset","pageOverride","orderDirectionOverride","previousChildCollection","direction","_this4","generateUrl","initAds","childElement","childElements","masterindex","child","_this5","cloneElement","skeletonElements","isValidElement","constructChildren","showFilter","showLink","homeUrl","protocol","TermFilter","topCategories","Poll","questionID","votesCookie","votes","getVotes","querySelectorAll","poll","questionId","voted","totalCount","answers","answer","vote_count","switchToResults","answerId","castVote","question","postRef","closest","postID","dataset","newValues","total_votes","votedAnswerId","totalVotes","maxVotes","o","percentage","animationTime","isMaxVoted","votedClass","votedTitle","checkmark","outerHTML","barElement","_interopDefaultLegacy","$__default","Popper__default","_defineProperties","transitionEndEmulator","duration","one","Util","TRANSITION_END","triggerTransitionEnd","getUID","getSelectorFromElement","selector","hrefAttr","_","getTransitionDurationFromElement","transitionDuration","transitionDelay","floatTransitionDuration","floatTransitionDelay","reflow","trigger","supportsTransitionEnd","Boolean","isElement","typeCheckConfig","config","configTypes","expectedTypes","valueType","findShadowRoot","attachShadow","getRootNode","root","ShadowRoot","jQueryDetection","emulateTransitionEnd","special","bindType","delegateType","handle","is","handleObj","handler","NAME","JQUERY_NO_CONFLICT","Alert","_element","_proto","close","rootElement","_getRootElement","_triggerCloseEvent","isDefaultPrevented","_removeElement","dispose","removeData","closeEvent","Event","removeClass","hasClass","_destroyElement","detach","_jQueryInterface","$element","_handleDismiss","alertInstance","preventDefault","JQUERY_NO_CONFLICT$1","Button","shouldAvoidTriggerChange","toggle","triggerChangeEvent","addAriaPressed","input","checked","activeElement","focus","hasAttribute","toggleClass","avoidTriggerChange","button","initialButton","inputBtn","tagName","buttons","_i","_len","_button","NAME$2","EVENT_KEY$2","JQUERY_NO_CONFLICT$2","Default","interval","keyboard","slide","pause","wrap","touch","DefaultType","PointerType","TOUCH","PEN","Carousel","_items","_interval","_activeElement","_isPaused","_isSliding","touchTimeout","touchStartX","touchDeltaX","_config","_getConfig","_indicatorsElement","_touchSupported","maxTouchPoints","_pointerEvent","PointerEvent","MSPointerEvent","_addEventListeners","next","_slide","nextWhenVisible","hidden","prev","cycle","clearInterval","_updateInterval","setInterval","visibilityState","activeIndex","_getItemIndex","_handleSwipe","absDeltax","abs","_keydown","_addTouchEventListeners","originalEvent","pointerType","clientX","touches","move","which","_getItemByDirection","isNextDirection","isPrevDirection","lastItemIndex","itemIndex","_triggerSlideEvent","relatedTarget","eventDirectionName","targetIndex","fromIndex","slideEvent","_setActiveIndicatorElement","indicators","nextIndicator","addClass","elementInterval","defaultInterval","directionalClassName","orderClassName","activeElementIndex","nextElement","nextElementIndex","isCycling","slidEvent","CLASS_NAME_ACTIVE$1","action","ride","_dataApiClickHandler","slideIndex","carousels","$carousel","NAME$3","JQUERY_NO_CONFLICT$3","Default$1","DefaultType$1","Collapse","_isTransitioning","_triggerArray","toggleList","elem","filterElement","foundElem","_selector","_parent","_getParent","_addAriaAndCollapsedClass","show","actives","activesData","not","startEvent","dimension","_getDimension","attr","setTransitioning","scrollSize","CLASS_NAME_COLLAPSE","triggerArrayLength","isTransitioning","_getTargetFromElement","triggerArray","isOpen","currentTarget","$trigger","selectors","$target","NAME$4","JQUERY_NO_CONFLICT$4","REGEXP_KEYDOWN","ARROW_UP_KEYCODE","Default$2","boundary","popperConfig","DefaultType$2","Dropdown","_popper","_menu","_getMenuElement","_inNavbar","_detectNavbar","disabled","isActive","_clearMenus","usePopper","showEvent","_getParentFromElement","referenceElement","_getPopperConfig","hideEvent","stopPropagation","_getPlacement","$parentDropdown","_getOffset","toggles","clickEvent","dropdownMenu","_dataApiKeydownHandler","items","item","EVENT_CLICK_DATA_API$4","JQUERY_NO_CONFLICT$5","Default$3","backdrop","DefaultType$3","Modal","_dialog","_backdrop","_isShown","_isBodyOverflowing","_ignoreBackdropClick","_scrollbarWidth","_checkScrollbar","_setScrollbar","_adjustDialog","_setEscapeEvent","_setResizeEvent","_showBackdrop","_showElement","transition","_hideModal","htmlElement","handleUpdate","_triggerBackdropTransition","hideEventPrevented","isModalOverflowing","modalTransitionDuration","modalBody","ELEMENT_NODE","_enforceFocus","shownEvent","transitionComplete","has","_this6","_this7","_this8","_resetAdjustments","_resetScrollbar","_removeBackdrop","_this9","animate","appendTo","backdropTransitionDuration","callbackRemove","_backdropTransitionDuration","paddingLeft","paddingRight","_getScrollbarWidth","_this10","fixedContent","stickyContent","actualPadding","calculatedPadding","actualMargin","calculatedMargin","elements","margin","scrollDiv","scrollbarWidth","_this11","uriAttrs","DefaultWhitelist","br","col","code","div","em","hr","h1","h2","h3","h4","h5","h6","img","li","ol","pre","span","sub","sup","strong","ul","SAFE_URL_PATTERN","DATA_URL_PATTERN","sanitizeHtml","unsafeHtml","whiteList","sanitizeFn","createdDocument","DOMParser","parseFromString","whitelistKeys","_loop","elName","attributeList","whitelistedAttributes","allowedAttributeList","attrName","nodeValue","regExp","attrRegex","allowedAttribute","innerHTML","NAME$6","JQUERY_NO_CONFLICT$6","BSCLS_PREFIX_REGEX","DISALLOWED_ATTRIBUTES","DefaultType$4","animation","template","container","fallbackPlacement","customClass","AttachmentMap","AUTO","TOP","RIGHT","BOTTOM","LEFT","Default$4","HIDE","HIDDEN","SHOW","SHOWN","INSERTED","CLICK","FOCUSIN","FOCUSOUT","MOUSEENTER","MOUSELEAVE","Tooltip","_isEnabled","_timeout","_hoverState","_activeTrigger","tip","_setListeners","enable","disable","toggleEnabled","dataKey","DATA_KEY","_getDelegateConfig","click","_isWithActiveTrigger","_enter","_leave","getTipElement","EVENT_KEY","_hideModalHandler","isWithContent","shadowRoot","isInTheDom","tipId","setContent","attachment","_getAttachment","addAttachmentClass","_getContainer","complete","_fixTransition","prevHoverState","_cleanTipClass","getTitle","CLASS_PREFIX","setElementContent","CLASS_NAME_FADE$2","empty","append","_handlePopperPlacementChange","eventIn","eventOut","_fixTitle","titleType","dataAttributes","dataAttr","$tip","tabClass","popperData","initConfigAnimation","NAME$7","JQUERY_NO_CONFLICT$7","BSCLS_PREFIX_REGEX$1","Default$5","DefaultType$5","Event$1","Popover","_Tooltip","_getContent","CLASS_PREFIX$1","CLASS_NAME_FADE$3","NAME$8","JQUERY_NO_CONFLICT$8","Default$6","method","DefaultType$6","ScrollSpy","_scrollElement","_offsets","_targets","_activeTarget","_scrollHeight","_process","refresh","autoMethod","offsetMethod","offsetBase","_getScrollTop","_getScrollHeight","targetSelector","targetBCR","pageYOffset","_getOffsetHeight","maxScroll","_activate","_clear","queries","$link","parents","SELECTOR_NAV_LINKS","scrollSpys","$spy","JQUERY_NO_CONFLICT$9","Tab","listElement","itemSelector","makeArray","hiddenEvent","active","_transitionComplete","dropdownChild","dropdownElement","dropdownToggleList","$this","JQUERY_NO_CONFLICT$a","DefaultType$7","autohide","Default$7","Toast","_clearTimeout","_close","Scrollspy","playerConfigs","__JW_PLAYER_CONFIGS__","existingConfig","lastScroll","searchForm","toggleSubMenu","overlay","burgerIcon","doc","windowpos","open","currentScroll","menu","toggleElement","childMenu","getElementsByClassName","showAll","filterOpen","onTermChange","onShowToggle","onMenuToggle","onFilterMenuToggle","categoryIsVisible","cat","slug","archiveIndex","archive","filterTermText","currentCategory","onChange","onClick","1","2","3","4","5","6","7","8","9","10","11","12","months","childindex","keyList","hasProp","hasElementType","Element","equal","arrA","arrB","dateA","dateB","getTime","regexpA","regexpB","$$typeof","message","webpackContext","req","webpackContextResolve","__webpack_require__","_propTypes","_propTypes2","aspectRatio","customProps","generatePrerollUrl","isAutoPlay","isMuted","licenseKey","onAdPause","onAdSkipped","onAdComplete","onError","onFiftyPercent","onNinetyFivePercent","onOneHundredPercent","onPause","onReady","onSeventyFivePercent","onTenSeconds","onThirtySeconds","onThreeSeconds","onTwentyFivePercent","onBuffer","onBufferChange","opts","_opts$customProps","hasAdvertising","aspectratio","advertising","client","admessage","autoplayadsmuted","autostart","hasChanged","onTime","threeSeconds","tenSeconds","thirtySeconds","twentyFivePercent","fiftyPercent","seventyFivePercent","ninetyFivePercent","jwPlayerScript","head","_onAdPlay2","_onBeforePlay2","_onFullScreen2","_onMute2","_onPlay2","_onTime2","_onVideoLoad2","onBeforePlay","onFullScreen","Emoji","svg","viewBox","xmlns","points","rx","cx","cy","fill","stroke","strokeWidth","fillRule","xlinkHref","mask","x1","y1","x2","y2","fetchType","CommentsForm","replyTo","remember","getRememberCookie","author_name","author_email","author_url","comment_body","isSubmitted","isLoading","newComment","onChangeValue","onRememberChange","onSubmit","postStatusEnum","publish","spam","approval","postStatusNotApprovedEnum","commentBodyLength","rememberJSON","updateRemember","validate","postComment","errors","isLoggedIn","post_id","comment_id","comment","onFetchComments","errorBag","commentOnText","cols","rows","placeholder","defaultChecked","htmlFor","rel","onToggleForm","Comment","cookieName","btoa","likes","liked","getLiked","showForm","running","onLike","toggleReplyForm","getCookieLikes","likesJSON","doLike","like","ike","email","colors","sum","character","charCodeAt","replies","verified","by_user","authorUrlLink","substring","gravatar","calculateColor","textAnchor","dominantBaseline","ONLY_TAGS","ADD_ATTR","hide_comment_likes","Reactions","choosenReaction","getReaction","reactions","single_reaction","doReaction","getCookieReactions","reactionsJSON","clickedReaction","textContent","updateReaction","setReactions","add_reaction","remove_reaction","success","newReaction","role","aria-label","heart","wow","sad","happy","angry","CommentDummy","Icon","strokeMiterlimit","SocialShare","postUrl","origin","blogName","blogTitle","encodeURI","blogLovin","Comments","comments","totalWithReplies","currentPage","nextPageUrl","replyToComment","URLSearchParams","showComments","fetchComments","fetchMoreComments","prevProps","orderBy","comment_count","total_with_replies","next_page_url","form","scrollIntoView","postId","commentsTitle","comments_title","commentsBtnText","hide_comments","activate_comments_title","onShowComments","ShareButton","toggleOpen","PostDummy","ShoppingCarouselItem","data-cts-object-category","data-cts-object-name","data-cts-object-url","link","data-cts-object-extra-info","data-cts-object-placement","data-product-title","loading","image_link","price","isObject","ssrDocument","createEvent","childNodes","createElementNS","importNode","hostname","getDocument","ssrWindow","CustomEvent","getPropertyValue","screen","matchMedia","win","Dom7","super","proto","makeReactive","arrayFlat","res","arrayFilter","toCreate","tempParent","qsa","uniqueArray","arrayUnique","noTrigger","shortcut","Methods","classes","classNames","attrs","removeAttr","eventType","listener","capture","handleLiveEvent","eventData","dom7EventData","unshift","handleEvent","events","j","dom7LiveListeners","proxyListener","dom7Listeners","handlers","dom7proxy","splice","evt","detail","bubbles","cancelable","dataIndex","dispatchEvent","transitionEnd","dom","fireCallBack","outerWidth","includeMargins","outerHeight","box","clientTop","clientLeft","scrollX","compareWith","matches","webkitMatchesSelector","msMatchesSelector","previousSibling","eq","returnIndex","els","newChild","tempDiv","firstChild","prepend","insertBefore","nextAll","nextEls","previousElementSibling","prevAll","prevEls","foundElements","found","methodName","getTranslate","matrix","curTransform","transformMatrix","curStyle","currentStyle","WebKitCSSMatrix","webkitTransform","MozTransform","OTransform","MsTransform","msTransform","m41","m42","noExtend","nextSource","HTMLElement","keysArray","nextIndex","nextKey","desc","getOwnPropertyDescriptor","__swiper__","setCSSProperty","varName","varValue","setProperty","animateCSSModeScroll","swiper","targetPosition","startPosition","translate","time","params","speed","wrapperEl","scrollSnapType","cssModeFrameID","isOutOfBound","current","easeProgress","cos","PI","currentPosition","scrollTo","deviceCached","getSupport","smoothScroll","DocumentTouch","passiveListener","supportsPassive","gestures","calcSupport","getDevice","overrides","support","platform","ua","device","ios","android","screenWidth","screenHeight","ipad","ipod","iphone","windows","macos","os","calcDevice","getBrowser","isSafari","isWebView","calcBrowser","transitionEmit","runCallbacks","previousIndex","touchEventsData","animating","preventInteractionOnTransition","cssMode","loop","loopFix","$targetEl","touchEventsTarget","isTouchEvent","isTouched","isMoved","swipingClassHasValue","noSwipingClass","eventPath","composedPath","noSwipingSelector","isTargetShadow","noSwiping","base","__closestFrom","assignedSlot","closestElement","allowClick","swipeHandler","currentX","targetTouches","pageX","currentY","pageY","startX","startY","edgeSwipeDetection","iOSEdgeSwipeDetection","edgeSwipeThreshold","iOSEdgeSwipeThreshold","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","updateSize","swipeDirection","threshold","allowThresholdMove","focusableElements","blur","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","freeMode","onTouchStart","rtlTranslate","rtl","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","maxTranslate","minTranslate","diffX","diffY","sqrt","touchAngle","isHorizontal","atan2","touchMoveStopPropagation","nested","startTranslate","setTransition","$wrapperEl","allowMomentumBounce","grabCursor","allowSlideNext","allowSlidePrev","setGrabCursor","diff","touchRatio","currentTranslate","disableParentSwiper","resistanceRatio","resistance","followFinger","watchSlidesProgress","updateActiveIndex","updateSlidesClasses","onTouchMove","updateProgress","setTranslate","slidesGrid","touchEndTime","timeDiff","pathTree","updateClickedSlide","lastClickTime","destroyed","currentPos","onTouchEnd","stopIndex","groupSize","slidesSizesGrid","slidesPerGroupSkip","slidesPerGroup","increment","rewindFirstIndex","rewindLastIndex","rewind","isBeginning","virtual","slides","isEnd","ratio","longSwipesMs","longSwipes","slideTo","longSwipesRatio","shortSwipes","navigation","nextEl","prevEl","onResize","breakpoints","setBreakpoint","snapGrid","updateSlides","slidesPerView","centeredSlides","autoplay","paused","watchOverflow","checkOverflow","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","newProgress","previousTranslate","translatesDiff","dummyEventAttached","dummyEventListener","touchEvents","domMethod","swiperMethod","passiveListeners","updateOnWindowResize","isGridEnabled","grid","initialSlide","resizeObserver","createElements","autoHeight","setWrapperSize","virtualTranslate","effect","breakpointsBase","spaceBetween","slidesPerGroupAuto","centeredSlidesBounds","slidesOffsetBefore","slidesOffsetAfter","normalizeSlideIndex","centerInsufficientSlides","roundLengths","simulateTouch","uniqueNavElements","slideToClickedSlide","preloadImages","updateOnImagesReady","loopAdditionalSlides","loopedSlides","loopedSlidesLimit","loopFillGroupWithBlank","loopPreventsSlide","maxBackfaceHiddenSlides","containerModifierClass","slideClass","slideBlankClass","slideActiveClass","slideDuplicateActiveClass","slideVisibleClass","slideDuplicateClass","slideNextClass","slideDuplicateNextClass","slidePrevClass","slideDuplicatePrevClass","wrapperClass","runCallbacksOnInit","_emitClasses","moduleExtendParams","allModulesParams","moduleParamName","moduleParams","auto","prototypes","eventsEmitter","eventsListeners","onceHandler","__emitterProxy","eventsAnyListeners","eventHandler","$el","Number","size","getDirectionLabel","getDirectionPropertyValue","label","swiperSize","wrongRTL","isVirtual","previousSlidesLength","slidesLength","offsetBefore","offsetAfter","previousSnapGridLength","previousSlidesGridLength","slidePosition","prevSlideSize","virtualSize","gridEnabled","slideSize","initSlides","shouldResetSlideSize","updateSlide","slideStyles","currentTransform","currentWebKitTransform","boxSizing","swiperSlideSize","updateWrapperSize","newSlidesGrid","slidesGridItem","allSlidesSize","slideSizeValue","maxSnap","snap","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","updateSlidesOffset","backFaceHiddenClass","hasClassBackfaceClassAdded","updateAutoHeight","activeSlides","newHeight","getSlideByIndex","visibleSlides","ceil","swiperSlideOffset","offsetLeft","offsetTop","updateSlidesProgress","offsetCenter","visibleSlidesIndexes","slideOffset","slideProgress","originalSlideProgress","slideBefore","slideAfter","originalProgress","multiplier","wasBeginning","wasEnd","realIndex","activeSlide","nextSlide","prevSlide","emitSlidesClasses","newActiveIndex","previousRealIndex","previousSnapIndex","skip","initialized","slideFound","clickedSlide","clickedIndex","byController","translateTo","translateBounds","internal","newTranslate","isH","onTranslateToWrapperTransitionEnd","transitionStart","initial","indexAsNumber","normalizedTranslate","normalizedGrid","normalizedGridNext","_immediateVirtual","_swiperImmediateVirtual","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","slideNext","perGroup","slidesPerViewDynamic","_clientLeft","slidePrev","normalize","normalizedSnapGrid","prevSnap","prevSnapIndex","prevIndex","slideReset","slideToClosest","currentSnap","slideToIndex","loopCreate","$selector","blankSlidesNum","blankNode","prependSlides","appendSlides","cloneNode","loopDestroy","moving","isLocked","unsetGrabCursor","attachEvents","detachEvents","breakpoint","getBreakpoint","currentBreakpoint","breakpointParams","originalParams","wasMultiRow","isMultiRow","wasEnabled","emitContainerClasses","wasModuleEnabled","isModuleEnabled","directionChanged","needsReLoop","changeDirection","isEnabled","containerEl","currentHeight","point","minRatio","substr","wasLocked","lastSlideIndex","lastSlideRightEdge","addClasses","suffixes","entries","resultClasses","prepareClasses","removeClasses","images","loadImage","imageEl","srcset","checkForComplete","onerror","imagesLoaded","imagesToLoad","currentSrc","extendedDefaults","swipers","newParams","modules","__modules__","mod","extendParams","swiperParams","passedParams","onAny","velocity","desktop","touchEventsTouch","touchEventsDesktop","clickTimeout","velocities","cls","slideEl","updates","getSlideClasses","view","spv","breakLoop","translateValue","translated","newDirection","needUpdate","currentDirection","mounted","getWrapperSelector","getWrapper","wrapper","mount","deleteInstance","cleanStyles","deleteProps","newDefaults","installModule","prototypeGroup","protoMethod","use","observer","animationFrame","resizeHandler","orientationChangeHandler","ResizeObserver","newWidth","contentBoxSize","contentRect","inlineSize","blockSize","observe","unobserve","observers","attach","MutationObserver","WebkitMutationObserver","mutations","observerUpdate","childList","characterData","observeParents","observeSlideChildren","containerParents","disconnect","createElementIfNotDefined","checkProps","Navigation","getEl","toggleEl","disabledClass","lockClass","$nextEl","$prevEl","onPrevClick","onNextClick","hideOnClick","hiddenClass","navigationDisabledClass","_s","targetEl","pagination","clickable","isHidden","classesToSelector","Pagination","pfx","bulletSize","bulletElement","renderBullet","renderProgressbar","renderFraction","renderCustom","progressbarOpposite","dynamicBullets","dynamicMainBullets","formatFractionCurrent","formatFractionTotal","bulletClass","bulletActiveClass","modifierClass","currentClass","totalClass","progressbarFillClass","progressbarOppositeClass","clickableClass","horizontalClass","verticalClass","paginationDisabledClass","bullets","dynamicBulletIndex","isPaginationDisabled","setSideBullets","$bulletEl","paginationType","firstIndex","midIndex","suffix","bullet","$bullet","bulletIndex","$firstDisplayedBullet","$lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","offsetProp","progressbarDirection","scale","scaleX","scaleY","paginationHTML","numberOfBullets","Autoplay","$activeSlideEl","autoplayResult","reverseDirection","stopOnLastSlide","stop","waitForTransition","onTransitionEnd","onVisibilityChange","onMouseEnter","disableOnInteraction","onMouseLeave","pauseOnMouseEnter","needsNavigation","needsPagination","needsScrollbar","scrollbar","uniqueClasses","unique","paramsList","calcLoopedSlides","slidesPerViewParams","breakpointOnlyParams","isChildSwiperSlide","includes","getChildren","slots","toArray","slot","foundSlides","processChildren","updateSwiper","changedParams","scrollbarEl","paginationEl","updateParams","currentParams","thumbs","needThumbsInit","needControllerInit","needPaginationInit","needScrollbarInit","needNavigationInit","controller","control","newValue","lazy","load","useIsomorphicLayoutEffect","deps","SwiperSlideContext","SwiperContext","_temp","externalElRef","tag","Tag","wrapperTag","WrapperTag","onSwiper","eventsAssigned","containerClasses","setContainerClasses","virtualData","setVirtualData","breakpointChanged","setBreakpointChanged","initializedRef","swiperElRef","swiperRef","oldPassedParamsRef","oldSlides","nextElRef","prevElRef","paginationElRef","scrollbarElRef","restProps","splitEvents","allowedParams","plainObj","getParams","onBeforeBreakpoint","initSwiper","extendWith","cache","renderExternal","renderExternalUpdate","mountSwiper","oldParams","oldChildren","getKey","addKey","oldChildrenKeys","childrenKeys","newKeys","oldKeys","newKey","oldKey","getChangedParams","parallax","Provider","renderVirtual","modifiedSlides","duplicateSlide","blankSlide","renderLoop","SwiperSlide","externalRef","zoom","virtualIndex","slideElRef","slideClasses","setSlideClasses","updateClasses","slideData","isVisible","isDuplicate","isPrev","isNext","renderChildren","manipulatedChildren","scrollLocked","outerContainer","createRef","calculatedChildWidth","itemsInView","initiated","isMobile","childWidthMultiplier","paddedChildren","translateMultiplier","itemWidth","setItemsInView","setCalculatedChildWidth","manipulateChildren","cloneArray","Swiper","ShoppingCarousel","galleryData","brandName","getBrandName","fetchConfig","gallery","products","mapProducts","product","product_module_disclaimer","data-carousel-title","product_module_title","data-cts-object-group","blogLogo","Terms","terms","Rating","rating","recipeRating","ratingObject","totalRating","toFixed","doRate","ratings","getCookieRating","stars","btn","_defineProperty","Unmute","_React$useState2","setShow","_React$useState4","expanded","setExpanded","timeouts","ExitLink","RecommendedPosts","recommendations","shouldFetch","postLowTtlMaxAge","lowTtl","hightTtl","isComponentEnabled","dateNow","cacheTtl","dateDiffInMinutes","updated_at","date1","date2","recommendation","model","playerHeading","jw_player_heading","playerID","jw_player_id","playlistID","jw_player_plalist_id","stopJWAutoPlay","jw_player_autoplay","jwPlayerCustomProps","setTimeEvents","activateUnmute","jwPlayerPosition","videoTitle","showUnmute","hasSticky","addTimestampToIntextAds","onUnmuteClick","onMuteToggle","onDisplayClick","hasMuted","play","filteredContent","uniqueID","ratingContainerInContent","loaded","PinUtils","build","setTrackingForJWPlayer","getConfig","schedule","brand","hostparts","subdomain","ads","getVideoPpId","adsPpId","adsTagUrl","customParamsString","customParams","verticals","getAll","floating","dismissible","mode","setConfig","setAdsState","isTop","adStats","gptEvent","getPlaylistItem","video_comm_link","video_comm_link_text","exitLink","setMute","getMute","isRecipe","isPreviewRecipe","filtered","headingSearchSring","recipeExtraHtml","ingress","addRecipeExtraDataIfRecipe","ADD_TAGS","getFloating","data-video-position","data-post-id","_ana_is_native","is_affiliate","_ana_sponsor_brand_name","_ana_article_tracking_pixel","affiliate_text","date_time_text","uniqueid","showVideoPlayer","manipulateFilteredContent","previousOnload","lazySizes","lazysizes","lazySizesCfg","lazySizesDefaults","lazyClass","loadedClass","loadingClass","preloadClass","errorClass","autosizesClass","fastLoadedClass","iframeLoadMode","srcAttr","srcsetAttr","sizesAttr","minSize","customMedia","expFactor","hFac","loadMode","loadHidden","ricTimeout","throttleDelay","lazySizesConfig","lazysizesConfig","cfg","noSupport","docElem","supportPicture","HTMLPictureElement","requestIdleCallback","regPicture","loadEvents","regClassCache","ele","reg","addRemoveLoadEvents","triggerEvent","noBubbles","noCancelable","initEvent","updatePolyfill","full","polyfill","picturefill","pf","reevaluate","getCSS","getWidth","_lazysizesWidth","rAF","firstFns","secondFns","fns","runFns","waiting","rafBatch","_lsFlush","rAFIt","simple","that","later","last","loader","regImg","regIframe","supportScroll","currentExpand","lowRuns","resetPreloading","isBodyHidden","isNestedVisible","elemExpand","outerRect","visible","eLtop","eLbottom","eLleft","eLright","checkElements","eLlen","autoLoadElem","loadedSomething","elemNegativeExpand","elemExpandVal","beforeExpandVal","defaultExpand","preloadExpand","lazyloadElems","_lazyRace","prematureUnveil","unveilElement","expand","_defEx","eLvW","elvH","isCompleted","preloadElems","preloadAfterLoad","throttledCheckElements","lastTime","gDelay","rICTimeout","idleCallback","isPriority","throttle","switchLoadingClass","_lazyCache","rafSwitchLoadingClass","rafedSwitchLoadingClass","handleSources","sourceSrcset","lazyUnveil","isAuto","isImg","isPicture","firesLoad","defaultPrevented","resetPreloadingTimer","contentWindow","changeIframeSrc","isLoaded","naturalWidth","autoSizer","updateElem","afterScroll","altLoadmodeScrollListner","started","persisted","loadingElements","subtree","readyState","checkElems","unveil","_aLSL","sizeElement","sources","getSizeElement","debouncedUpdateElementsSizes","autosizesElems","uP","aC","rC","hC","fire","gW","_getEventNameFromProp","_getEventNameFromProp2","setup","eventsToInitialize","adPlay","beforeComplete","beforePlay","playlistItem","currentVideo","playAd","isFrozen","freeze","seal","Reflect","construct","thisValue","Func","Function","arr2","_toConsumableArray","arrayForEach","unapply","arrayPop","arrayPush","stringToLowerCase","stringMatch","stringReplace","stringIndexOf","stringTrim","regExpTest","typeErrorCreate","_len2","_key2","thisArg","_key","addToSet","lcElement","clone","newObject","lookupGetter","svgFilters","svgDisallowed","mathMl","mathMlDisallowed","html$1","svg$1","mathMl$1","xml","MUSTACHE_EXPR","ERB_EXPR","DATA_ATTR","ARIA_ATTR","IS_ALLOWED_URI","IS_SCRIPT_OR_DATA","ATTR_WHITESPACE","_typeof","Symbol","iterator","_toConsumableArray$1","getGlobal","_createTrustedTypesPolicy","trustedTypes","createPolicy","currentScript","policyName","createHTML","html$$1","createDOMPurify","removed","isSupported","originalDocument","DocumentFragment","HTMLTemplateElement","NodeFilter","_window$NamedNodeMap","NamedNodeMap","MozNamedAttrMap","HTMLFormElement","ElementPrototype","getNextSibling","getChildNodes","trustedTypesPolicy","emptyHTML","RETURN_TRUSTED_TYPE","_document","implementation","createNodeIterator","createDocumentFragment","hooks","createHTMLDocument","MUSTACHE_EXPR$$1","ERB_EXPR$$1","DATA_ATTR$$1","ARIA_ATTR$$1","IS_SCRIPT_OR_DATA$$1","ATTR_WHITESPACE$$1","IS_ALLOWED_URI$$1","ALLOWED_TAGS","DEFAULT_ALLOWED_TAGS","ALLOWED_ATTR","DEFAULT_ALLOWED_ATTR","CUSTOM_ELEMENT_HANDLING","tagNameCheck","attributeNameCheck","allowCustomizedBuiltInElements","FORBID_TAGS","FORBID_ATTR","ALLOW_ARIA_ATTR","ALLOW_DATA_ATTR","ALLOW_UNKNOWN_PROTOCOLS","SAFE_FOR_TEMPLATES","WHOLE_DOCUMENT","SET_CONFIG","FORCE_BODY","RETURN_DOM","RETURN_DOM_FRAGMENT","SANITIZE_DOM","KEEP_CONTENT","IN_PLACE","USE_PROFILES","FORBID_CONTENTS","DEFAULT_FORBID_CONTENTS","DATA_URI_TAGS","DEFAULT_DATA_URI_TAGS","URI_SAFE_ATTRIBUTES","DEFAULT_URI_SAFE_ATTRIBUTES","MATHML_NAMESPACE","SVG_NAMESPACE","HTML_NAMESPACE","NAMESPACE","IS_EMPTY_INPUT","PARSER_MEDIA_TYPE","SUPPORTED_PARSER_MEDIA_TYPES","DEFAULT_PARSER_MEDIA_TYPE","transformCaseFunc","CONFIG","formElement","isRegexOrFunction","testValue","_parseConfig","ADD_URI_SAFE_ATTR","ADD_DATA_URI_TAGS","ALLOWED_URI_REGEXP","table","tbody","MATHML_TEXT_INTEGRATION_POINTS","HTML_INTEGRATION_POINTS","ALL_SVG_TAGS","ALL_MATHML_TAGS","_checkValidNamespace","namespaceURI","parentTagName","commonSvgAndHTMLElements","_forceRemove","_removeAttribute","attribute","getAttributeNode","_initDocument","dirty","leadingWhitespace","dirtyPayload","createDocument","createTextNode","_createIterator","SHOW_ELEMENT","SHOW_COMMENT","SHOW_TEXT","_isClobbered","elm","_isNode","_executeHook","entryPoint","currentNode","hook","_sanitizeElements","allowedTags","_basicCustomElementTest","_isValidAttribute","lcTag","lcName","_sanitizeAttributes","hookEvent","attrValue","keepAttr","allowedAttributes","_attr","forceKeepAttr","setAttributeNS","_sanitizeShadowDOM","fragment","shadowNode","shadowIterator","nextNode","importedNode","oldNode","returnNode","toStaticHTML","nodeIterator","shadowroot","serializedHTML","clearConfig","isValidAttribute","addHook","hookFunction","removeHook","removeHooks","removeAllHooks","noOp","onClose"],"mappings":"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","file":"/js/home.js","sourcesContent":["/** @license React v0.19.1\n * scheduler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var f,g,h,k,l;\nif(\"undefined\"===typeof window||\"function\"!==typeof MessageChannel){var p=null,q=null,t=function(){if(null!==p)try{var a=exports.unstable_now();p(!0,a);p=null}catch(b){throw setTimeout(t,0),b;}},u=Date.now();exports.unstable_now=function(){return Date.now()-u};f=function(a){null!==p?setTimeout(f,0,a):(p=a,setTimeout(t,0))};g=function(a,b){q=setTimeout(a,b)};h=function(){clearTimeout(q)};k=function(){return!1};l=exports.unstable_forceFrameRate=function(){}}else{var w=window.performance,x=window.Date,\ny=window.setTimeout,z=window.clearTimeout;if(\"undefined\"!==typeof console){var A=window.cancelAnimationFrame;\"function\"!==typeof window.requestAnimationFrame&&console.error(\"This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills\");\"function\"!==typeof A&&console.error(\"This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills\")}if(\"object\"===\ntypeof w&&\"function\"===typeof w.now)exports.unstable_now=function(){return w.now()};else{var B=x.now();exports.unstable_now=function(){return x.now()-B}}var C=!1,D=null,E=-1,F=5,G=0;k=function(){return exports.unstable_now()>=G};l=function(){};exports.unstable_forceFrameRate=function(a){0>a||125<a?console.error(\"forceFrameRate takes a positive int between 0 and 125, forcing framerates higher than 125 fps is not unsupported\"):F=0<a?Math.floor(1E3/a):5};var H=new MessageChannel,I=H.port2;H.port1.onmessage=\nfunction(){if(null!==D){var a=exports.unstable_now();G=a+F;try{D(!0,a)?I.postMessage(null):(C=!1,D=null)}catch(b){throw I.postMessage(null),b;}}else C=!1};f=function(a){D=a;C||(C=!0,I.postMessage(null))};g=function(a,b){E=y(function(){a(exports.unstable_now())},b)};h=function(){z(E);E=-1}}function J(a,b){var c=a.length;a.push(b);a:for(;;){var d=c-1>>>1,e=a[d];if(void 0!==e&&0<K(e,b))a[d]=b,a[c]=e,c=d;else break a}}function L(a){a=a[0];return void 0===a?null:a}\nfunction M(a){var b=a[0];if(void 0!==b){var c=a.pop();if(c!==b){a[0]=c;a:for(var d=0,e=a.length;d<e;){var m=2*(d+1)-1,n=a[m],v=m+1,r=a[v];if(void 0!==n&&0>K(n,c))void 0!==r&&0>K(r,n)?(a[d]=r,a[v]=c,d=v):(a[d]=n,a[m]=c,d=m);else if(void 0!==r&&0>K(r,c))a[d]=r,a[v]=c,d=v;else break a}}return b}return null}function K(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}var N=[],O=[],P=1,Q=null,R=3,S=!1,T=!1,U=!1;\nfunction V(a){for(var b=L(O);null!==b;){if(null===b.callback)M(O);else if(b.startTime<=a)M(O),b.sortIndex=b.expirationTime,J(N,b);else break;b=L(O)}}function W(a){U=!1;V(a);if(!T)if(null!==L(N))T=!0,f(X);else{var b=L(O);null!==b&&g(W,b.startTime-a)}}\nfunction X(a,b){T=!1;U&&(U=!1,h());S=!0;var c=R;try{V(b);for(Q=L(N);null!==Q&&(!(Q.expirationTime>b)||a&&!k());){var d=Q.callback;if(null!==d){Q.callback=null;R=Q.priorityLevel;var e=d(Q.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?Q.callback=e:Q===L(N)&&M(N);V(b)}else M(N);Q=L(N)}if(null!==Q)var m=!0;else{var n=L(O);null!==n&&g(W,n.startTime-b);m=!1}return m}finally{Q=null,R=c,S=!1}}\nfunction Y(a){switch(a){case 1:return-1;case 2:return 250;case 5:return 1073741823;case 4:return 1E4;default:return 5E3}}var Z=l;exports.unstable_IdlePriority=5;exports.unstable_ImmediatePriority=1;exports.unstable_LowPriority=4;exports.unstable_NormalPriority=3;exports.unstable_Profiling=null;exports.unstable_UserBlockingPriority=2;exports.unstable_cancelCallback=function(a){a.callback=null};exports.unstable_continueExecution=function(){T||S||(T=!0,f(X))};\nexports.unstable_getCurrentPriorityLevel=function(){return R};exports.unstable_getFirstCallbackNode=function(){return L(N)};exports.unstable_next=function(a){switch(R){case 1:case 2:case 3:var b=3;break;default:b=R}var c=R;R=b;try{return a()}finally{R=c}};exports.unstable_pauseExecution=function(){};exports.unstable_requestPaint=Z;exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=R;R=a;try{return b()}finally{R=c}};\nexports.unstable_scheduleCallback=function(a,b,c){var d=exports.unstable_now();if(\"object\"===typeof c&&null!==c){var e=c.delay;e=\"number\"===typeof e&&0<e?d+e:d;c=\"number\"===typeof c.timeout?c.timeout:Y(a)}else c=Y(a),e=d;c=e+c;a={id:P++,callback:b,priorityLevel:a,startTime:e,expirationTime:c,sortIndex:-1};e>d?(a.sortIndex=e,J(O,a),null===L(N)&&a===L(O)&&(U?h():U=!0,g(W,e-d))):(a.sortIndex=c,J(N,a),T||S||(T=!0,f(X)));return a};\nexports.unstable_shouldYield=function(){var a=exports.unstable_now();V(a);var b=L(N);return b!==Q&&null!==Q&&null!==b&&null!==b.callback&&b.startTime<=a&&b.expirationTime<Q.expirationTime||k()};exports.unstable_wrapCallback=function(a){var b=R;return function(){var c=R;R=b;try{return a.apply(this,arguments)}finally{R=c}}};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nfunction _toArray(arr) { return Array.isArray(arr) ? arr : Array.from(arr); }\n\nvar getEventNameFromProp = function getEventNameFromProp(prop) {\n var beginsWithOn = prop.slice(0, 2) === 'on';\n\n if (beginsWithOn) {\n var eventName = prop.slice(2);\n\n var _eventName = _toArray(eventName),\n firstLetter = _eventName[0],\n rest = _eventName.slice(1);\n\n return '' + firstLetter.toLowerCase() + rest.join('');\n }\n\n return null;\n};\n\nexports.default = getEventNameFromProp;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nfunction onPlay(event) {\n if (event.playReason === 'autostart') {\n this.setState({\n hasPlayed: true\n });\n this.props.onAutoStart(event);\n } else if (this.state.hasPlayed && (event.oldstate === 'buffering' || event.oldstate === 'paused')) {\n this.props.onResume(event);\n } else {\n this.props.onPlay(event);\n this.setState({\n hasPlayed: true\n });\n }\n}\n\nexports.default = onPlay;","/**!\n * @fileOverview Kickass library to create and place poppers near their reference elements.\n * @version 1.16.1\n * @license\n * Copyright (c) 2016 Federico Zivolo and contributors\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && typeof navigator !== 'undefined';\n\nvar timeoutDuration = function () {\n var longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];\n for (var i = 0; i < longerTimeoutBrowsers.length; i += 1) {\n if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {\n return 1;\n }\n }\n return 0;\n}();\n\nfunction microtaskDebounce(fn) {\n var called = false;\n return function () {\n if (called) {\n return;\n }\n called = true;\n window.Promise.resolve().then(function () {\n called = false;\n fn();\n });\n };\n}\n\nfunction taskDebounce(fn) {\n var scheduled = false;\n return function () {\n if (!scheduled) {\n scheduled = true;\n setTimeout(function () {\n scheduled = false;\n fn();\n }, timeoutDuration);\n }\n };\n}\n\nvar supportsMicroTasks = isBrowser && window.Promise;\n\n/**\n* Create a debounced version of a method, that's asynchronously deferred\n* but called in the minimum time possible.\n*\n* @method\n* @memberof Popper.Utils\n* @argument {Function} fn\n* @returns {Function}\n*/\nvar debounce = supportsMicroTasks ? microtaskDebounce : taskDebounce;\n\n/**\n * Check if the given variable is a function\n * @method\n * @memberof Popper.Utils\n * @argument {Any} functionToCheck - variable to check\n * @returns {Boolean} answer to: is a function?\n */\nfunction isFunction(functionToCheck) {\n var getType = {};\n return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]';\n}\n\n/**\n * Get CSS computed property of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Eement} element\n * @argument {String} property\n */\nfunction getStyleComputedProperty(element, property) {\n if (element.nodeType !== 1) {\n return [];\n }\n // NOTE: 1 DOM access here\n var window = element.ownerDocument.defaultView;\n var css = window.getComputedStyle(element, null);\n return property ? css[property] : css;\n}\n\n/**\n * Returns the parentNode or the host of the element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} parent\n */\nfunction getParentNode(element) {\n if (element.nodeName === 'HTML') {\n return element;\n }\n return element.parentNode || element.host;\n}\n\n/**\n * Returns the scrolling parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} scroll parent\n */\nfunction getScrollParent(element) {\n // Return body, `getScroll` will take care to get the correct `scrollTop` from it\n if (!element) {\n return document.body;\n }\n\n switch (element.nodeName) {\n case 'HTML':\n case 'BODY':\n return element.ownerDocument.body;\n case '#document':\n return element.body;\n }\n\n // Firefox want us to check `-x` and `-y` variations as well\n\n var _getStyleComputedProp = getStyleComputedProperty(element),\n overflow = _getStyleComputedProp.overflow,\n overflowX = _getStyleComputedProp.overflowX,\n overflowY = _getStyleComputedProp.overflowY;\n\n if (/(auto|scroll|overlay)/.test(overflow + overflowY + overflowX)) {\n return element;\n }\n\n return getScrollParent(getParentNode(element));\n}\n\n/**\n * Returns the reference node of the reference object, or the reference object itself.\n * @method\n * @memberof Popper.Utils\n * @param {Element|Object} reference - the reference element (the popper will be relative to this)\n * @returns {Element} parent\n */\nfunction getReferenceNode(reference) {\n return reference && reference.referenceNode ? reference.referenceNode : reference;\n}\n\nvar isIE11 = isBrowser && !!(window.MSInputMethodContext && document.documentMode);\nvar isIE10 = isBrowser && /MSIE 10/.test(navigator.userAgent);\n\n/**\n * Determines if the browser is Internet Explorer\n * @method\n * @memberof Popper.Utils\n * @param {Number} version to check\n * @returns {Boolean} isIE\n */\nfunction isIE(version) {\n if (version === 11) {\n return isIE11;\n }\n if (version === 10) {\n return isIE10;\n }\n return isIE11 || isIE10;\n}\n\n/**\n * Returns the offset parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} offset parent\n */\nfunction getOffsetParent(element) {\n if (!element) {\n return document.documentElement;\n }\n\n var noOffsetParent = isIE(10) ? document.body : null;\n\n // NOTE: 1 DOM access here\n var offsetParent = element.offsetParent || null;\n // Skip hidden elements which don't have an offsetParent\n while (offsetParent === noOffsetParent && element.nextElementSibling) {\n offsetParent = (element = element.nextElementSibling).offsetParent;\n }\n\n var nodeName = offsetParent && offsetParent.nodeName;\n\n if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {\n return element ? element.ownerDocument.documentElement : document.documentElement;\n }\n\n // .offsetParent will return the closest TH, TD or TABLE in case\n // no offsetParent is present, I hate this job...\n if (['TH', 'TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 && getStyleComputedProperty(offsetParent, 'position') === 'static') {\n return getOffsetParent(offsetParent);\n }\n\n return offsetParent;\n}\n\nfunction isOffsetContainer(element) {\n var nodeName = element.nodeName;\n\n if (nodeName === 'BODY') {\n return false;\n }\n return nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element;\n}\n\n/**\n * Finds the root node (document, shadowDOM root) of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} node\n * @returns {Element} root node\n */\nfunction getRoot(node) {\n if (node.parentNode !== null) {\n return getRoot(node.parentNode);\n }\n\n return node;\n}\n\n/**\n * Finds the offset parent common to the two provided nodes\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element1\n * @argument {Element} element2\n * @returns {Element} common offset parent\n */\nfunction findCommonOffsetParent(element1, element2) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {\n return document.documentElement;\n }\n\n // Here we make sure to give as \"start\" the element that comes first in the DOM\n var order = element1.compareDocumentPosition(element2) & Node.DOCUMENT_POSITION_FOLLOWING;\n var start = order ? element1 : element2;\n var end = order ? element2 : element1;\n\n // Get common ancestor container\n var range = document.createRange();\n range.setStart(start, 0);\n range.setEnd(end, 0);\n var commonAncestorContainer = range.commonAncestorContainer;\n\n // Both nodes are inside #document\n\n if (element1 !== commonAncestorContainer && element2 !== commonAncestorContainer || start.contains(end)) {\n if (isOffsetContainer(commonAncestorContainer)) {\n return commonAncestorContainer;\n }\n\n return getOffsetParent(commonAncestorContainer);\n }\n\n // one of the nodes is inside shadowDOM, find which one\n var element1root = getRoot(element1);\n if (element1root.host) {\n return findCommonOffsetParent(element1root.host, element2);\n } else {\n return findCommonOffsetParent(element1, getRoot(element2).host);\n }\n}\n\n/**\n * Gets the scroll value of the given element in the given side (top and left)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {String} side `top` or `left`\n * @returns {number} amount of scrolled pixels\n */\nfunction getScroll(element) {\n var side = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'top';\n\n var upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';\n var nodeName = element.nodeName;\n\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n var html = element.ownerDocument.documentElement;\n var scrollingElement = element.ownerDocument.scrollingElement || html;\n return scrollingElement[upperSide];\n }\n\n return element[upperSide];\n}\n\n/*\n * Sum or subtract the element scroll values (left and top) from a given rect object\n * @method\n * @memberof Popper.Utils\n * @param {Object} rect - Rect object you want to change\n * @param {HTMLElement} element - The element from the function reads the scroll values\n * @param {Boolean} subtract - set to true if you want to subtract the scroll values\n * @return {Object} rect - The modifier rect object\n */\nfunction includeScroll(rect, element) {\n var subtract = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var scrollTop = getScroll(element, 'top');\n var scrollLeft = getScroll(element, 'left');\n var modifier = subtract ? -1 : 1;\n rect.top += scrollTop * modifier;\n rect.bottom += scrollTop * modifier;\n rect.left += scrollLeft * modifier;\n rect.right += scrollLeft * modifier;\n return rect;\n}\n\n/*\n * Helper to detect borders of a given element\n * @method\n * @memberof Popper.Utils\n * @param {CSSStyleDeclaration} styles\n * Result of `getStyleComputedProperty` on the given element\n * @param {String} axis - `x` or `y`\n * @return {number} borders - The borders size of the given axis\n */\n\nfunction getBordersSize(styles, axis) {\n var sideA = axis === 'x' ? 'Left' : 'Top';\n var sideB = sideA === 'Left' ? 'Right' : 'Bottom';\n\n return parseFloat(styles['border' + sideA + 'Width']) + parseFloat(styles['border' + sideB + 'Width']);\n}\n\nfunction getSize(axis, body, html, computedStyle) {\n return Math.max(body['offset' + axis], body['scroll' + axis], html['client' + axis], html['offset' + axis], html['scroll' + axis], isIE(10) ? parseInt(html['offset' + axis]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Top' : 'Left')]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Bottom' : 'Right')]) : 0);\n}\n\nfunction getWindowSizes(document) {\n var body = document.body;\n var html = document.documentElement;\n var computedStyle = isIE(10) && getComputedStyle(html);\n\n return {\n height: getSize('Height', body, html, computedStyle),\n width: getSize('Width', body, html, computedStyle)\n };\n}\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\n\n\n\n\nvar defineProperty = function (obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n};\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\n/**\n * Given element offsets, generate an output similar to getBoundingClientRect\n * @method\n * @memberof Popper.Utils\n * @argument {Object} offsets\n * @returns {Object} ClientRect like output\n */\nfunction getClientRect(offsets) {\n return _extends({}, offsets, {\n right: offsets.left + offsets.width,\n bottom: offsets.top + offsets.height\n });\n}\n\n/**\n * Get bounding client rect of given element\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} element\n * @return {Object} client rect\n */\nfunction getBoundingClientRect(element) {\n var rect = {};\n\n // IE10 10 FIX: Please, don't ask, the element isn't\n // considered in DOM in some circumstances...\n // This isn't reproducible in IE10 compatibility mode of IE11\n try {\n if (isIE(10)) {\n rect = element.getBoundingClientRect();\n var scrollTop = getScroll(element, 'top');\n var scrollLeft = getScroll(element, 'left');\n rect.top += scrollTop;\n rect.left += scrollLeft;\n rect.bottom += scrollTop;\n rect.right += scrollLeft;\n } else {\n rect = element.getBoundingClientRect();\n }\n } catch (e) {}\n\n var result = {\n left: rect.left,\n top: rect.top,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top\n };\n\n // subtract scrollbar size from sizes\n var sizes = element.nodeName === 'HTML' ? getWindowSizes(element.ownerDocument) : {};\n var width = sizes.width || element.clientWidth || result.width;\n var height = sizes.height || element.clientHeight || result.height;\n\n var horizScrollbar = element.offsetWidth - width;\n var vertScrollbar = element.offsetHeight - height;\n\n // if an hypothetical scrollbar is detected, we must be sure it's not a `border`\n // we make this check conditional for performance reasons\n if (horizScrollbar || vertScrollbar) {\n var styles = getStyleComputedProperty(element);\n horizScrollbar -= getBordersSize(styles, 'x');\n vertScrollbar -= getBordersSize(styles, 'y');\n\n result.width -= horizScrollbar;\n result.height -= vertScrollbar;\n }\n\n return getClientRect(result);\n}\n\nfunction getOffsetRectRelativeToArbitraryNode(children, parent) {\n var fixedPosition = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var isIE10 = isIE(10);\n var isHTML = parent.nodeName === 'HTML';\n var childrenRect = getBoundingClientRect(children);\n var parentRect = getBoundingClientRect(parent);\n var scrollParent = getScrollParent(children);\n\n var styles = getStyleComputedProperty(parent);\n var borderTopWidth = parseFloat(styles.borderTopWidth);\n var borderLeftWidth = parseFloat(styles.borderLeftWidth);\n\n // In cases where the parent is fixed, we must ignore negative scroll in offset calc\n if (fixedPosition && isHTML) {\n parentRect.top = Math.max(parentRect.top, 0);\n parentRect.left = Math.max(parentRect.left, 0);\n }\n var offsets = getClientRect({\n top: childrenRect.top - parentRect.top - borderTopWidth,\n left: childrenRect.left - parentRect.left - borderLeftWidth,\n width: childrenRect.width,\n height: childrenRect.height\n });\n offsets.marginTop = 0;\n offsets.marginLeft = 0;\n\n // Subtract margins of documentElement in case it's being used as parent\n // we do this only on HTML because it's the only element that behaves\n // differently when margins are applied to it. The margins are included in\n // the box of the documentElement, in the other cases not.\n if (!isIE10 && isHTML) {\n var marginTop = parseFloat(styles.marginTop);\n var marginLeft = parseFloat(styles.marginLeft);\n\n offsets.top -= borderTopWidth - marginTop;\n offsets.bottom -= borderTopWidth - marginTop;\n offsets.left -= borderLeftWidth - marginLeft;\n offsets.right -= borderLeftWidth - marginLeft;\n\n // Attach marginTop and marginLeft because in some circumstances we may need them\n offsets.marginTop = marginTop;\n offsets.marginLeft = marginLeft;\n }\n\n if (isIE10 && !fixedPosition ? parent.contains(scrollParent) : parent === scrollParent && scrollParent.nodeName !== 'BODY') {\n offsets = includeScroll(offsets, parent);\n }\n\n return offsets;\n}\n\nfunction getViewportOffsetRectRelativeToArtbitraryNode(element) {\n var excludeScroll = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var html = element.ownerDocument.documentElement;\n var relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);\n var width = Math.max(html.clientWidth, window.innerWidth || 0);\n var height = Math.max(html.clientHeight, window.innerHeight || 0);\n\n var scrollTop = !excludeScroll ? getScroll(html) : 0;\n var scrollLeft = !excludeScroll ? getScroll(html, 'left') : 0;\n\n var offset = {\n top: scrollTop - relativeOffset.top + relativeOffset.marginTop,\n left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft,\n width: width,\n height: height\n };\n\n return getClientRect(offset);\n}\n\n/**\n * Check if the given element is fixed or is inside a fixed parent\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {Element} customContainer\n * @returns {Boolean} answer to \"isFixed?\"\n */\nfunction isFixed(element) {\n var nodeName = element.nodeName;\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n return false;\n }\n if (getStyleComputedProperty(element, 'position') === 'fixed') {\n return true;\n }\n var parentNode = getParentNode(element);\n if (!parentNode) {\n return false;\n }\n return isFixed(parentNode);\n}\n\n/**\n * Finds the first parent of an element that has a transformed property defined\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} first transformed parent or documentElement\n */\n\nfunction getFixedPositionOffsetParent(element) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element || !element.parentElement || isIE()) {\n return document.documentElement;\n }\n var el = element.parentElement;\n while (el && getStyleComputedProperty(el, 'transform') === 'none') {\n el = el.parentElement;\n }\n return el || document.documentElement;\n}\n\n/**\n * Computed the boundaries limits and return them\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} popper\n * @param {HTMLElement} reference\n * @param {number} padding\n * @param {HTMLElement} boundariesElement - Element used to define the boundaries\n * @param {Boolean} fixedPosition - Is in fixed position mode\n * @returns {Object} Coordinates of the boundaries\n */\nfunction getBoundaries(popper, reference, padding, boundariesElement) {\n var fixedPosition = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n\n // NOTE: 1 DOM access here\n\n var boundaries = { top: 0, left: 0 };\n var offsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));\n\n // Handle viewport case\n if (boundariesElement === 'viewport') {\n boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent, fixedPosition);\n } else {\n // Handle other cases based on DOM element used as boundaries\n var boundariesNode = void 0;\n if (boundariesElement === 'scrollParent') {\n boundariesNode = getScrollParent(getParentNode(reference));\n if (boundariesNode.nodeName === 'BODY') {\n boundariesNode = popper.ownerDocument.documentElement;\n }\n } else if (boundariesElement === 'window') {\n boundariesNode = popper.ownerDocument.documentElement;\n } else {\n boundariesNode = boundariesElement;\n }\n\n var offsets = getOffsetRectRelativeToArbitraryNode(boundariesNode, offsetParent, fixedPosition);\n\n // In case of HTML, we need a different computation\n if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {\n var _getWindowSizes = getWindowSizes(popper.ownerDocument),\n height = _getWindowSizes.height,\n width = _getWindowSizes.width;\n\n boundaries.top += offsets.top - offsets.marginTop;\n boundaries.bottom = height + offsets.top;\n boundaries.left += offsets.left - offsets.marginLeft;\n boundaries.right = width + offsets.left;\n } else {\n // for all the other DOM elements, this one is good\n boundaries = offsets;\n }\n }\n\n // Add paddings\n padding = padding || 0;\n var isPaddingNumber = typeof padding === 'number';\n boundaries.left += isPaddingNumber ? padding : padding.left || 0;\n boundaries.top += isPaddingNumber ? padding : padding.top || 0;\n boundaries.right -= isPaddingNumber ? padding : padding.right || 0;\n boundaries.bottom -= isPaddingNumber ? padding : padding.bottom || 0;\n\n return boundaries;\n}\n\nfunction getArea(_ref) {\n var width = _ref.width,\n height = _ref.height;\n\n return width * height;\n}\n\n/**\n * Utility used to transform the `auto` placement to the placement with more\n * available space.\n * @method\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction computeAutoPlacement(placement, refRect, popper, reference, boundariesElement) {\n var padding = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 0;\n\n if (placement.indexOf('auto') === -1) {\n return placement;\n }\n\n var boundaries = getBoundaries(popper, reference, padding, boundariesElement);\n\n var rects = {\n top: {\n width: boundaries.width,\n height: refRect.top - boundaries.top\n },\n right: {\n width: boundaries.right - refRect.right,\n height: boundaries.height\n },\n bottom: {\n width: boundaries.width,\n height: boundaries.bottom - refRect.bottom\n },\n left: {\n width: refRect.left - boundaries.left,\n height: boundaries.height\n }\n };\n\n var sortedAreas = Object.keys(rects).map(function (key) {\n return _extends({\n key: key\n }, rects[key], {\n area: getArea(rects[key])\n });\n }).sort(function (a, b) {\n return b.area - a.area;\n });\n\n var filteredAreas = sortedAreas.filter(function (_ref2) {\n var width = _ref2.width,\n height = _ref2.height;\n return width >= popper.clientWidth && height >= popper.clientHeight;\n });\n\n var computedPlacement = filteredAreas.length > 0 ? filteredAreas[0].key : sortedAreas[0].key;\n\n var variation = placement.split('-')[1];\n\n return computedPlacement + (variation ? '-' + variation : '');\n}\n\n/**\n * Get offsets to the reference element\n * @method\n * @memberof Popper.Utils\n * @param {Object} state\n * @param {Element} popper - the popper element\n * @param {Element} reference - the reference element (the popper will be relative to this)\n * @param {Element} fixedPosition - is in fixed position mode\n * @returns {Object} An object containing the offsets which will be applied to the popper\n */\nfunction getReferenceOffsets(state, popper, reference) {\n var fixedPosition = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n\n var commonOffsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));\n return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent, fixedPosition);\n}\n\n/**\n * Get the outer sizes of the given element (offset size + margins)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Object} object containing width and height properties\n */\nfunction getOuterSizes(element) {\n var window = element.ownerDocument.defaultView;\n var styles = window.getComputedStyle(element);\n var x = parseFloat(styles.marginTop || 0) + parseFloat(styles.marginBottom || 0);\n var y = parseFloat(styles.marginLeft || 0) + parseFloat(styles.marginRight || 0);\n var result = {\n width: element.offsetWidth + y,\n height: element.offsetHeight + x\n };\n return result;\n}\n\n/**\n * Get the opposite placement of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement\n * @returns {String} flipped placement\n */\nfunction getOppositePlacement(placement) {\n var hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}\n\n/**\n * Get offsets to the popper\n * @method\n * @memberof Popper.Utils\n * @param {Object} position - CSS position the Popper will get applied\n * @param {HTMLElement} popper - the popper element\n * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this)\n * @param {String} placement - one of the valid placement options\n * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper\n */\nfunction getPopperOffsets(popper, referenceOffsets, placement) {\n placement = placement.split('-')[0];\n\n // Get popper node sizes\n var popperRect = getOuterSizes(popper);\n\n // Add position, width and height to our offsets object\n var popperOffsets = {\n width: popperRect.width,\n height: popperRect.height\n };\n\n // depending by the popper placement we have to compute its offsets slightly differently\n var isHoriz = ['right', 'left'].indexOf(placement) !== -1;\n var mainSide = isHoriz ? 'top' : 'left';\n var secondarySide = isHoriz ? 'left' : 'top';\n var measurement = isHoriz ? 'height' : 'width';\n var secondaryMeasurement = !isHoriz ? 'height' : 'width';\n\n popperOffsets[mainSide] = referenceOffsets[mainSide] + referenceOffsets[measurement] / 2 - popperRect[measurement] / 2;\n if (placement === secondarySide) {\n popperOffsets[secondarySide] = referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];\n } else {\n popperOffsets[secondarySide] = referenceOffsets[getOppositePlacement(secondarySide)];\n }\n\n return popperOffsets;\n}\n\n/**\n * Mimics the `find` method of Array\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nfunction find(arr, check) {\n // use native find if supported\n if (Array.prototype.find) {\n return arr.find(check);\n }\n\n // use `filter` to obtain the same behavior of `find`\n return arr.filter(check)[0];\n}\n\n/**\n * Return the index of the matching object\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nfunction findIndex(arr, prop, value) {\n // use native findIndex if supported\n if (Array.prototype.findIndex) {\n return arr.findIndex(function (cur) {\n return cur[prop] === value;\n });\n }\n\n // use `find` + `indexOf` if `findIndex` isn't supported\n var match = find(arr, function (obj) {\n return obj[prop] === value;\n });\n return arr.indexOf(match);\n}\n\n/**\n * Loop trough the list of modifiers and run them in order,\n * each of them will then edit the data object.\n * @method\n * @memberof Popper.Utils\n * @param {dataObject} data\n * @param {Array} modifiers\n * @param {String} ends - Optional modifier name used as stopper\n * @returns {dataObject}\n */\nfunction runModifiers(modifiers, data, ends) {\n var modifiersToRun = ends === undefined ? modifiers : modifiers.slice(0, findIndex(modifiers, 'name', ends));\n\n modifiersToRun.forEach(function (modifier) {\n if (modifier['function']) {\n // eslint-disable-line dot-notation\n console.warn('`modifier.function` is deprecated, use `modifier.fn`!');\n }\n var fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation\n if (modifier.enabled && isFunction(fn)) {\n // Add properties to offsets to make them a complete clientRect object\n // we do this before each modifier to make sure the previous one doesn't\n // mess with these values\n data.offsets.popper = getClientRect(data.offsets.popper);\n data.offsets.reference = getClientRect(data.offsets.reference);\n\n data = fn(data, modifier);\n }\n });\n\n return data;\n}\n\n/**\n * Updates the position of the popper, computing the new offsets and applying\n * the new style.<br />\n * Prefer `scheduleUpdate` over `update` because of performance reasons.\n * @method\n * @memberof Popper\n */\nfunction update() {\n // if popper is destroyed, don't perform any further update\n if (this.state.isDestroyed) {\n return;\n }\n\n var data = {\n instance: this,\n styles: {},\n arrowStyles: {},\n attributes: {},\n flipped: false,\n offsets: {}\n };\n\n // compute reference element offsets\n data.offsets.reference = getReferenceOffsets(this.state, this.popper, this.reference, this.options.positionFixed);\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n data.placement = computeAutoPlacement(this.options.placement, data.offsets.reference, this.popper, this.reference, this.options.modifiers.flip.boundariesElement, this.options.modifiers.flip.padding);\n\n // store the computed placement inside `originalPlacement`\n data.originalPlacement = data.placement;\n\n data.positionFixed = this.options.positionFixed;\n\n // compute the popper offsets\n data.offsets.popper = getPopperOffsets(this.popper, data.offsets.reference, data.placement);\n\n data.offsets.popper.position = this.options.positionFixed ? 'fixed' : 'absolute';\n\n // run the modifiers\n data = runModifiers(this.modifiers, data);\n\n // the first `update` will call `onCreate` callback\n // the other ones will call `onUpdate` callback\n if (!this.state.isCreated) {\n this.state.isCreated = true;\n this.options.onCreate(data);\n } else {\n this.options.onUpdate(data);\n }\n}\n\n/**\n * Helper used to know if the given modifier is enabled.\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean}\n */\nfunction isModifierEnabled(modifiers, modifierName) {\n return modifiers.some(function (_ref) {\n var name = _ref.name,\n enabled = _ref.enabled;\n return enabled && name === modifierName;\n });\n}\n\n/**\n * Get the prefixed supported property name\n * @method\n * @memberof Popper.Utils\n * @argument {String} property (camelCase)\n * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix)\n */\nfunction getSupportedPropertyName(property) {\n var prefixes = [false, 'ms', 'Webkit', 'Moz', 'O'];\n var upperProp = property.charAt(0).toUpperCase() + property.slice(1);\n\n for (var i = 0; i < prefixes.length; i++) {\n var prefix = prefixes[i];\n var toCheck = prefix ? '' + prefix + upperProp : property;\n if (typeof document.body.style[toCheck] !== 'undefined') {\n return toCheck;\n }\n }\n return null;\n}\n\n/**\n * Destroys the popper.\n * @method\n * @memberof Popper\n */\nfunction destroy() {\n this.state.isDestroyed = true;\n\n // touch DOM only if `applyStyle` modifier is enabled\n if (isModifierEnabled(this.modifiers, 'applyStyle')) {\n this.popper.removeAttribute('x-placement');\n this.popper.style.position = '';\n this.popper.style.top = '';\n this.popper.style.left = '';\n this.popper.style.right = '';\n this.popper.style.bottom = '';\n this.popper.style.willChange = '';\n this.popper.style[getSupportedPropertyName('transform')] = '';\n }\n\n this.disableEventListeners();\n\n // remove the popper if user explicitly asked for the deletion on destroy\n // do not use `remove` because IE11 doesn't support it\n if (this.options.removeOnDestroy) {\n this.popper.parentNode.removeChild(this.popper);\n }\n return this;\n}\n\n/**\n * Get the window associated with the element\n * @argument {Element} element\n * @returns {Window}\n */\nfunction getWindow(element) {\n var ownerDocument = element.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView : window;\n}\n\nfunction attachToScrollParents(scrollParent, event, callback, scrollParents) {\n var isBody = scrollParent.nodeName === 'BODY';\n var target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;\n target.addEventListener(event, callback, { passive: true });\n\n if (!isBody) {\n attachToScrollParents(getScrollParent(target.parentNode), event, callback, scrollParents);\n }\n scrollParents.push(target);\n}\n\n/**\n * Setup needed event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nfunction setupEventListeners(reference, options, state, updateBound) {\n // Resize event listener on window\n state.updateBound = updateBound;\n getWindow(reference).addEventListener('resize', state.updateBound, { passive: true });\n\n // Scroll event listener on scroll parents\n var scrollElement = getScrollParent(reference);\n attachToScrollParents(scrollElement, 'scroll', state.updateBound, state.scrollParents);\n state.scrollElement = scrollElement;\n state.eventsEnabled = true;\n\n return state;\n}\n\n/**\n * It will add resize/scroll events and start recalculating\n * position of the popper element when they are triggered.\n * @method\n * @memberof Popper\n */\nfunction enableEventListeners() {\n if (!this.state.eventsEnabled) {\n this.state = setupEventListeners(this.reference, this.options, this.state, this.scheduleUpdate);\n }\n}\n\n/**\n * Remove event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nfunction removeEventListeners(reference, state) {\n // Remove resize event listener on window\n getWindow(reference).removeEventListener('resize', state.updateBound);\n\n // Remove scroll event listener on scroll parents\n state.scrollParents.forEach(function (target) {\n target.removeEventListener('scroll', state.updateBound);\n });\n\n // Reset state\n state.updateBound = null;\n state.scrollParents = [];\n state.scrollElement = null;\n state.eventsEnabled = false;\n return state;\n}\n\n/**\n * It will remove resize/scroll events and won't recalculate popper position\n * when they are triggered. It also won't trigger `onUpdate` callback anymore,\n * unless you call `update` method manually.\n * @method\n * @memberof Popper\n */\nfunction disableEventListeners() {\n if (this.state.eventsEnabled) {\n cancelAnimationFrame(this.scheduleUpdate);\n this.state = removeEventListeners(this.reference, this.state);\n }\n}\n\n/**\n * Tells if a given input is a number\n * @method\n * @memberof Popper.Utils\n * @param {*} input to check\n * @return {Boolean}\n */\nfunction isNumeric(n) {\n return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);\n}\n\n/**\n * Set the style to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the style to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nfunction setStyles(element, styles) {\n Object.keys(styles).forEach(function (prop) {\n var unit = '';\n // add unit if the value is numeric and is one of the following\n if (['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !== -1 && isNumeric(styles[prop])) {\n unit = 'px';\n }\n element.style[prop] = styles[prop] + unit;\n });\n}\n\n/**\n * Set the attributes to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the attributes to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nfunction setAttributes(element, attributes) {\n Object.keys(attributes).forEach(function (prop) {\n var value = attributes[prop];\n if (value !== false) {\n element.setAttribute(prop, attributes[prop]);\n } else {\n element.removeAttribute(prop);\n }\n });\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} data.styles - List of style properties - values to apply to popper element\n * @argument {Object} data.attributes - List of attribute properties - values to apply to popper element\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The same data object\n */\nfunction applyStyle(data) {\n // any property present in `data.styles` will be applied to the popper,\n // in this way we can make the 3rd party modifiers add custom styles to it\n // Be aware, modifiers could override the properties defined in the previous\n // lines of this modifier!\n setStyles(data.instance.popper, data.styles);\n\n // any property present in `data.attributes` will be applied to the popper,\n // they will be set as HTML attributes of the element\n setAttributes(data.instance.popper, data.attributes);\n\n // if arrowElement is defined and arrowStyles has some properties\n if (data.arrowElement && Object.keys(data.arrowStyles).length) {\n setStyles(data.arrowElement, data.arrowStyles);\n }\n\n return data;\n}\n\n/**\n * Set the x-placement attribute before everything else because it could be used\n * to add margins to the popper margins needs to be calculated to get the\n * correct popper offsets.\n * @method\n * @memberof Popper.modifiers\n * @param {HTMLElement} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as popper\n * @param {Object} options - Popper.js options\n */\nfunction applyStyleOnLoad(reference, popper, options, modifierOptions, state) {\n // compute reference element offsets\n var referenceOffsets = getReferenceOffsets(state, popper, reference, options.positionFixed);\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n var placement = computeAutoPlacement(options.placement, referenceOffsets, popper, reference, options.modifiers.flip.boundariesElement, options.modifiers.flip.padding);\n\n popper.setAttribute('x-placement', placement);\n\n // Apply `position` to popper before anything else because\n // without the position applied we can't guarantee correct computations\n setStyles(popper, { position: options.positionFixed ? 'fixed' : 'absolute' });\n\n return options;\n}\n\n/**\n * @function\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Boolean} shouldRound - If the offsets should be rounded at all\n * @returns {Object} The popper's position offsets rounded\n *\n * The tale of pixel-perfect positioning. It's still not 100% perfect, but as\n * good as it can be within reason.\n * Discussion here: https://github.com/FezVrasta/popper.js/pull/715\n *\n * Low DPI screens cause a popper to be blurry if not using full pixels (Safari\n * as well on High DPI screens).\n *\n * Firefox prefers no rounding for positioning and does not have blurriness on\n * high DPI screens.\n *\n * Only horizontal placement and left/right values need to be considered.\n */\nfunction getRoundedOffsets(data, shouldRound) {\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n var round = Math.round,\n floor = Math.floor;\n\n var noRound = function noRound(v) {\n return v;\n };\n\n var referenceWidth = round(reference.width);\n var popperWidth = round(popper.width);\n\n var isVertical = ['left', 'right'].indexOf(data.placement) !== -1;\n var isVariation = data.placement.indexOf('-') !== -1;\n var sameWidthParity = referenceWidth % 2 === popperWidth % 2;\n var bothOddWidth = referenceWidth % 2 === 1 && popperWidth % 2 === 1;\n\n var horizontalToInteger = !shouldRound ? noRound : isVertical || isVariation || sameWidthParity ? round : floor;\n var verticalToInteger = !shouldRound ? noRound : round;\n\n return {\n left: horizontalToInteger(bothOddWidth && !isVariation && shouldRound ? popper.left - 1 : popper.left),\n top: verticalToInteger(popper.top),\n bottom: verticalToInteger(popper.bottom),\n right: horizontalToInteger(popper.right)\n };\n}\n\nvar isFirefox = isBrowser && /Firefox/i.test(navigator.userAgent);\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction computeStyle(data, options) {\n var x = options.x,\n y = options.y;\n var popper = data.offsets.popper;\n\n // Remove this legacy support in Popper.js v2\n\n var legacyGpuAccelerationOption = find(data.instance.modifiers, function (modifier) {\n return modifier.name === 'applyStyle';\n }).gpuAcceleration;\n if (legacyGpuAccelerationOption !== undefined) {\n console.warn('WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!');\n }\n var gpuAcceleration = legacyGpuAccelerationOption !== undefined ? legacyGpuAccelerationOption : options.gpuAcceleration;\n\n var offsetParent = getOffsetParent(data.instance.popper);\n var offsetParentRect = getBoundingClientRect(offsetParent);\n\n // Styles\n var styles = {\n position: popper.position\n };\n\n var offsets = getRoundedOffsets(data, window.devicePixelRatio < 2 || !isFirefox);\n\n var sideA = x === 'bottom' ? 'top' : 'bottom';\n var sideB = y === 'right' ? 'left' : 'right';\n\n // if gpuAcceleration is set to `true` and transform is supported,\n // we use `translate3d` to apply the position to the popper we\n // automatically use the supported prefixed version if needed\n var prefixedProperty = getSupportedPropertyName('transform');\n\n // now, let's make a step back and look at this code closely (wtf?)\n // If the content of the popper grows once it's been positioned, it\n // may happen that the popper gets misplaced because of the new content\n // overflowing its reference element\n // To avoid this problem, we provide two options (x and y), which allow\n // the consumer to define the offset origin.\n // If we position a popper on top of a reference element, we can set\n // `x` to `top` to make the popper grow towards its top instead of\n // its bottom.\n var left = void 0,\n top = void 0;\n if (sideA === 'bottom') {\n // when offsetParent is <html> the positioning is relative to the bottom of the screen (excluding the scrollbar)\n // and not the bottom of the html element\n if (offsetParent.nodeName === 'HTML') {\n top = -offsetParent.clientHeight + offsets.bottom;\n } else {\n top = -offsetParentRect.height + offsets.bottom;\n }\n } else {\n top = offsets.top;\n }\n if (sideB === 'right') {\n if (offsetParent.nodeName === 'HTML') {\n left = -offsetParent.clientWidth + offsets.right;\n } else {\n left = -offsetParentRect.width + offsets.right;\n }\n } else {\n left = offsets.left;\n }\n if (gpuAcceleration && prefixedProperty) {\n styles[prefixedProperty] = 'translate3d(' + left + 'px, ' + top + 'px, 0)';\n styles[sideA] = 0;\n styles[sideB] = 0;\n styles.willChange = 'transform';\n } else {\n // othwerise, we use the standard `top`, `left`, `bottom` and `right` properties\n var invertTop = sideA === 'bottom' ? -1 : 1;\n var invertLeft = sideB === 'right' ? -1 : 1;\n styles[sideA] = top * invertTop;\n styles[sideB] = left * invertLeft;\n styles.willChange = sideA + ', ' + sideB;\n }\n\n // Attributes\n var attributes = {\n 'x-placement': data.placement\n };\n\n // Update `data` attributes, styles and arrowStyles\n data.attributes = _extends({}, attributes, data.attributes);\n data.styles = _extends({}, styles, data.styles);\n data.arrowStyles = _extends({}, data.offsets.arrow, data.arrowStyles);\n\n return data;\n}\n\n/**\n * Helper used to know if the given modifier depends from another one.<br />\n * It checks if the needed modifier is listed and enabled.\n * @method\n * @memberof Popper.Utils\n * @param {Array} modifiers - list of modifiers\n * @param {String} requestingName - name of requesting modifier\n * @param {String} requestedName - name of requested modifier\n * @returns {Boolean}\n */\nfunction isModifierRequired(modifiers, requestingName, requestedName) {\n var requesting = find(modifiers, function (_ref) {\n var name = _ref.name;\n return name === requestingName;\n });\n\n var isRequired = !!requesting && modifiers.some(function (modifier) {\n return modifier.name === requestedName && modifier.enabled && modifier.order < requesting.order;\n });\n\n if (!isRequired) {\n var _requesting = '`' + requestingName + '`';\n var requested = '`' + requestedName + '`';\n console.warn(requested + ' modifier is required by ' + _requesting + ' modifier in order to work, be sure to include it before ' + _requesting + '!');\n }\n return isRequired;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction arrow(data, options) {\n var _data$offsets$arrow;\n\n // arrow depends on keepTogether in order to work\n if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) {\n return data;\n }\n\n var arrowElement = options.element;\n\n // if arrowElement is a string, suppose it's a CSS selector\n if (typeof arrowElement === 'string') {\n arrowElement = data.instance.popper.querySelector(arrowElement);\n\n // if arrowElement is not found, don't run the modifier\n if (!arrowElement) {\n return data;\n }\n } else {\n // if the arrowElement isn't a query selector we must check that the\n // provided DOM node is child of its popper node\n if (!data.instance.popper.contains(arrowElement)) {\n console.warn('WARNING: `arrow.element` must be child of its popper element!');\n return data;\n }\n }\n\n var placement = data.placement.split('-')[0];\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var isVertical = ['left', 'right'].indexOf(placement) !== -1;\n\n var len = isVertical ? 'height' : 'width';\n var sideCapitalized = isVertical ? 'Top' : 'Left';\n var side = sideCapitalized.toLowerCase();\n var altSide = isVertical ? 'left' : 'top';\n var opSide = isVertical ? 'bottom' : 'right';\n var arrowElementSize = getOuterSizes(arrowElement)[len];\n\n //\n // extends keepTogether behavior making sure the popper and its\n // reference have enough pixels in conjunction\n //\n\n // top/left side\n if (reference[opSide] - arrowElementSize < popper[side]) {\n data.offsets.popper[side] -= popper[side] - (reference[opSide] - arrowElementSize);\n }\n // bottom/right side\n if (reference[side] + arrowElementSize > popper[opSide]) {\n data.offsets.popper[side] += reference[side] + arrowElementSize - popper[opSide];\n }\n data.offsets.popper = getClientRect(data.offsets.popper);\n\n // compute center of the popper\n var center = reference[side] + reference[len] / 2 - arrowElementSize / 2;\n\n // Compute the sideValue using the updated popper offsets\n // take popper margin in account because we don't have this info available\n var css = getStyleComputedProperty(data.instance.popper);\n var popperMarginSide = parseFloat(css['margin' + sideCapitalized]);\n var popperBorderSide = parseFloat(css['border' + sideCapitalized + 'Width']);\n var sideValue = center - data.offsets.popper[side] - popperMarginSide - popperBorderSide;\n\n // prevent arrowElement from being placed not contiguously to its popper\n sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0);\n\n data.arrowElement = arrowElement;\n data.offsets.arrow = (_data$offsets$arrow = {}, defineProperty(_data$offsets$arrow, side, Math.round(sideValue)), defineProperty(_data$offsets$arrow, altSide, ''), _data$offsets$arrow);\n\n return data;\n}\n\n/**\n * Get the opposite placement variation of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement variation\n * @returns {String} flipped placement variation\n */\nfunction getOppositeVariation(variation) {\n if (variation === 'end') {\n return 'start';\n } else if (variation === 'start') {\n return 'end';\n }\n return variation;\n}\n\n/**\n * List of accepted placements to use as values of the `placement` option.<br />\n * Valid placements are:\n * - `auto`\n * - `top`\n * - `right`\n * - `bottom`\n * - `left`\n *\n * Each placement can have a variation from this list:\n * - `-start`\n * - `-end`\n *\n * Variations are interpreted easily if you think of them as the left to right\n * written languages. Horizontally (`top` and `bottom`), `start` is left and `end`\n * is right.<br />\n * Vertically (`left` and `right`), `start` is top and `end` is bottom.\n *\n * Some valid examples are:\n * - `top-end` (on top of reference, right aligned)\n * - `right-start` (on right of reference, top aligned)\n * - `bottom` (on bottom, centered)\n * - `auto-end` (on the side with more space available, alignment depends by placement)\n *\n * @static\n * @type {Array}\n * @enum {String}\n * @readonly\n * @method placements\n * @memberof Popper\n */\nvar placements = ['auto-start', 'auto', 'auto-end', 'top-start', 'top', 'top-end', 'right-start', 'right', 'right-end', 'bottom-end', 'bottom', 'bottom-start', 'left-end', 'left', 'left-start'];\n\n// Get rid of `auto` `auto-start` and `auto-end`\nvar validPlacements = placements.slice(3);\n\n/**\n * Given an initial placement, returns all the subsequent placements\n * clockwise (or counter-clockwise).\n *\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement - A valid placement (it accepts variations)\n * @argument {Boolean} counter - Set to true to walk the placements counterclockwise\n * @returns {Array} placements including their variations\n */\nfunction clockwise(placement) {\n var counter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var index = validPlacements.indexOf(placement);\n var arr = validPlacements.slice(index + 1).concat(validPlacements.slice(0, index));\n return counter ? arr.reverse() : arr;\n}\n\nvar BEHAVIORS = {\n FLIP: 'flip',\n CLOCKWISE: 'clockwise',\n COUNTERCLOCKWISE: 'counterclockwise'\n};\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction flip(data, options) {\n // if `inner` modifier is enabled, we can't use the `flip` modifier\n if (isModifierEnabled(data.instance.modifiers, 'inner')) {\n return data;\n }\n\n if (data.flipped && data.placement === data.originalPlacement) {\n // seems like flip is trying to loop, probably there's not enough space on any of the flippable sides\n return data;\n }\n\n var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, options.boundariesElement, data.positionFixed);\n\n var placement = data.placement.split('-')[0];\n var placementOpposite = getOppositePlacement(placement);\n var variation = data.placement.split('-')[1] || '';\n\n var flipOrder = [];\n\n switch (options.behavior) {\n case BEHAVIORS.FLIP:\n flipOrder = [placement, placementOpposite];\n break;\n case BEHAVIORS.CLOCKWISE:\n flipOrder = clockwise(placement);\n break;\n case BEHAVIORS.COUNTERCLOCKWISE:\n flipOrder = clockwise(placement, true);\n break;\n default:\n flipOrder = options.behavior;\n }\n\n flipOrder.forEach(function (step, index) {\n if (placement !== step || flipOrder.length === index + 1) {\n return data;\n }\n\n placement = data.placement.split('-')[0];\n placementOpposite = getOppositePlacement(placement);\n\n var popperOffsets = data.offsets.popper;\n var refOffsets = data.offsets.reference;\n\n // using floor because the reference offsets may contain decimals we are not going to consider here\n var floor = Math.floor;\n var overlapsRef = placement === 'left' && floor(popperOffsets.right) > floor(refOffsets.left) || placement === 'right' && floor(popperOffsets.left) < floor(refOffsets.right) || placement === 'top' && floor(popperOffsets.bottom) > floor(refOffsets.top) || placement === 'bottom' && floor(popperOffsets.top) < floor(refOffsets.bottom);\n\n var overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left);\n var overflowsRight = floor(popperOffsets.right) > floor(boundaries.right);\n var overflowsTop = floor(popperOffsets.top) < floor(boundaries.top);\n var overflowsBottom = floor(popperOffsets.bottom) > floor(boundaries.bottom);\n\n var overflowsBoundaries = placement === 'left' && overflowsLeft || placement === 'right' && overflowsRight || placement === 'top' && overflowsTop || placement === 'bottom' && overflowsBottom;\n\n // flip the variation if required\n var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n\n // flips variation if reference element overflows boundaries\n var flippedVariationByRef = !!options.flipVariations && (isVertical && variation === 'start' && overflowsLeft || isVertical && variation === 'end' && overflowsRight || !isVertical && variation === 'start' && overflowsTop || !isVertical && variation === 'end' && overflowsBottom);\n\n // flips variation if popper content overflows boundaries\n var flippedVariationByContent = !!options.flipVariationsByContent && (isVertical && variation === 'start' && overflowsRight || isVertical && variation === 'end' && overflowsLeft || !isVertical && variation === 'start' && overflowsBottom || !isVertical && variation === 'end' && overflowsTop);\n\n var flippedVariation = flippedVariationByRef || flippedVariationByContent;\n\n if (overlapsRef || overflowsBoundaries || flippedVariation) {\n // this boolean to detect any flip loop\n data.flipped = true;\n\n if (overlapsRef || overflowsBoundaries) {\n placement = flipOrder[index + 1];\n }\n\n if (flippedVariation) {\n variation = getOppositeVariation(variation);\n }\n\n data.placement = placement + (variation ? '-' + variation : '');\n\n // this object contains `position`, we want to preserve it along with\n // any additional property we may add in the future\n data.offsets.popper = _extends({}, data.offsets.popper, getPopperOffsets(data.instance.popper, data.offsets.reference, data.placement));\n\n data = runModifiers(data.instance.modifiers, data, 'flip');\n }\n });\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction keepTogether(data) {\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var placement = data.placement.split('-')[0];\n var floor = Math.floor;\n var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n var side = isVertical ? 'right' : 'bottom';\n var opSide = isVertical ? 'left' : 'top';\n var measurement = isVertical ? 'width' : 'height';\n\n if (popper[side] < floor(reference[opSide])) {\n data.offsets.popper[opSide] = floor(reference[opSide]) - popper[measurement];\n }\n if (popper[opSide] > floor(reference[side])) {\n data.offsets.popper[opSide] = floor(reference[side]);\n }\n\n return data;\n}\n\n/**\n * Converts a string containing value + unit into a px value number\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} str - Value + unit string\n * @argument {String} measurement - `height` or `width`\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @returns {Number|String}\n * Value in pixels, or original string if no values were extracted\n */\nfunction toValue(str, measurement, popperOffsets, referenceOffsets) {\n // separate value from unit\n var split = str.match(/((?:\\-|\\+)?\\d*\\.?\\d*)(.*)/);\n var value = +split[1];\n var unit = split[2];\n\n // If it's not a number it's an operator, I guess\n if (!value) {\n return str;\n }\n\n if (unit.indexOf('%') === 0) {\n var element = void 0;\n switch (unit) {\n case '%p':\n element = popperOffsets;\n break;\n case '%':\n case '%r':\n default:\n element = referenceOffsets;\n }\n\n var rect = getClientRect(element);\n return rect[measurement] / 100 * value;\n } else if (unit === 'vh' || unit === 'vw') {\n // if is a vh or vw, we calculate the size based on the viewport\n var size = void 0;\n if (unit === 'vh') {\n size = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);\n } else {\n size = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\n }\n return size / 100 * value;\n } else {\n // if is an explicit pixel unit, we get rid of the unit and keep the value\n // if is an implicit unit, it's px, and we return just the value\n return value;\n }\n}\n\n/**\n * Parse an `offset` string to extrapolate `x` and `y` numeric offsets.\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} offset\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @argument {String} basePlacement\n * @returns {Array} a two cells array with x and y offsets in numbers\n */\nfunction parseOffset(offset, popperOffsets, referenceOffsets, basePlacement) {\n var offsets = [0, 0];\n\n // Use height if placement is left or right and index is 0 otherwise use width\n // in this way the first offset will use an axis and the second one\n // will use the other one\n var useHeight = ['right', 'left'].indexOf(basePlacement) !== -1;\n\n // Split the offset string to obtain a list of values and operands\n // The regex addresses values with the plus or minus sign in front (+10, -20, etc)\n var fragments = offset.split(/(\\+|\\-)/).map(function (frag) {\n return frag.trim();\n });\n\n // Detect if the offset string contains a pair of values or a single one\n // they could be separated by comma or space\n var divider = fragments.indexOf(find(fragments, function (frag) {\n return frag.search(/,|\\s/) !== -1;\n }));\n\n if (fragments[divider] && fragments[divider].indexOf(',') === -1) {\n console.warn('Offsets separated by white space(s) are deprecated, use a comma (,) instead.');\n }\n\n // If divider is found, we divide the list of values and operands to divide\n // them by ofset X and Y.\n var splitRegex = /\\s*,\\s*|\\s+/;\n var ops = divider !== -1 ? [fragments.slice(0, divider).concat([fragments[divider].split(splitRegex)[0]]), [fragments[divider].split(splitRegex)[1]].concat(fragments.slice(divider + 1))] : [fragments];\n\n // Convert the values with units to absolute pixels to allow our computations\n ops = ops.map(function (op, index) {\n // Most of the units rely on the orientation of the popper\n var measurement = (index === 1 ? !useHeight : useHeight) ? 'height' : 'width';\n var mergeWithPrevious = false;\n return op\n // This aggregates any `+` or `-` sign that aren't considered operators\n // e.g.: 10 + +5 => [10, +, +5]\n .reduce(function (a, b) {\n if (a[a.length - 1] === '' && ['+', '-'].indexOf(b) !== -1) {\n a[a.length - 1] = b;\n mergeWithPrevious = true;\n return a;\n } else if (mergeWithPrevious) {\n a[a.length - 1] += b;\n mergeWithPrevious = false;\n return a;\n } else {\n return a.concat(b);\n }\n }, [])\n // Here we convert the string values into number values (in px)\n .map(function (str) {\n return toValue(str, measurement, popperOffsets, referenceOffsets);\n });\n });\n\n // Loop trough the offsets arrays and execute the operations\n ops.forEach(function (op, index) {\n op.forEach(function (frag, index2) {\n if (isNumeric(frag)) {\n offsets[index] += frag * (op[index2 - 1] === '-' ? -1 : 1);\n }\n });\n });\n return offsets;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @argument {Number|String} options.offset=0\n * The offset value as described in the modifier description\n * @returns {Object} The data object, properly modified\n */\nfunction offset(data, _ref) {\n var offset = _ref.offset;\n var placement = data.placement,\n _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var basePlacement = placement.split('-')[0];\n\n var offsets = void 0;\n if (isNumeric(+offset)) {\n offsets = [+offset, 0];\n } else {\n offsets = parseOffset(offset, popper, reference, basePlacement);\n }\n\n if (basePlacement === 'left') {\n popper.top += offsets[0];\n popper.left -= offsets[1];\n } else if (basePlacement === 'right') {\n popper.top += offsets[0];\n popper.left += offsets[1];\n } else if (basePlacement === 'top') {\n popper.left += offsets[0];\n popper.top -= offsets[1];\n } else if (basePlacement === 'bottom') {\n popper.left += offsets[0];\n popper.top += offsets[1];\n }\n\n data.popper = popper;\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction preventOverflow(data, options) {\n var boundariesElement = options.boundariesElement || getOffsetParent(data.instance.popper);\n\n // If offsetParent is the reference element, we really want to\n // go one step up and use the next offsetParent as reference to\n // avoid to make this modifier completely useless and look like broken\n if (data.instance.reference === boundariesElement) {\n boundariesElement = getOffsetParent(boundariesElement);\n }\n\n // NOTE: DOM access here\n // resets the popper's position so that the document size can be calculated excluding\n // the size of the popper element itself\n var transformProp = getSupportedPropertyName('transform');\n var popperStyles = data.instance.popper.style; // assignment to help minification\n var top = popperStyles.top,\n left = popperStyles.left,\n transform = popperStyles[transformProp];\n\n popperStyles.top = '';\n popperStyles.left = '';\n popperStyles[transformProp] = '';\n\n var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, boundariesElement, data.positionFixed);\n\n // NOTE: DOM access here\n // restores the original style properties after the offsets have been computed\n popperStyles.top = top;\n popperStyles.left = left;\n popperStyles[transformProp] = transform;\n\n options.boundaries = boundaries;\n\n var order = options.priority;\n var popper = data.offsets.popper;\n\n var check = {\n primary: function primary(placement) {\n var value = popper[placement];\n if (popper[placement] < boundaries[placement] && !options.escapeWithReference) {\n value = Math.max(popper[placement], boundaries[placement]);\n }\n return defineProperty({}, placement, value);\n },\n secondary: function secondary(placement) {\n var mainSide = placement === 'right' ? 'left' : 'top';\n var value = popper[mainSide];\n if (popper[placement] > boundaries[placement] && !options.escapeWithReference) {\n value = Math.min(popper[mainSide], boundaries[placement] - (placement === 'right' ? popper.width : popper.height));\n }\n return defineProperty({}, mainSide, value);\n }\n };\n\n order.forEach(function (placement) {\n var side = ['left', 'top'].indexOf(placement) !== -1 ? 'primary' : 'secondary';\n popper = _extends({}, popper, check[side](placement));\n });\n\n data.offsets.popper = popper;\n\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction shift(data) {\n var placement = data.placement;\n var basePlacement = placement.split('-')[0];\n var shiftvariation = placement.split('-')[1];\n\n // if shift shiftvariation is specified, run the modifier\n if (shiftvariation) {\n var _data$offsets = data.offsets,\n reference = _data$offsets.reference,\n popper = _data$offsets.popper;\n\n var isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;\n var side = isVertical ? 'left' : 'top';\n var measurement = isVertical ? 'width' : 'height';\n\n var shiftOffsets = {\n start: defineProperty({}, side, reference[side]),\n end: defineProperty({}, side, reference[side] + reference[measurement] - popper[measurement])\n };\n\n data.offsets.popper = _extends({}, popper, shiftOffsets[shiftvariation]);\n }\n\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction hide(data) {\n if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) {\n return data;\n }\n\n var refRect = data.offsets.reference;\n var bound = find(data.instance.modifiers, function (modifier) {\n return modifier.name === 'preventOverflow';\n }).boundaries;\n\n if (refRect.bottom < bound.top || refRect.left > bound.right || refRect.top > bound.bottom || refRect.right < bound.left) {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === true) {\n return data;\n }\n\n data.hide = true;\n data.attributes['x-out-of-boundaries'] = '';\n } else {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === false) {\n return data;\n }\n\n data.hide = false;\n data.attributes['x-out-of-boundaries'] = false;\n }\n\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction inner(data) {\n var placement = data.placement;\n var basePlacement = placement.split('-')[0];\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1;\n\n var subtractLength = ['top', 'left'].indexOf(basePlacement) === -1;\n\n popper[isHoriz ? 'left' : 'top'] = reference[basePlacement] - (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0);\n\n data.placement = getOppositePlacement(placement);\n data.offsets.popper = getClientRect(popper);\n\n return data;\n}\n\n/**\n * Modifier function, each modifier can have a function of this type assigned\n * to its `fn` property.<br />\n * These functions will be called on each update, this means that you must\n * make sure they are performant enough to avoid performance bottlenecks.\n *\n * @function ModifierFn\n * @argument {dataObject} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {dataObject} The data object, properly modified\n */\n\n/**\n * Modifiers are plugins used to alter the behavior of your poppers.<br />\n * Popper.js uses a set of 9 modifiers to provide all the basic functionalities\n * needed by the library.\n *\n * Usually you don't want to override the `order`, `fn` and `onLoad` props.\n * All the other properties are configurations that could be tweaked.\n * @namespace modifiers\n */\nvar modifiers = {\n /**\n * Modifier used to shift the popper on the start or end of its reference\n * element.<br />\n * It will read the variation of the `placement` property.<br />\n * It can be one either `-end` or `-start`.\n * @memberof modifiers\n * @inner\n */\n shift: {\n /** @prop {number} order=100 - Index used to define the order of execution */\n order: 100,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: shift\n },\n\n /**\n * The `offset` modifier can shift your popper on both its axis.\n *\n * It accepts the following units:\n * - `px` or unit-less, interpreted as pixels\n * - `%` or `%r`, percentage relative to the length of the reference element\n * - `%p`, percentage relative to the length of the popper element\n * - `vw`, CSS viewport width unit\n * - `vh`, CSS viewport height unit\n *\n * For length is intended the main axis relative to the placement of the popper.<br />\n * This means that if the placement is `top` or `bottom`, the length will be the\n * `width`. In case of `left` or `right`, it will be the `height`.\n *\n * You can provide a single value (as `Number` or `String`), or a pair of values\n * as `String` divided by a comma or one (or more) white spaces.<br />\n * The latter is a deprecated method because it leads to confusion and will be\n * removed in v2.<br />\n * Additionally, it accepts additions and subtractions between different units.\n * Note that multiplications and divisions aren't supported.\n *\n * Valid examples are:\n * ```\n * 10\n * '10%'\n * '10, 10'\n * '10%, 10'\n * '10 + 10%'\n * '10 - 5vh + 3%'\n * '-10px + 5vh, 5px - 6%'\n * ```\n * > **NB**: If you desire to apply offsets to your poppers in a way that may make them overlap\n * > with their reference element, unfortunately, you will have to disable the `flip` modifier.\n * > You can read more on this at this [issue](https://github.com/FezVrasta/popper.js/issues/373).\n *\n * @memberof modifiers\n * @inner\n */\n offset: {\n /** @prop {number} order=200 - Index used to define the order of execution */\n order: 200,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: offset,\n /** @prop {Number|String} offset=0\n * The offset value as described in the modifier description\n */\n offset: 0\n },\n\n /**\n * Modifier used to prevent the popper from being positioned outside the boundary.\n *\n * A scenario exists where the reference itself is not within the boundaries.<br />\n * We can say it has \"escaped the boundaries\" — or just \"escaped\".<br />\n * In this case we need to decide whether the popper should either:\n *\n * - detach from the reference and remain \"trapped\" in the boundaries, or\n * - if it should ignore the boundary and \"escape with its reference\"\n *\n * When `escapeWithReference` is set to`true` and reference is completely\n * outside its boundaries, the popper will overflow (or completely leave)\n * the boundaries in order to remain attached to the edge of the reference.\n *\n * @memberof modifiers\n * @inner\n */\n preventOverflow: {\n /** @prop {number} order=300 - Index used to define the order of execution */\n order: 300,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: preventOverflow,\n /**\n * @prop {Array} [priority=['left','right','top','bottom']]\n * Popper will try to prevent overflow following these priorities by default,\n * then, it could overflow on the left and on top of the `boundariesElement`\n */\n priority: ['left', 'right', 'top', 'bottom'],\n /**\n * @prop {number} padding=5\n * Amount of pixel used to define a minimum distance between the boundaries\n * and the popper. This makes sure the popper always has a little padding\n * between the edges of its container\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='scrollParent'\n * Boundaries used by the modifier. Can be `scrollParent`, `window`,\n * `viewport` or any DOM element.\n */\n boundariesElement: 'scrollParent'\n },\n\n /**\n * Modifier used to make sure the reference and its popper stay near each other\n * without leaving any gap between the two. Especially useful when the arrow is\n * enabled and you want to ensure that it points to its reference element.\n * It cares only about the first axis. You can still have poppers with margin\n * between the popper and its reference element.\n * @memberof modifiers\n * @inner\n */\n keepTogether: {\n /** @prop {number} order=400 - Index used to define the order of execution */\n order: 400,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: keepTogether\n },\n\n /**\n * This modifier is used to move the `arrowElement` of the popper to make\n * sure it is positioned between the reference element and its popper element.\n * It will read the outer size of the `arrowElement` node to detect how many\n * pixels of conjunction are needed.\n *\n * It has no effect if no `arrowElement` is provided.\n * @memberof modifiers\n * @inner\n */\n arrow: {\n /** @prop {number} order=500 - Index used to define the order of execution */\n order: 500,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: arrow,\n /** @prop {String|HTMLElement} element='[x-arrow]' - Selector or node used as arrow */\n element: '[x-arrow]'\n },\n\n /**\n * Modifier used to flip the popper's placement when it starts to overlap its\n * reference element.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n *\n * **NOTE:** this modifier will interrupt the current update cycle and will\n * restart it if it detects the need to flip the placement.\n * @memberof modifiers\n * @inner\n */\n flip: {\n /** @prop {number} order=600 - Index used to define the order of execution */\n order: 600,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: flip,\n /**\n * @prop {String|Array} behavior='flip'\n * The behavior used to change the popper's placement. It can be one of\n * `flip`, `clockwise`, `counterclockwise` or an array with a list of valid\n * placements (with optional variations)\n */\n behavior: 'flip',\n /**\n * @prop {number} padding=5\n * The popper will flip if it hits the edges of the `boundariesElement`\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='viewport'\n * The element which will define the boundaries of the popper position.\n * The popper will never be placed outside of the defined boundaries\n * (except if `keepTogether` is enabled)\n */\n boundariesElement: 'viewport',\n /**\n * @prop {Boolean} flipVariations=false\n * The popper will switch placement variation between `-start` and `-end` when\n * the reference element overlaps its boundaries.\n *\n * The original placement should have a set variation.\n */\n flipVariations: false,\n /**\n * @prop {Boolean} flipVariationsByContent=false\n * The popper will switch placement variation between `-start` and `-end` when\n * the popper element overlaps its reference boundaries.\n *\n * The original placement should have a set variation.\n */\n flipVariationsByContent: false\n },\n\n /**\n * Modifier used to make the popper flow toward the inner of the reference element.\n * By default, when this modifier is disabled, the popper will be placed outside\n * the reference element.\n * @memberof modifiers\n * @inner\n */\n inner: {\n /** @prop {number} order=700 - Index used to define the order of execution */\n order: 700,\n /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */\n enabled: false,\n /** @prop {ModifierFn} */\n fn: inner\n },\n\n /**\n * Modifier used to hide the popper when its reference element is outside of the\n * popper boundaries. It will set a `x-out-of-boundaries` attribute which can\n * be used to hide with a CSS selector the popper when its reference is\n * out of boundaries.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n * @memberof modifiers\n * @inner\n */\n hide: {\n /** @prop {number} order=800 - Index used to define the order of execution */\n order: 800,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: hide\n },\n\n /**\n * Computes the style that will be applied to the popper element to gets\n * properly positioned.\n *\n * Note that this modifier will not touch the DOM, it just prepares the styles\n * so that `applyStyle` modifier can apply it. This separation is useful\n * in case you need to replace `applyStyle` with a custom implementation.\n *\n * This modifier has `850` as `order` value to maintain backward compatibility\n * with previous versions of Popper.js. Expect the modifiers ordering method\n * to change in future major versions of the library.\n *\n * @memberof modifiers\n * @inner\n */\n computeStyle: {\n /** @prop {number} order=850 - Index used to define the order of execution */\n order: 850,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: computeStyle,\n /**\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3D transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties\n */\n gpuAcceleration: true,\n /**\n * @prop {string} [x='bottom']\n * Where to anchor the X axis (`bottom` or `top`). AKA X offset origin.\n * Change this if your popper should grow in a direction different from `bottom`\n */\n x: 'bottom',\n /**\n * @prop {string} [x='left']\n * Where to anchor the Y axis (`left` or `right`). AKA Y offset origin.\n * Change this if your popper should grow in a direction different from `right`\n */\n y: 'right'\n },\n\n /**\n * Applies the computed styles to the popper element.\n *\n * All the DOM manipulations are limited to this modifier. This is useful in case\n * you want to integrate Popper.js inside a framework or view library and you\n * want to delegate all the DOM manipulations to it.\n *\n * Note that if you disable this modifier, you must make sure the popper element\n * has its position set to `absolute` before Popper.js can do its work!\n *\n * Just disable this modifier and define your own to achieve the desired effect.\n *\n * @memberof modifiers\n * @inner\n */\n applyStyle: {\n /** @prop {number} order=900 - Index used to define the order of execution */\n order: 900,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: applyStyle,\n /** @prop {Function} */\n onLoad: applyStyleOnLoad,\n /**\n * @deprecated since version 1.10.0, the property moved to `computeStyle` modifier\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3D transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties\n */\n gpuAcceleration: undefined\n }\n};\n\n/**\n * The `dataObject` is an object containing all the information used by Popper.js.\n * This object is passed to modifiers and to the `onCreate` and `onUpdate` callbacks.\n * @name dataObject\n * @property {Object} data.instance The Popper.js instance\n * @property {String} data.placement Placement applied to popper\n * @property {String} data.originalPlacement Placement originally defined on init\n * @property {Boolean} data.flipped True if popper has been flipped by flip modifier\n * @property {Boolean} data.hide True if the reference element is out of boundaries, useful to know when to hide the popper\n * @property {HTMLElement} data.arrowElement Node used as arrow by arrow modifier\n * @property {Object} data.styles Any CSS property defined here will be applied to the popper. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.arrowStyles Any CSS property defined here will be applied to the popper arrow. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.boundaries Offsets of the popper boundaries\n * @property {Object} data.offsets The measurements of popper, reference and arrow elements\n * @property {Object} data.offsets.popper `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.reference `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.arrow] `top` and `left` offsets, only one of them will be different from 0\n */\n\n/**\n * Default options provided to Popper.js constructor.<br />\n * These can be overridden using the `options` argument of Popper.js.<br />\n * To override an option, simply pass an object with the same\n * structure of the `options` object, as the 3rd argument. For example:\n * ```\n * new Popper(ref, pop, {\n * modifiers: {\n * preventOverflow: { enabled: false }\n * }\n * })\n * ```\n * @type {Object}\n * @static\n * @memberof Popper\n */\nvar Defaults = {\n /**\n * Popper's placement.\n * @prop {Popper.placements} placement='bottom'\n */\n placement: 'bottom',\n\n /**\n * Set this to true if you want popper to position it self in 'fixed' mode\n * @prop {Boolean} positionFixed=false\n */\n positionFixed: false,\n\n /**\n * Whether events (resize, scroll) are initially enabled.\n * @prop {Boolean} eventsEnabled=true\n */\n eventsEnabled: true,\n\n /**\n * Set to true if you want to automatically remove the popper when\n * you call the `destroy` method.\n * @prop {Boolean} removeOnDestroy=false\n */\n removeOnDestroy: false,\n\n /**\n * Callback called when the popper is created.<br />\n * By default, it is set to no-op.<br />\n * Access Popper.js instance with `data.instance`.\n * @prop {onCreate}\n */\n onCreate: function onCreate() {},\n\n /**\n * Callback called when the popper is updated. This callback is not called\n * on the initialization/creation of the popper, but only on subsequent\n * updates.<br />\n * By default, it is set to no-op.<br />\n * Access Popper.js instance with `data.instance`.\n * @prop {onUpdate}\n */\n onUpdate: function onUpdate() {},\n\n /**\n * List of modifiers used to modify the offsets before they are applied to the popper.\n * They provide most of the functionalities of Popper.js.\n * @prop {modifiers}\n */\n modifiers: modifiers\n};\n\n/**\n * @callback onCreate\n * @param {dataObject} data\n */\n\n/**\n * @callback onUpdate\n * @param {dataObject} data\n */\n\n// Utils\n// Methods\nvar Popper = function () {\n /**\n * Creates a new Popper.js instance.\n * @class Popper\n * @param {Element|referenceObject} reference - The reference element used to position the popper\n * @param {Element} popper - The HTML / XML element used as the popper\n * @param {Object} options - Your custom options to override the ones defined in [Defaults](#defaults)\n * @return {Object} instance - The generated Popper.js instance\n */\n function Popper(reference, popper) {\n var _this = this;\n\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n classCallCheck(this, Popper);\n\n this.scheduleUpdate = function () {\n return requestAnimationFrame(_this.update);\n };\n\n // make update() debounced, so that it only runs at most once-per-tick\n this.update = debounce(this.update.bind(this));\n\n // with {} we create a new object with the options inside it\n this.options = _extends({}, Popper.Defaults, options);\n\n // init state\n this.state = {\n isDestroyed: false,\n isCreated: false,\n scrollParents: []\n };\n\n // get reference and popper elements (allow jQuery wrappers)\n this.reference = reference && reference.jquery ? reference[0] : reference;\n this.popper = popper && popper.jquery ? popper[0] : popper;\n\n // Deep merge modifiers options\n this.options.modifiers = {};\n Object.keys(_extends({}, Popper.Defaults.modifiers, options.modifiers)).forEach(function (name) {\n _this.options.modifiers[name] = _extends({}, Popper.Defaults.modifiers[name] || {}, options.modifiers ? options.modifiers[name] : {});\n });\n\n // Refactoring modifiers' list (Object => Array)\n this.modifiers = Object.keys(this.options.modifiers).map(function (name) {\n return _extends({\n name: name\n }, _this.options.modifiers[name]);\n })\n // sort the modifiers by order\n .sort(function (a, b) {\n return a.order - b.order;\n });\n\n // modifiers have the ability to execute arbitrary code when Popper.js get inited\n // such code is executed in the same order of its modifier\n // they could add new properties to their options configuration\n // BE AWARE: don't add options to `options.modifiers.name` but to `modifierOptions`!\n this.modifiers.forEach(function (modifierOptions) {\n if (modifierOptions.enabled && isFunction(modifierOptions.onLoad)) {\n modifierOptions.onLoad(_this.reference, _this.popper, _this.options, modifierOptions, _this.state);\n }\n });\n\n // fire the first update to position the popper in the right place\n this.update();\n\n var eventsEnabled = this.options.eventsEnabled;\n if (eventsEnabled) {\n // setup event listeners, they will take care of update the position in specific situations\n this.enableEventListeners();\n }\n\n this.state.eventsEnabled = eventsEnabled;\n }\n\n // We can't use class properties because they don't get listed in the\n // class prototype and break stuff like Sinon stubs\n\n\n createClass(Popper, [{\n key: 'update',\n value: function update$$1() {\n return update.call(this);\n }\n }, {\n key: 'destroy',\n value: function destroy$$1() {\n return destroy.call(this);\n }\n }, {\n key: 'enableEventListeners',\n value: function enableEventListeners$$1() {\n return enableEventListeners.call(this);\n }\n }, {\n key: 'disableEventListeners',\n value: function disableEventListeners$$1() {\n return disableEventListeners.call(this);\n }\n\n /**\n * Schedules an update. It will run on the next UI update available.\n * @method scheduleUpdate\n * @memberof Popper\n */\n\n\n /**\n * Collection of utilities useful when writing custom modifiers.\n * Starting from version 1.7, this method is available only if you\n * include `popper-utils.js` before `popper.js`.\n *\n * **DEPRECATION**: This way to access PopperUtils is deprecated\n * and will be removed in v2! Use the PopperUtils module directly instead.\n * Due to the high instability of the methods contained in Utils, we can't\n * guarantee them to follow semver. Use them at your own risk!\n * @static\n * @private\n * @type {Object}\n * @deprecated since version 1.8\n * @member Utils\n * @memberof Popper\n */\n\n }]);\n return Popper;\n}();\n\n/**\n * The `referenceObject` is an object that provides an interface compatible with Popper.js\n * and lets you use it as replacement of a real DOM node.<br />\n * You can use this method to position a popper relatively to a set of coordinates\n * in case you don't have a DOM node to use as reference.\n *\n * ```\n * new Popper(referenceObject, popperNode);\n * ```\n *\n * NB: This feature isn't supported in Internet Explorer 10.\n * @name referenceObject\n * @property {Function} data.getBoundingClientRect\n * A function that returns a set of coordinates compatible with the native `getBoundingClientRect` method.\n * @property {number} data.clientWidth\n * An ES6 getter that will return the width of the virtual reference element.\n * @property {number} data.clientHeight\n * An ES6 getter that will return the height of the virtual reference element.\n */\n\n\nPopper.Utils = (typeof window !== 'undefined' ? window : global).PopperUtils;\nPopper.placements = placements;\nPopper.Defaults = Defaults;\n\nexport default Popper;\n//# sourceMappingURL=popper.js.map\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactFastCompare = require('react-fast-compare');\n\nvar _reactFastCompare2 = _interopRequireDefault(_reactFastCompare);\n\nvar _createEventHandlers = require('./create-event-handlers');\n\nvar _createEventHandlers2 = _interopRequireDefault(_createEventHandlers);\n\nvar _getCurriedOnLoad = require('./helpers/get-curried-on-load');\n\nvar _getCurriedOnLoad2 = _interopRequireDefault(_getCurriedOnLoad);\n\nvar _getPlayerOpts = require('./helpers/get-player-opts');\n\nvar _getPlayerOpts2 = _interopRequireDefault(_getPlayerOpts);\n\nvar _initialize2 = require('./helpers/initialize');\n\nvar _initialize3 = _interopRequireDefault(_initialize2);\n\nvar _installPlayerScript = require('./helpers/install-player-script');\n\nvar _installPlayerScript2 = _interopRequireDefault(_installPlayerScript);\n\nvar _removeJwPlayerInstance = require('./helpers/remove-jw-player-instance');\n\nvar _removeJwPlayerInstance2 = _interopRequireDefault(_removeJwPlayerInstance);\n\nvar _setJwPlayerDefaults = require('./helpers/set-jw-player-defaults');\n\nvar _setJwPlayerDefaults2 = _interopRequireDefault(_setJwPlayerDefaults);\n\nvar _defaultProps = require('./default-props');\n\nvar _defaultProps2 = _interopRequireDefault(_defaultProps);\n\nvar _playerPropTypes = require('./player-prop-types');\n\nvar _playerPropTypes2 = _interopRequireDefault(_playerPropTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar displayName = 'ReactJWPlayer';\n\nvar ReactJWPlayer = function (_Component) {\n _inherits(ReactJWPlayer, _Component);\n\n function ReactJWPlayer(props) {\n _classCallCheck(this, ReactJWPlayer);\n\n var _this = _possibleConstructorReturn(this, (ReactJWPlayer.__proto__ || Object.getPrototypeOf(ReactJWPlayer)).call(this, props));\n\n _this.state = {\n adHasPlayed: false,\n hasPlayed: false,\n hasFired: {}\n };\n _this.eventHandlers = (0, _createEventHandlers2.default)(_this);\n _this.uniqueScriptId = 'jw-player-script';\n\n if (props.useMultiplePlayerScripts) {\n _this.uniqueScriptId += '-' + props.playerId;\n }\n\n _this.videoRef = null;\n _this._initialize = _this._initialize.bind(_this);\n _this._setVideoRef = _this._setVideoRef.bind(_this);\n return _this;\n }\n\n _createClass(ReactJWPlayer, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n var isJWPlayerScriptLoaded = !!window.jwplayer;\n var existingScript = document.getElementById(this.uniqueScriptId);\n var isUsingMultiplePlayerScripts = this.props.useMultiplePlayerScripts;\n\n if (!isUsingMultiplePlayerScripts && isJWPlayerScriptLoaded) {\n this._initialize();\n return;\n }\n\n if (isUsingMultiplePlayerScripts && existingScript) {\n this._initialize();\n return;\n }\n\n if (!existingScript) {\n (0, _installPlayerScript2.default)({\n context: document,\n onLoadCallback: this._initialize,\n scriptSrc: this.props.playerScript,\n uniqueScriptId: this.uniqueScriptId\n });\n } else {\n existingScript.onload = (0, _getCurriedOnLoad2.default)(existingScript, this._initialize);\n }\n }\n }, {\n key: 'shouldComponentUpdate',\n value: function shouldComponentUpdate(nextProps) {\n var hasFileChanged = this.props.file !== nextProps.file;\n var hasPlaylistChanged = !(0, _reactFastCompare2.default)(this.props.playlist, nextProps.playlist);\n\n return hasFileChanged || hasPlaylistChanged;\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate() {\n if (window.jwplayer && window.jwplayer(this.videoRef)) {\n this._initialize();\n }\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n (0, _removeJwPlayerInstance2.default)(this.videoRef, window);\n }\n }, {\n key: '_initialize',\n value: function _initialize() {\n var _props = this.props,\n playerId = _props.playerId,\n useMultiplePlayerScripts = _props.useMultiplePlayerScripts;\n\n\n if (useMultiplePlayerScripts) {\n (0, _setJwPlayerDefaults2.default)({ context: window, playerId: playerId });\n }\n\n var component = this;\n var player = window.jwplayer(this.videoRef);\n if (!player) {\n // this player ref may have been destroyed already\n return;\n }\n\n var playerOpts = (0, _getPlayerOpts2.default)(this.props);\n\n (0, _initialize3.default)({ component: component, player: player, playerOpts: playerOpts });\n }\n }, {\n key: '_setVideoRef',\n value: function _setVideoRef(element) {\n this.videoRef = element;\n }\n }, {\n key: 'render',\n value: function render() {\n return _react2.default.createElement(\n 'div',\n { className: this.props.className },\n _react2.default.createElement('div', { id: this.props.playerId, ref: this._setVideoRef })\n );\n }\n }]);\n\n return ReactJWPlayer;\n}(_react.Component);\n\nReactJWPlayer.defaultProps = _defaultProps2.default;\nReactJWPlayer.displayName = displayName;\nReactJWPlayer.propTypes = _playerPropTypes2.default;\nexports.default = ReactJWPlayer;","import axios from 'axios'; // ??kb\nimport 'lazysizes'; // 100kb\n// JS Cookie\nconst Cookies = require('./libraries/js.cookie'); // ??kb\nrequire('./translation');\n\n/**\n * We'll load jQuery and the Bootstrap jQuery plugin which provides support\n * for JavaScript based Bootstrap features such as modals and tabs. This\n * code may be modified to fit the specific needs of your application.\n */\n\ntry {\n window.Popper = require('popper.js').default; // 200kb\n window.$ = window.jQuery = require('jquery'); // in vendor\n\n require('bootstrap'); // 400kb\n} catch (e) {}\n\n/**\n * We'll load the axios HTTP library which allows us to easily issue requests\n * to our Laravel back-end. This library automatically handles sending the\n * CSRF token as a header based on the value of the \"XSRF\" token cookie.\n */\n\nwindow.axios = axios;\n\nwindow.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';\n\nwindow.axios.defaults.withCredentials = true;\n\n// Global cancel token\nconst CancelToken = window.axios.CancelToken;\nwindow.axiosSource = CancelToken.source();\n\n// Cancel axios calls with cancel token on from submit\nconst forms = document.getElementsByTagName('form');\nfor (var i = 0; i < forms.length; i++) { \n forms[i].addEventListener(\"submit\", function(e) {\n window.axiosSource.cancel('Operation canceled by the user.');\n });\n}\n\n/**\n * Echo exposes an expressive API for subscribing to channels and listening\n * for events that are broadcast by Laravel. Echo and event broadcasting\n * allows your team to easily build robust real-time web applications.\n */\n\n// import Echo from 'laravel-echo';\n\n// window.Pusher = require('pusher-js');\n\n// window.Echo = new Echo({\n// broadcaster: 'pusher',\n// key: process.env.MIX_PUSHER_APP_KEY,\n// cluster: process.env.MIX_PUSHER_APP_CLUSTER,\n// forceTLS: true\n// });\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nfunction onVideoLoad(event) {\n this.setState({\n hasFired: {}\n });\n this.props.onVideoLoad(event);\n}\n\nexports.default = onVideoLoad;","/**\n * First we will load all of this project's JavaScript dependencies which\n * includes React and other helpers. It's a great starting point while\n * building robust, powerful web applications using React + Laravel.\n */\n\nrequire('./bootstrap');\n\n/**\n * Next, we will create a fresh React component instance and attach it to\n * the page. Then, you may begin adding components to this application\n * or customize the JavaScript scaffolding to fit your unique needs.\n */\n\nrequire('./poll');\nrequire('./components/Pages/HomePage');\n\nrequire('./other');\nrequire('./menu');\n\n// commented out as it does not seem like we are using the js part\n// Video.js\n// require('video.js'); // 5500kb","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nfunction onAdPlay(event) {\n if (!this.state.adHasPlayed) {\n this.props.onAdPlay(event);\n this.setState({\n adHasPlayed: true\n });\n } else {\n this.props.onAdResume(event);\n }\n}\n\nexports.default = onAdPlay;","import React from 'react';\n\nclass Image extends React.Component {\n constructor(props) {\n super(props);\n\n // Defaults\n this.width = this.props.width || 307.5;\n this.height = this.props.height || 200;\n\n // Set state\n this.state = {\n focalX: 0.5,\n focalY: 0.5,\n focalZ: 1,\n sizes: {\n small: {\n media: \"(max-width: 575px)\",\n width: 190,\n height: Math.round((190 / this.width) * this.height),\n },\n normal: {\n media: \"(min-width: 576px)\",\n width: this.width,\n height: this.height,\n },\n },\n formats: ['webp', 'jpg'],\n };\n }\n\n componentDidMount() {\n // Get values from attributes\n this.setState(() => ({\n focalX: this.props.focalX || this.state.focalX,\n focalY: this.props.focalY || this.state.focalY,\n focalZ: this.props.focalZ || this.state.focalZ,\n formats: this.props.formats || this.state.formats,\n }));\n }\n\n render() {\n const pattern = new RegExp('^https?:', 'i');\n const isFullUrl = pattern.test(this.props.image);\n\n const image = isFullUrl ? this.props.image : window.imgixUrl + this.props.image;\n const stateData = this.state;\n\n const imgixPattern = new RegExp(`^${window.imgixUrl.replace(/[-[/\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&')}.*`, 'i');\n const isImgix = imgixPattern.test(image);\n\n if (!isImgix) {\n const paddingBottom = Math.round(this.props.width < this.props.height ? (this.props.width * 100) / this.props.height : (this.props.height * 100) / this.props.width);\n\n return (\n <div className={this.props.className + ` legacy-wrapper`} style={{ paddingBottom: paddingBottom + '%', width: this.props.width }}>\n <div className=\"background-blur\" style={{ backgroundImage: `url('${image}')` }}></div>\n <img data-pin-nopin=\"true\" src={image} alt={this.props.alt} />\n </div>\n )\n }\n\n const imageUrl = new URL(image);\n imageUrl.searchParams.set('fit', 'crop');\n imageUrl.searchParams.set('crop', 'focalpoint');\n imageUrl.searchParams.set('fp-x', stateData.focalX);\n imageUrl.searchParams.set('fp-y', stateData.focalY);\n imageUrl.searchParams.set('fp-z', stateData.focalZ);\n\n const imageMain = new URL(imageUrl);\n imageMain.searchParams.set('w', this.width);\n imageMain.searchParams.set('h', this.height);\n\n const imageLazy = new URL(imageMain);\n imageLazy.searchParams.set('px', '28');\n imageLazy.searchParams.set('q', '0');\n imageLazy.searchParams.set('colorquant', '16');\n\n // Prevent numbers to be last fix\n imageMain.searchParams.set('auto', 'format');\n imageLazy.searchParams.set('auto', 'format');\n\n return (\n <React.Fragment>\n <picture className={this.props.className} data-pin-nopin=\"true\">\n {Object.keys(stateData.sizes).map(function (sizeName, index) {\n return <React.Fragment key={index}>\n {stateData.formats.map(function (format, index) {\n const src1x = new URL(image);\n src1x.searchParams.set('fit', 'crop');\n src1x.searchParams.set('crop', 'focalpoint');\n src1x.searchParams.set('fp-x', stateData.focalX);\n src1x.searchParams.set('fp-y', stateData.focalY);\n src1x.searchParams.set('fp-z', stateData.focalZ);\n src1x.searchParams.set('w', stateData.sizes[sizeName].width);\n src1x.searchParams.set('h', stateData.sizes[sizeName].height);\n src1x.searchParams.set('fm', format);\n\n const src2x = new URL(src1x);\n src2x.searchParams.set('dpr', '2');\n\n return <source key={index} media={stateData.sizes[sizeName].media}\n type={`image/${format}`}\n data-srcset={\n `${src1x} 1x, ` +\n `${src2x} 2x`} />\n })}\n </React.Fragment>\n })}\n <img src={`${imageLazy}`}\n data-src={`${imageMain}`}\n alt={this.props.alt}\n width={this.width}\n height={this.height}\n data-pin-nopin=\"true\"\n className=\"lazyload\" />\n </picture>\n </React.Fragment>\n )\n }\n}\n\nexport default Image;","import React from 'react';\n\nconst SmallPostDummy = (props) => (\n <div className={`col-6 col-lg-${props.columnSize}`}>\n <div className=\"post post--dummy d-flex flex-row justify-content-center\">\n <div className=\"smallpost\">\n <span className=\"smallpost_image\"></span>\n <span className=\"smallpost_byline\"></span>\n <span className=\"smallpost_byline\"></span>\n </div>\n </div>\n </div>\n);\n\nexport default SmallPostDummy;","import React from 'react';\nimport DOMPurify from 'dompurify';\nimport Image from '../PostComponents/Image';\nimport SmallPostDummy from '../Dummies/SmallPostDummy';\nimport Ad from '../PostComponents/Ad';\n\nclass SmallPost extends React.Component {\n constructor(props) {\n super(props);\n\n this.post = this.props.data;\n this.rowCount = this.props.rowCount ?? 4;\n this.postsBeforeAd = this.rowCount * 2;\n\n }\n\n render() {\n const columnSize = 12 / this.rowCount;\n\n if (typeof this.post == 'undefined') {\n return <SmallPostDummy columnSize={columnSize} />\n }\n\n const shortContent = DOMPurify.sanitize(this.post.excerpt);\n\n\n return (\n <React.Fragment>\n <div className={`col-6 col-lg-${columnSize} ${this.props.className}`} {...this.props.attributes}>\n <div className=\"post post--small d-flex flex-column\">\n {this.post.featured_image && \n <a href={this.post.url} className=\"d-block\">\n <Image className=\"post_image\" image={this.post.featured_image.url} alt={this.post.featured_image.title || this.post.title} width={307.5} height={200} />\n </a>\n }\n <a href={this.post.url} className=\"d-block post_title\">\n <h2>{this.post.title}</h2>\n </a>\n <div className=\"post_head\">\n {this.post.categories[0] && (\n <div className=\"post_category\">\n <a href={`${this.post.categories[0].url}`}>{this.post.categories[0].name}</a>\n </div>\n )\n }\n <span className=\"post_date\">{this.post.date_text}</span>\n </div>\n <div className=\"post_content\" dangerouslySetInnerHTML={{__html: shortContent}}>\n </div>\n </div>\n </div>\n {(this.props.infinityIndex % this.postsBeforeAd == 0 \n && this.props.infinityIndex <= 8 * this.postsBeforeAd ) &&\n <div className=\"col-12\">\n <Ad nbr={this.props.infinityIndex / this.postsBeforeAd} type=\"small\" fitAdsToContent={this.props.fitAdsToContent} timestamp={this.props.timestamp}/>\n </div>\n }\n </React.Fragment>\n )\n }\n}\n\nexport default SmallPost;","\"use strict\";\n\n/*!\n * JavaScript Cookie v2.2.0\n * https://github.com/js-cookie/js-cookie\n *\n * Copyright 2006, 2015 Klaus Hartl & Fagner Brack\n * Released under the MIT license\n */\n;\n\nwindow.Cookie = {};\n(function (factory) {\n var registeredInModuleLoader = false;\n\n if (typeof define === 'function' && define.amd) {\n define(factory);\n registeredInModuleLoader = true;\n }\n\n if (typeof exports === 'object') {\n module.exports = factory();\n registeredInModuleLoader = true;\n }\n\n if (!registeredInModuleLoader) {\n var OldCookies = window.Cookies;\n var api = window.Cookies = factory();\n\n api.noConflict = function () {\n window.Cookies = OldCookies;\n return api;\n };\n }\n})(function () {\n function extend() {\n var i = 0;\n var result = {};\n\n for (; i < arguments.length; i++) {\n var attributes = arguments[i];\n\n for (var key in attributes) {\n result[key] = attributes[key];\n }\n }\n\n return result;\n }\n\n function init(converter) {\n function api(key, value, attributes) {\n var result;\n\n if (typeof document === 'undefined') {\n return;\n } // Write\n\n\n if (arguments.length > 1) {\n attributes = extend({\n path: '/'\n }, api.defaults, attributes);\n\n if (typeof attributes.expires === 'number') {\n var expires = new Date();\n expires.setMilliseconds(expires.getMilliseconds() + attributes.expires * 864e+5);\n attributes.expires = expires;\n } // We're using \"expires\" because \"max-age\" is not supported by IE\n\n\n attributes.expires = attributes.expires ? attributes.expires.toUTCString() : '';\n\n try {\n result = JSON.stringify(value);\n\n if (/^[\\{\\[]/.test(result)) {\n value = result;\n }\n } catch (e) {}\n\n if (!converter.write) {\n value = encodeURIComponent(String(value)).replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g, decodeURIComponent);\n } else {\n value = converter.write(value, key);\n }\n\n key = encodeURIComponent(String(key));\n key = key.replace(/%(23|24|26|2B|5E|60|7C)/g, decodeURIComponent);\n key = key.replace(/[\\(\\)]/g, escape);\n var stringifiedAttributes = '';\n\n for (var attributeName in attributes) {\n if (!attributes[attributeName]) {\n continue;\n }\n\n stringifiedAttributes += '; ' + attributeName;\n\n if (attributes[attributeName] === true) {\n continue;\n }\n\n stringifiedAttributes += '=' + attributes[attributeName];\n }\n\n return document.cookie = key + '=' + value + stringifiedAttributes;\n } // Read\n\n\n if (!key) {\n result = {};\n } // To prevent the for loop in the first place assign an empty array\n // in case there are no cookies at all. Also prevents odd result when\n // calling \"get()\"\n\n\n var cookies = document.cookie ? document.cookie.split('; ') : [];\n var rdecode = /(%[0-9A-Z]{2})+/g;\n var i = 0;\n\n for (; i < cookies.length; i++) {\n var parts = cookies[i].split('=');\n var cookie = parts.slice(1).join('=');\n\n if (!this.json && cookie.charAt(0) === '\"') {\n cookie = cookie.slice(1, -1);\n }\n\n try {\n var name = parts[0].replace(rdecode, decodeURIComponent);\n cookie = converter.read ? converter.read(cookie, name) : converter(cookie, name) || cookie.replace(rdecode, decodeURIComponent);\n\n if (this.json) {\n try {\n cookie = JSON.parse(cookie);\n } catch (e) {}\n }\n\n if (key === name) {\n result = cookie;\n break;\n }\n\n if (!key) {\n result[name] = cookie;\n }\n } catch (e) {}\n }\n\n return result;\n }\n\n window.Cookie.set = api;\n\n window.Cookie.get = function (key) {\n return api.call(api, key);\n };\n\n window.Cookie.getJSON = function () {\n return api.apply({\n json: true\n }, [].slice.call(arguments));\n };\n\n window.Cookie.defaults = {};\n\n window.Cookie.remove = function (key, attributes) {\n api(key, '', extend(attributes, {\n expires: -1\n }));\n };\n\n window.Cookie.withConverter = init;\n return api;\n }\n\n return init(function () {});\n});","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nfunction onFullScreen(event) {\n if (event.fullscreen) {\n this.props.onEnterFullScreen(event);\n } else {\n this.props.onExitFullScreen(event);\n }\n}\n\nexports.default = onFullScreen;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nfunction onMute(event) {\n if (event.mute) {\n this.props.onMute(event);\n } else {\n this.props.onUnmute(event);\n }\n}\n\nexports.default = onMute;","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport InfiniteScroll from '../InfiniteScroll';\nimport Post from '../Models/Post';\n\nclass HomePage extends React.Component {\n constructor(props) {\n super(props);\n\n this.state = {\n pagetype: '',\n endpoint: 'post/',\n urlStructure: '%domain%%url%',\n };\n }\n\n componentDidMount() {\n this.getInitialState();\n }\n\n getInitialState() {\n this.setState(() => ({ \n pagetype: 'home',\n }));\n }\n\n getSeoDataArray(post) {\n let seoDataArray = [];\n\n if (!post) {\n return seoDataArray;\n }\n \n const seoData = post.meta_data.seoData;\n const socialData = post.meta_data.socialData;\n\n seoDataArray['og:title'] = socialData.social_title ?? '';\n seoDataArray['og:description'] = socialData.social_description ?? '';\n seoDataArray['og:url'] = socialData.social_url ?? '';\n seoDataArray['og:image'] = socialData.social_image ?? '';\n\n seoDataArray['twitter:title'] = socialData.social_title ?? '';\n seoDataArray['twitter:description'] = socialData.social_description ?? '';\n seoDataArray['twitter:image'] = socialData.social_image ?? '';\n\n seoDataArray['article:published_time'] = post.created_at ?? '';\n seoDataArray['article:modified_time'] = post.modified ?? '';\n seoDataArray['article:author'] = seoData.seo_author_name ?? '';\n seoDataArray['article:section'] = seoData.seo_category_name ?? '';\n seoDataArray['article:tag'] = seoData.seo_tags ?? '';\n seoDataArray['profile:first_name'] = seoData.seo_author_first_name;\n seoDataArray['profile:last_name'] = seoData.seo_author_last_name ?? '';\n\n seoDataArray['aller_ga'] = seoData.aller_ga ?? {};\n\n return seoDataArray;\n }\n\n getEndpoint(post){\n if (post) {\n if (post[0].previous == false) {\n return false;\n }\n return `/api/${this.endpoint}${post[0].previous['id']}/`;\n }\n return `/api/${this.endpoint}${window.post.id}/`;\n }\n\n render() {\n return (\n <InfiniteScroll \n pageId={1} \n urlStructure={this.state.urlStructure} \n perPage={1} \n endpoint={this.state.endpoint} \n pagetype={this.state.pagetype}\n getSeoDataArray={this.getSeoDataArray}\n getEndpoint={this.getEndpoint}\n >\n <Post />\n </InfiniteScroll>\n )\n } \n\n}\nlet homeElement = document.getElementById('home')\nif (homeElement) {\n ReactDOM.render(<HomePage/>, homeElement);\n}","import React from 'react';\nclass Ad extends React.Component {\n constructor(props) {\n super(props);\n this.adSlots = [\n '',\n 'responsive_1',\n 'responsive_2',\n 'responsive_3',\n 'responsive_4',\n 'responsive_5',\n 'responsive_6',\n 'responsive_7',\n 'responsive_8'\n ];\n }\n\n render() {\n return (\n <div className={`display-ad display_${this.props.nbr}`}>\n <div className={`${this.props.fitAdsToContent ? 'adunit-wrapper-fit_to_content ' : ''}adunit-wrapper d-flex flex-column align-items-center full-width-breakout`}>\n <div id={`${this.adSlots[this.props.nbr]}-${this.props.timestamp}`}\n className=\"adunit\"\n count={this.props.nbr}\n data-aller-ad-placement={`responsive_${this.props.nbr}`}\n data-aduniqueid={this.props.timestamp}>\n </div>\n </div>\n </div>\n );\n }\n}\nexport default Ad;\n","/**\n * Translate the given key.\n */\nwindow.trans = function(key, replaces) {\n let locale = document.documentElement.getAttribute('lang');\n let translation = key;\n\n // Check if present in DB\n if (window.translations && window.translations[translation]) {\n translation = window.translations[translation];\n translation = transReplaces(translation, replaces);\n return translation;\n }\n\n // If not, then check if english and skip if it is\n if (locale == 'en') {\n translation = transReplaces(translation, replaces);\n return translation;\n }\n\n // Or try to fetch the translation from the language files\n try {\n const translations = require(`@lang/${locale}.json`);\n translation = translations[key] ? translations[key] : key;\n\n translation = transReplaces(translation, replaces);\n } catch (error) {\n if (process.env.NODE_ENV !== 'production') {\n console.error(error);\n }\n }\n\n return translation;\n}\n\n// Simple choice variant (single/plural only, no advanced count etc.)\nwindow.trans_choice = function(key, count = 1, replaces) {\n let translation = trans(key, replaces);\n const [single, plural] = translation.split('|');\n\n return count > 1 ? plural : single;\n}\n\n// Replace keys in translation\nfunction transReplaces(text, replaces) {\n for (var key in replaces) {\n text = text.replace(':' + key, replaces[key])\n }\n\n return text;\n}","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","// Set locale\nwindow.locale = document.documentElement.getAttribute('lang');\n\n// Function for getting bootstrap current view size\nwindow.viewSize = function() {\n let envs = ['xs', 'sm', 'md', 'lg', 'xl'];\n\n let el = document.createElement('div');\n document.body.appendChild(el);\n\n let curEnv = envs.shift();\n\n for (let env of envs.reverse()) {\n el.classList.add(`d-${env}-none`);\n\n if (window.getComputedStyle(el).display === 'none') {\n curEnv = env;\n break;\n }\n }\n\n document.body.removeChild(el);\n return curEnv;\n}","import React, { Children } from 'react';\nimport ReactDOM from 'react-dom';\nimport TermFilter from './Partials/TermFilter';\n\nclass InfiniteScroll extends React.Component {\n constructor(props) {\n super(props);\n\n this.state = {\n childType: Children.only(this.props.children).type.name.toLowerCase(),\n children: [],\n lastIndex: 0,\n page: this.props.pageId ?? 1,\n initialPage: this.props.pageId ? parseInt(this.props.pageId) : 1,\n total: 0,\n perpage: this.props.perPage ?? 1,\n offset: 500,\n progress: false,\n completed: false,\n skeleton: true,\n id: this.props.id || 0,\n date: this.props.date || false,\n stateObjs: [],\n metaObjs: [],\n domain: `https://${window.location.host}`,\n pathname: `${window.location.pathname}`,\n categorySlug: window.location.pathname.split('/')[1] ?? false,\n tagSlug: window.location.pathname.split('/')[2] ?? false,\n childrenDivided: [],\n tags: [],\n categories: [],\n orderDirection: 'DESC',\n year: this.props.year || false,\n month: this.props.month || false,\n hideAds: false,\n cursor: this.props.cursor || null\n };\n\n this.topAdDiv = document.querySelector('#top_ad-');\n this.usedTimestamps = [];\n this.keyToTimestamp = [];\n this.infiniteScroll = this.infiniteScroll.bind(this);\n this.handleScroll = this.handleScroll.bind(this);\n this.onOrderingChange = this.onOrderingChange.bind(this);\n }\n\n generateUrl(data) {\n let returner = this.props.urlStructure;\n returner = returner.replace('%domain%', this.state.domain);\n returner = returner.replace('%id%', data.current_page);\n returner = returner.replace('%url%', Array.isArray(data.data) ? (data.data.length > 0 ? data.data[0].url : '') : '');\n returner = returner.replace('%pathname%', this.state.pathname);\n returner = returner.replace('%categorySlug%', this.state.categorySlug);\n returner = returner.replace('%tagSlug%', this.state.tagSlug);\n returner = returner.replace('%year%', this.state.year);\n returner = returner.replace('%month%', this.state.month);\n return returner;\n }\n\n updateBrowserHistory(index) {\n // Do not update URL in cursor-mode.\n if (this.state.cursor == null) {\n index += this.state.initialPage;\n history.pushState(this.state.stateObjs[index], '' , this.state.stateObjs[index].current_url);\n }\n }\n\n updateMetaData(index, metaData) {\n \n if (index != null) {\n index += this.state.initialPage;\n metaData = this.state.metaObjs[index];\n }\n\n if (metaData && metaData['aller_ga'] && Object.keys(metaData['aller_ga']).length !== 0) {\n const aller_ga = metaData['aller_ga'];\n window.cts = window.cts || {};\n window.cts.metadata = {\n pageId: aller_ga.id,\n publishedTime: aller_ga.postDate,\n author: aller_ga.postAuthor,\n loggedIn: aller_ga.loggedIn,\n contentType: aller_ga.pageType,\n };\n \n // seems dynamic update of schema and seo data isn't tracked by anyone so for now disabling\n return;\n }\n\n const pageTypesToUpdate = [\n 'home',\n 'single'\n ];\n\n if(pageTypesToUpdate.indexOf(this.props.pagetype) == -1 ) {\n return;\n }\n\n this.doUpdateMetaData(metaData);\n }\n\n doUpdateMetaData(metaData) {\n const headElement = document.querySelector('head');\n let metaElement;\n\n for (var key in metaData) {\n metaElement = headElement.querySelector(`meta[property=\"${key}\"]`) ?? false;\n if(metaElement){\n metaElement.content = metaData[key];\n }\n }\n }\n\n up(index) {\n this.updateBrowserHistory(index);\n this.updateMetaData(index);\n }\n\n down(index) {\n this.updateBrowserHistory(index);\n this.updateMetaData(index);\n }\n\n reset() {\n this.updateBrowserHistory(0);\n }\n\n initiateAd() {\n if (this.state.timestamp && \n !this.state.hideAds\n ) {\n this.usedTimestamps.push(this.state.timestamp);\n if(this.topAdDiv){\n this.topAdDiv.id = `${this.topAdDiv.id}${this.state.timestamp}`;\n this.topAdDiv = null;\n }\n\n // window.DFPInit is running automatically on page load, so we run DFPInit manually from the second time. \n if (this.usedTimestamps.length > 1) {\n\n if (typeof window.DFPInit === 'function') {\n window.DFPInit(this.state.timestamp);\n } else {\n console.error('DFPInit is not a function. Probably aller-ads script is not ready.');\n }\n } else {\n window.adsUniqueId = `${this.state.timestamp}`;\n }\n }\n }\n\n shouldHideAds(metaData) {\n let hideAdsEnabled = metaData._ana_hide_ads ?? false;\n let hideAds = false;\n let hideDuration = metaData._ana_hide_ads_duration_active ?? false;\n let hideUntil = metaData._ana_hide_ads_duration ?? false;\n if (hideAdsEnabled) {\n hideAds = true;\n\n if (hideDuration) {\n hideAds = new Date(hideUntil) > new Date();\n }\n }\n\n return hideAds;\n }\n\n hasNewTimestamp () {\n return this.state.timestamp && this.usedTimestamps.indexOf(this.state.timestamp) == -1;\n }\n\n componentDidUpdate() {\n if (this.hasNewTimestamp()) {\n this.initiateAd();\n }\n\n if (typeof window.instgrm !== 'undefined') {\n window.instgrm.Embeds.process();\n }\n }\n\n componentDidMount() {\n this.getInitialState();\n window.addEventListener('scroll', this.handleScroll);\n }\n\n getInitialState() {\n this.setState(() => ({\n progress: true,\n page: this.props.pageId ?? 1,\n cursor: this.props.cursor || null,\n }));\n\n if (this.state.categorySlug && this.state.categorySlug !== 'etikett' && this.state.categorySlug !== 'search') {\n axios.get(`/api/category`)\n .then((response) => {\n if (response.status == 200) {\n this.setState(() => ({\n categories: response.data,\n }));\n }\n })\n .catch((error) => {\n console.log(error);\n });\n }\n // (TODO:infinite) Create endpoint in archive class to remove year and month get variables\n let endpoint = this.props.getEndpoint?.() ?? `/api/${this.props.endpoint}/?page=${this.state.page}&count=${this.state.perpage}&id=${this.state.id}&direction=${this.state.orderDirection}&year=${this.state.year}&month=${this.state.month}`;\n\n if (this.state.cursor !== null) {\n endpoint += `&cursor=${this.state.cursor}`;\n }\n\n axios.get(endpoint)\n .then((response) => {\n let metaObjs = [];\n let stateObjs = [];\n let data = Object.values(response.data.data);\n let childrenDivided = [];\n let newChildCollection = data;\n const completed = response.data.current_page >= response.data.last_page;\n \n metaObjs[parseInt(this.state.page)] = this.props.getSeoDataArray?.(data[0]) ?? [];\n stateObjs[parseInt(this.state.page)] = {'current_url':window.location.href, 'page_title':data.title};\n childrenDivided[0] = newChildCollection;\n const cursor = response.data.cursor || null;\n\n this.setState((prevState) => ({\n page: parseInt(this.state.page),\n children: newChildCollection,\n total: response.data.total,\n progress: false,\n completed: completed,\n stateObjs: stateObjs,\n metaObjs: metaObjs,\n childrenDivided: childrenDivided,\n hideAds: (data[0]?.meta_data) ? this.shouldHideAds(data[0].meta_data) : false,\n timestamp: (Math.floor(Math.random() * 99) + 1).toString(),\n cursor,\n }));\n\n if (window.innerHeight >= document.documentElement.scrollHeight && !completed) {\n this.infiniteScroll(null, null, null, newChildCollection);\n } else {\n // Make sure window.cts.metadata is updated on initial page load.\n this.updateMetaData(0);\n }\n })\n .catch((error) => {\n console.log(error);\n });\n }\n\n onOrderingChange(event) {\n const ordering = event.target.value;\n this.setState(() => ({\n page: 0,\n children: [],\n childrenDivided: [],\n orderDirection: ordering,\n initialPage: 1,\n stateObjs: [],\n metaObjs: [],\n completed: false,\n }));\n this.infiniteScroll(true, 0, ordering);\n }\n\n handleScroll () {\n if(this.props.preview){\n return;\n }\n let contentWrapper;\n try {\n contentWrapper = ReactDOM.findDOMNode(this);\n } catch (error) {\n return;\n }\n if (!this.state.completed && \n !this.state.progress && \n (window.innerHeight + window.scrollY) >= (contentWrapper.offsetHeight)\n ) {\n this.infiniteScroll()\n }\n\n // (TODO:infinite) define benchmarks and optimize\n // (TODO:infinite) same logic for archive pages\n $('.infinityCollection').each((index, element) => {\n let rect = element.getBoundingClientRect();\n if(rect.top < 600 &&\n rect.bottom > 600 &&\n this.state.lastIndex != index){\n if (index < this.state.lastIndex)\n {\n this.up(index);\n } else {\n this.down(index);\n }\n this.setState({\n lastIndex: index\n });\n return;\n }\n });\n }\n\n infiniteScroll(reset, pageOverride, orderDirectionOverride, previousChildCollection) {\n if(this.props.preview){\n return;\n }\n this.setState(() => ({\n progress: true,\n }));\n\n const page = pageOverride ?? this.state.page;\n const direction = orderDirectionOverride ?? this.state.orderDirection;\n let endpoint = this.props.getEndpoint?.( // (TODO:infinite) Create endpoint in archive class to remove year and month get variables\n previousChildCollection || \n this.state.childrenDivided[this.state.childrenDivided.length - 1]) ?? \n `/api/${this.props.endpoint}/?page=${page + 1}&count=${this.state.perpage}&id=${this.state.id}&direction=${direction}&year=${this.state.year}&month=${this.state.month}`;\n\n if (endpoint == false) {\n this.setState((prevState) => ({\n progress: false,\n completed: true,\n }));\n\n return;\n }\n\n if (this.state.cursor !== null) {\n endpoint += `&cursor=${this.state.cursor}`;\n }\n\n axios.get(endpoint)\n .then((response) => {\n let stateObjs = this.state.stateObjs;\n let metaObjs = this.state.metaObjs;\n let data = Object.values(response.data.data);\n let childrenDivided = this.state.childrenDivided;\n\n stateObjs[page + 1] = {'current_url':this.generateUrl(response.data), 'page_title':data.title};\n metaObjs[page + 1] = this.props.getSeoDataArray?.(data[0]) ?? [];\n childrenDivided[this.state.childrenDivided.length] = data;\n const cursor = response.data.cursor || null;\n\n this.initAds = true;\n this.setState((prevState) => ({\n page: page + 1,\n children: this.state.children.concat(data),\n total: response.data.total,\n progress: false,\n completed: response.data.current_page >= response.data.last_page,\n stateObjs: stateObjs,\n metaObjs: metaObjs,\n childrenDivided: childrenDivided,\n hideAds: (data[0]?.meta_data) ? this.shouldHideAds(data[0].meta_data) : false,\n timestamp: (Math.floor(Math.random() * 99) + 1).toString(),\n cursor\n }));\n\n // Reset history? (on ordering change etc)\n if (reset) {\n this.reset();\n }\n\n this.handleScroll();\n })\n .catch((error) => {\n console.log(error);\n });\n }\n\n constructChildren(childElement) {\n let childElements = [];\n let masterindex = 1;\n let infinityIndex = 1;\n\n this.state.childrenDivided.forEach(array => {\n childElements.push((\n <div className=\"infinityCollection row\" key={masterindex}>\n {array.map((child, index) => {\n const key = index * masterindex + (child.id.toString() ?? 'nuller');\n if (!this.keyToTimestamp[key]) {\n this.keyToTimestamp[key] = this.state.timestamp;\n }\n const props = { \n timestamp: this.keyToTimestamp[key], \n infinityIndex: infinityIndex, \n data: child, \n key: key, \n preview: this.props.preview\n };\n infinityIndex++;\n return React.cloneElement(childElement, props);\n })}\n </div>));\n masterindex++;\n });\n let skeletonElements = [];\n if (this.state.progress && !this.state.completed) {\n for (let index = 0; index < this.props.perPage; index++) {\n let props = {key: `${index}-${this.state.page}`};\n skeletonElements.push(React.cloneElement(childElement, props));\n }\n childElements.push((\n <div className=\"row\" key={masterindex}>\n {skeletonElements}\n </div>\n ));\n }\n\n return childElements;\n }\n\n render() {\n const childElement = Children.only(this.props.children);\n\n if (!React.isValidElement(childElement)) {\n return;\n }\n \n const childElements = this.constructChildren(childElement);\n const showFilter = ['category', 'archive'].indexOf(this.props.pagetype) !== -1;\n const showLink = (this.props.pagetype == 'search' || this.props.pagetype == 'tag' || this.props.pagetype == 'category' || this.props.pagetype == 'archive')? true : false;\n const homeUrl = `${document.location.protocol}//${document.location.host}/`;\n\n return (\n <React.Fragment>\n <div className=\"row\">\n { showFilter && \n <TermFilter\n pagetype={this.props.pagetype} \n topCategories={this.state.topCategories} \n tags={this.state.tags} \n tagSlug={this.state.tagSlug} \n categories={this.state.categories} \n categorySlug={this.state.categorySlug} \n ordering={this.state.ordering} \n onOrderingChange={this.onOrderingChange} />\n }\n <div className={`infinity-scroll col-12 col-lg-${showFilter ? 9 : 12}`}>\n { childElements }\n {this.props.preview !== 1 && this.state.completed && showLink == false &&\n <div className=\"text-center\">\n <h5 className=\"text-bold\" >Det finns inga fler inlägg</h5>\n </div>\n }\n {this.props.preview !== 1 && this.state.completed && showLink &&\n <div className=\"text-center more-info\">\n <h5 className=\"text-bold\" >Det finns inga fler inlägg</h5>\n <a href={homeUrl}>Här hittar du fler inlägg</a>\n </div>\n }\n </div>\n </div>\n </React.Fragment>\n );\n } \n\n}\n\nexport default InfiniteScroll;","class Poll {\n loaded(questionID) {\n const votesCookie = window.Cookie.get('pVotes');\n let votes = typeof votesCookie != 'undefined' ? JSON.parse(votesCookie) : {};\n\n if (votes[questionID]) {\n this.getVotes(questionID, votes[questionID]);\n } else {\n // Set poll to loaded\n document.querySelectorAll(`.poll[data-question-id=\"${questionID}\"]`).forEach((poll)=>{\n poll.classList.add('poll--loaded');\n });\n }\n }\n getVotes(questionId, voted) {\n axios.get(`/api/poll/question/${questionId}`)\n .then(response => {\n let totalCount = 0;\n\n response.data.answers.forEach((answer) => {totalCount += answer.vote_count})\n this.switchToResults(questionId, response.data.answers, parseInt(voted), totalCount);\n })\n .catch(error => console.error(error)); \n }\n vote(questionId, answerId, ref) {\n // Set poll to loading\n document.querySelectorAll(`.poll[data-question-id=\"${questionId}\"]`).forEach((poll)=>{\n poll.classList.remove('poll--loaded');\n });\n\n axios.get(`/api/poll/question/${questionId}`)\n .then(response => {\n this.castVote(response.data, answerId, ref);\n })\n .catch(error => console.error(error));\n }\n\n castVote(question, answerId, ref) {\n const postRef = ref.closest(\".post\");\n if (!postRef) {\n return;\n }\n\n const postID = postRef.dataset['postId'];\n\n axios.post(`/api/poll/vote/`, {\n questionId: question.id,\n answerId: answerId,\n postID: postID\n })\n .then(response => {\n const votesCookie = window.Cookie.get('pVotes');\n let newValues = typeof votesCookie != 'undefined' ? JSON.parse(votesCookie) : {};\n\n const attributes = {\n expires: 730\n };\n\n // Push voted answer to votes\n newValues[question.id] = answerId;\n\n window.Cookie.set('pVotes', JSON.stringify(newValues), attributes);\n\n this.switchToResults(question.id, response.data.answers, answerId, response.data.total_votes);\n })\n .catch(error => console.error(error));\n }\n\n switchToResults(questionId, answers, votedAnswerId, totalVotes) {\n let html = `<div class=\"poll__results\">`;\n \n // Find the most number of votes for an answer\n const maxVotes = Math.max.apply(Math, answers.map(function(o){return o.vote_count;}));\n \n answers.forEach(answer => {\n let percentage = Math.round((answer.vote_count * 100) / totalVotes);\n let animationTime = 2 / 100 * percentage;\n const isMaxVoted = maxVotes == answer.vote_count;\n let votedClass = answer.id == votedAnswerId ? ` poll__result--voted` : ``;\n let votedTitle = answer.id == votedAnswerId ? ` title=\"Du har röstat på detta valet - ${answer.answer} (${percentage}% | ${answer.vote_count} Votes)\"` : ``;\n\n const checkmark = answer.id == votedAnswerId ? \n `<svg class={this.props.className} width=\"16px\" height=\"16px\" viewBox=\"0 0 16 16\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle id=\"check_mark\" r=\"6\" cx=\"8\" cy=\"8\" />\n <path id=\"check_circle\" d=\"M8,1 C11.8659932,1 15,4.13400675 15,8 C15,11.8659932 11.8659932,15 8,15 C4.13400675,15 1,11.8659932 1,8 \n C1,4.13400675 4.13400675,1 8,1 Z M11.1850357,4.61533737 L6.75,9.02524471 L5.01085567,7.28334999 L3.70821857,8.58886433 \n L6.75,11.6192169 L12.4768734,5.91628551 L11.1850357,4.61533737 Z\" />\n </svg>` : ``;\n\n html += `<div class=\"poll__result${votedClass}\"${votedTitle}${isMaxVoted ? ' data-max=\"true\"' : ''}>` + \n `<span class=\"poll__result__answer\">${answer.answer}${checkmark}</span>` + \n `<span class=\"poll__result__percentage\">${percentage}%</span>` + \n `<div class=\"poll__result__bg\" data-percentage=\"${percentage}\" style=\"transition-duration: ${animationTime}s;\"></div>` + \n `</div>`;\n });\n\n html += `</div>`;\n\n // Change HTML\n document.querySelectorAll(`.poll[data-question-id=\"${questionId}\"] .poll__answers`).forEach((poll)=>{\n poll.outerHTML = html;\n });\n\n // Set poll to loaded\n document.querySelectorAll(`.poll[data-question-id=\"${questionId}\"]`).forEach((poll)=>{\n poll.classList.add('poll--loaded');\n });\n\n // Add percentage width to poll bars after, to get animation (delay needed)\n setTimeout(function() {\n // Set the width\n document.querySelectorAll(`.poll[data-question-id=\"${questionId}\"] [data-percentage]`).forEach((barElement)=>{\n barElement.style.width = `${barElement.dataset.percentage}%`;\n });\n\n // Change color on max voted answer(s)\n setTimeout(function() {\n document.querySelectorAll(`.poll[data-question-id=\"${questionId}\"] [data-max=\"true\"]`).forEach((answer)=>{\n answer.classList.add('poll__result--most-voted');\n });\n }, 2000);\n }, 100);\n }\n}\nwindow.poll = new Poll();\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","/*!\n * Bootstrap v4.6.0 (https://getbootstrap.com/)\n * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('jquery'), require('popper.js')) :\n typeof define === 'function' && define.amd ? define(['exports', 'jquery', 'popper.js'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.bootstrap = {}, global.jQuery, global.Popper));\n}(this, (function (exports, $, Popper) { 'use strict';\n\n function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\n var $__default = /*#__PURE__*/_interopDefaultLegacy($);\n var Popper__default = /*#__PURE__*/_interopDefaultLegacy(Popper);\n\n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n }\n\n function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n }\n\n function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n }\n\n /**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.0): util.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n /**\n * ------------------------------------------------------------------------\n * Private TransitionEnd Helpers\n * ------------------------------------------------------------------------\n */\n\n var TRANSITION_END = 'transitionend';\n var MAX_UID = 1000000;\n var MILLISECONDS_MULTIPLIER = 1000; // Shoutout AngusCroll (https://goo.gl/pxwQGp)\n\n function toType(obj) {\n if (obj === null || typeof obj === 'undefined') {\n return \"\" + obj;\n }\n\n return {}.toString.call(obj).match(/\\s([a-z]+)/i)[1].toLowerCase();\n }\n\n function getSpecialTransitionEndEvent() {\n return {\n bindType: TRANSITION_END,\n delegateType: TRANSITION_END,\n handle: function handle(event) {\n if ($__default['default'](event.target).is(this)) {\n return event.handleObj.handler.apply(this, arguments); // eslint-disable-line prefer-rest-params\n }\n\n return undefined;\n }\n };\n }\n\n function transitionEndEmulator(duration) {\n var _this = this;\n\n var called = false;\n $__default['default'](this).one(Util.TRANSITION_END, function () {\n called = true;\n });\n setTimeout(function () {\n if (!called) {\n Util.triggerTransitionEnd(_this);\n }\n }, duration);\n return this;\n }\n\n function setTransitionEndSupport() {\n $__default['default'].fn.emulateTransitionEnd = transitionEndEmulator;\n $__default['default'].event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent();\n }\n /**\n * --------------------------------------------------------------------------\n * Public Util Api\n * --------------------------------------------------------------------------\n */\n\n\n var Util = {\n TRANSITION_END: 'bsTransitionEnd',\n getUID: function getUID(prefix) {\n do {\n prefix += ~~(Math.random() * MAX_UID); // \"~~\" acts like a faster Math.floor() here\n } while (document.getElementById(prefix));\n\n return prefix;\n },\n getSelectorFromElement: function getSelectorFromElement(element) {\n var selector = element.getAttribute('data-target');\n\n if (!selector || selector === '#') {\n var hrefAttr = element.getAttribute('href');\n selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : '';\n }\n\n try {\n return document.querySelector(selector) ? selector : null;\n } catch (_) {\n return null;\n }\n },\n getTransitionDurationFromElement: function getTransitionDurationFromElement(element) {\n if (!element) {\n return 0;\n } // Get transition-duration of the element\n\n\n var transitionDuration = $__default['default'](element).css('transition-duration');\n var transitionDelay = $__default['default'](element).css('transition-delay');\n var floatTransitionDuration = parseFloat(transitionDuration);\n var floatTransitionDelay = parseFloat(transitionDelay); // Return 0 if element or transition duration is not found\n\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0;\n } // If multiple durations are defined, take the first\n\n\n transitionDuration = transitionDuration.split(',')[0];\n transitionDelay = transitionDelay.split(',')[0];\n return (parseFloat(transitionDuration) + parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER;\n },\n reflow: function reflow(element) {\n return element.offsetHeight;\n },\n triggerTransitionEnd: function triggerTransitionEnd(element) {\n $__default['default'](element).trigger(TRANSITION_END);\n },\n supportsTransitionEnd: function supportsTransitionEnd() {\n return Boolean(TRANSITION_END);\n },\n isElement: function isElement(obj) {\n return (obj[0] || obj).nodeType;\n },\n typeCheckConfig: function typeCheckConfig(componentName, config, configTypes) {\n for (var property in configTypes) {\n if (Object.prototype.hasOwnProperty.call(configTypes, property)) {\n var expectedTypes = configTypes[property];\n var value = config[property];\n var valueType = value && Util.isElement(value) ? 'element' : toType(value);\n\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new Error(componentName.toUpperCase() + \": \" + (\"Option \\\"\" + property + \"\\\" provided type \\\"\" + valueType + \"\\\" \") + (\"but expected type \\\"\" + expectedTypes + \"\\\".\"));\n }\n }\n }\n },\n findShadowRoot: function findShadowRoot(element) {\n if (!document.documentElement.attachShadow) {\n return null;\n } // Can find the shadow root otherwise it'll return the document\n\n\n if (typeof element.getRootNode === 'function') {\n var root = element.getRootNode();\n return root instanceof ShadowRoot ? root : null;\n }\n\n if (element instanceof ShadowRoot) {\n return element;\n } // when we don't find a shadow root\n\n\n if (!element.parentNode) {\n return null;\n }\n\n return Util.findShadowRoot(element.parentNode);\n },\n jQueryDetection: function jQueryDetection() {\n if (typeof $__default['default'] === 'undefined') {\n throw new TypeError('Bootstrap\\'s JavaScript requires jQuery. jQuery must be included before Bootstrap\\'s JavaScript.');\n }\n\n var version = $__default['default'].fn.jquery.split(' ')[0].split('.');\n var minMajor = 1;\n var ltMajor = 2;\n var minMinor = 9;\n var minPatch = 1;\n var maxMajor = 4;\n\n if (version[0] < ltMajor && version[1] < minMinor || version[0] === minMajor && version[1] === minMinor && version[2] < minPatch || version[0] >= maxMajor) {\n throw new Error('Bootstrap\\'s JavaScript requires at least jQuery v1.9.1 but less than v4.0.0');\n }\n }\n };\n Util.jQueryDetection();\n setTransitionEndSupport();\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n var NAME = 'alert';\n var VERSION = '4.6.0';\n var DATA_KEY = 'bs.alert';\n var EVENT_KEY = \".\" + DATA_KEY;\n var DATA_API_KEY = '.data-api';\n var JQUERY_NO_CONFLICT = $__default['default'].fn[NAME];\n var SELECTOR_DISMISS = '[data-dismiss=\"alert\"]';\n var EVENT_CLOSE = \"close\" + EVENT_KEY;\n var EVENT_CLOSED = \"closed\" + EVENT_KEY;\n var EVENT_CLICK_DATA_API = \"click\" + EVENT_KEY + DATA_API_KEY;\n var CLASS_NAME_ALERT = 'alert';\n var CLASS_NAME_FADE = 'fade';\n var CLASS_NAME_SHOW = 'show';\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n var Alert = /*#__PURE__*/function () {\n function Alert(element) {\n this._element = element;\n } // Getters\n\n\n var _proto = Alert.prototype;\n\n // Public\n _proto.close = function close(element) {\n var rootElement = this._element;\n\n if (element) {\n rootElement = this._getRootElement(element);\n }\n\n var customEvent = this._triggerCloseEvent(rootElement);\n\n if (customEvent.isDefaultPrevented()) {\n return;\n }\n\n this._removeElement(rootElement);\n };\n\n _proto.dispose = function dispose() {\n $__default['default'].removeData(this._element, DATA_KEY);\n this._element = null;\n } // Private\n ;\n\n _proto._getRootElement = function _getRootElement(element) {\n var selector = Util.getSelectorFromElement(element);\n var parent = false;\n\n if (selector) {\n parent = document.querySelector(selector);\n }\n\n if (!parent) {\n parent = $__default['default'](element).closest(\".\" + CLASS_NAME_ALERT)[0];\n }\n\n return parent;\n };\n\n _proto._triggerCloseEvent = function _triggerCloseEvent(element) {\n var closeEvent = $__default['default'].Event(EVENT_CLOSE);\n $__default['default'](element).trigger(closeEvent);\n return closeEvent;\n };\n\n _proto._removeElement = function _removeElement(element) {\n var _this = this;\n\n $__default['default'](element).removeClass(CLASS_NAME_SHOW);\n\n if (!$__default['default'](element).hasClass(CLASS_NAME_FADE)) {\n this._destroyElement(element);\n\n return;\n }\n\n var transitionDuration = Util.getTransitionDurationFromElement(element);\n $__default['default'](element).one(Util.TRANSITION_END, function (event) {\n return _this._destroyElement(element, event);\n }).emulateTransitionEnd(transitionDuration);\n };\n\n _proto._destroyElement = function _destroyElement(element) {\n $__default['default'](element).detach().trigger(EVENT_CLOSED).remove();\n } // Static\n ;\n\n Alert._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var $element = $__default['default'](this);\n var data = $element.data(DATA_KEY);\n\n if (!data) {\n data = new Alert(this);\n $element.data(DATA_KEY, data);\n }\n\n if (config === 'close') {\n data[config](this);\n }\n });\n };\n\n Alert._handleDismiss = function _handleDismiss(alertInstance) {\n return function (event) {\n if (event) {\n event.preventDefault();\n }\n\n alertInstance.close(this);\n };\n };\n\n _createClass(Alert, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION;\n }\n }]);\n\n return Alert;\n }();\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n\n $__default['default'](document).on(EVENT_CLICK_DATA_API, SELECTOR_DISMISS, Alert._handleDismiss(new Alert()));\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $__default['default'].fn[NAME] = Alert._jQueryInterface;\n $__default['default'].fn[NAME].Constructor = Alert;\n\n $__default['default'].fn[NAME].noConflict = function () {\n $__default['default'].fn[NAME] = JQUERY_NO_CONFLICT;\n return Alert._jQueryInterface;\n };\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n var NAME$1 = 'button';\n var VERSION$1 = '4.6.0';\n var DATA_KEY$1 = 'bs.button';\n var EVENT_KEY$1 = \".\" + DATA_KEY$1;\n var DATA_API_KEY$1 = '.data-api';\n var JQUERY_NO_CONFLICT$1 = $__default['default'].fn[NAME$1];\n var CLASS_NAME_ACTIVE = 'active';\n var CLASS_NAME_BUTTON = 'btn';\n var CLASS_NAME_FOCUS = 'focus';\n var SELECTOR_DATA_TOGGLE_CARROT = '[data-toggle^=\"button\"]';\n var SELECTOR_DATA_TOGGLES = '[data-toggle=\"buttons\"]';\n var SELECTOR_DATA_TOGGLE = '[data-toggle=\"button\"]';\n var SELECTOR_DATA_TOGGLES_BUTTONS = '[data-toggle=\"buttons\"] .btn';\n var SELECTOR_INPUT = 'input:not([type=\"hidden\"])';\n var SELECTOR_ACTIVE = '.active';\n var SELECTOR_BUTTON = '.btn';\n var EVENT_CLICK_DATA_API$1 = \"click\" + EVENT_KEY$1 + DATA_API_KEY$1;\n var EVENT_FOCUS_BLUR_DATA_API = \"focus\" + EVENT_KEY$1 + DATA_API_KEY$1 + \" \" + (\"blur\" + EVENT_KEY$1 + DATA_API_KEY$1);\n var EVENT_LOAD_DATA_API = \"load\" + EVENT_KEY$1 + DATA_API_KEY$1;\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n var Button = /*#__PURE__*/function () {\n function Button(element) {\n this._element = element;\n this.shouldAvoidTriggerChange = false;\n } // Getters\n\n\n var _proto = Button.prototype;\n\n // Public\n _proto.toggle = function toggle() {\n var triggerChangeEvent = true;\n var addAriaPressed = true;\n var rootElement = $__default['default'](this._element).closest(SELECTOR_DATA_TOGGLES)[0];\n\n if (rootElement) {\n var input = this._element.querySelector(SELECTOR_INPUT);\n\n if (input) {\n if (input.type === 'radio') {\n if (input.checked && this._element.classList.contains(CLASS_NAME_ACTIVE)) {\n triggerChangeEvent = false;\n } else {\n var activeElement = rootElement.querySelector(SELECTOR_ACTIVE);\n\n if (activeElement) {\n $__default['default'](activeElement).removeClass(CLASS_NAME_ACTIVE);\n }\n }\n }\n\n if (triggerChangeEvent) {\n // if it's not a radio button or checkbox don't add a pointless/invalid checked property to the input\n if (input.type === 'checkbox' || input.type === 'radio') {\n input.checked = !this._element.classList.contains(CLASS_NAME_ACTIVE);\n }\n\n if (!this.shouldAvoidTriggerChange) {\n $__default['default'](input).trigger('change');\n }\n }\n\n input.focus();\n addAriaPressed = false;\n }\n }\n\n if (!(this._element.hasAttribute('disabled') || this._element.classList.contains('disabled'))) {\n if (addAriaPressed) {\n this._element.setAttribute('aria-pressed', !this._element.classList.contains(CLASS_NAME_ACTIVE));\n }\n\n if (triggerChangeEvent) {\n $__default['default'](this._element).toggleClass(CLASS_NAME_ACTIVE);\n }\n }\n };\n\n _proto.dispose = function dispose() {\n $__default['default'].removeData(this._element, DATA_KEY$1);\n this._element = null;\n } // Static\n ;\n\n Button._jQueryInterface = function _jQueryInterface(config, avoidTriggerChange) {\n return this.each(function () {\n var $element = $__default['default'](this);\n var data = $element.data(DATA_KEY$1);\n\n if (!data) {\n data = new Button(this);\n $element.data(DATA_KEY$1, data);\n }\n\n data.shouldAvoidTriggerChange = avoidTriggerChange;\n\n if (config === 'toggle') {\n data[config]();\n }\n });\n };\n\n _createClass(Button, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$1;\n }\n }]);\n\n return Button;\n }();\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n\n $__default['default'](document).on(EVENT_CLICK_DATA_API$1, SELECTOR_DATA_TOGGLE_CARROT, function (event) {\n var button = event.target;\n var initialButton = button;\n\n if (!$__default['default'](button).hasClass(CLASS_NAME_BUTTON)) {\n button = $__default['default'](button).closest(SELECTOR_BUTTON)[0];\n }\n\n if (!button || button.hasAttribute('disabled') || button.classList.contains('disabled')) {\n event.preventDefault(); // work around Firefox bug #1540995\n } else {\n var inputBtn = button.querySelector(SELECTOR_INPUT);\n\n if (inputBtn && (inputBtn.hasAttribute('disabled') || inputBtn.classList.contains('disabled'))) {\n event.preventDefault(); // work around Firefox bug #1540995\n\n return;\n }\n\n if (initialButton.tagName === 'INPUT' || button.tagName !== 'LABEL') {\n Button._jQueryInterface.call($__default['default'](button), 'toggle', initialButton.tagName === 'INPUT');\n }\n }\n }).on(EVENT_FOCUS_BLUR_DATA_API, SELECTOR_DATA_TOGGLE_CARROT, function (event) {\n var button = $__default['default'](event.target).closest(SELECTOR_BUTTON)[0];\n $__default['default'](button).toggleClass(CLASS_NAME_FOCUS, /^focus(in)?$/.test(event.type));\n });\n $__default['default'](window).on(EVENT_LOAD_DATA_API, function () {\n // ensure correct active class is set to match the controls' actual values/states\n // find all checkboxes/readio buttons inside data-toggle groups\n var buttons = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLES_BUTTONS));\n\n for (var i = 0, len = buttons.length; i < len; i++) {\n var button = buttons[i];\n var input = button.querySelector(SELECTOR_INPUT);\n\n if (input.checked || input.hasAttribute('checked')) {\n button.classList.add(CLASS_NAME_ACTIVE);\n } else {\n button.classList.remove(CLASS_NAME_ACTIVE);\n }\n } // find all button toggles\n\n\n buttons = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE));\n\n for (var _i = 0, _len = buttons.length; _i < _len; _i++) {\n var _button = buttons[_i];\n\n if (_button.getAttribute('aria-pressed') === 'true') {\n _button.classList.add(CLASS_NAME_ACTIVE);\n } else {\n _button.classList.remove(CLASS_NAME_ACTIVE);\n }\n }\n });\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $__default['default'].fn[NAME$1] = Button._jQueryInterface;\n $__default['default'].fn[NAME$1].Constructor = Button;\n\n $__default['default'].fn[NAME$1].noConflict = function () {\n $__default['default'].fn[NAME$1] = JQUERY_NO_CONFLICT$1;\n return Button._jQueryInterface;\n };\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n var NAME$2 = 'carousel';\n var VERSION$2 = '4.6.0';\n var DATA_KEY$2 = 'bs.carousel';\n var EVENT_KEY$2 = \".\" + DATA_KEY$2;\n var DATA_API_KEY$2 = '.data-api';\n var JQUERY_NO_CONFLICT$2 = $__default['default'].fn[NAME$2];\n var ARROW_LEFT_KEYCODE = 37; // KeyboardEvent.which value for left arrow key\n\n var ARROW_RIGHT_KEYCODE = 39; // KeyboardEvent.which value for right arrow key\n\n var TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch\n\n var SWIPE_THRESHOLD = 40;\n var Default = {\n interval: 5000,\n keyboard: true,\n slide: false,\n pause: 'hover',\n wrap: true,\n touch: true\n };\n var DefaultType = {\n interval: '(number|boolean)',\n keyboard: 'boolean',\n slide: '(boolean|string)',\n pause: '(string|boolean)',\n wrap: 'boolean',\n touch: 'boolean'\n };\n var DIRECTION_NEXT = 'next';\n var DIRECTION_PREV = 'prev';\n var DIRECTION_LEFT = 'left';\n var DIRECTION_RIGHT = 'right';\n var EVENT_SLIDE = \"slide\" + EVENT_KEY$2;\n var EVENT_SLID = \"slid\" + EVENT_KEY$2;\n var EVENT_KEYDOWN = \"keydown\" + EVENT_KEY$2;\n var EVENT_MOUSEENTER = \"mouseenter\" + EVENT_KEY$2;\n var EVENT_MOUSELEAVE = \"mouseleave\" + EVENT_KEY$2;\n var EVENT_TOUCHSTART = \"touchstart\" + EVENT_KEY$2;\n var EVENT_TOUCHMOVE = \"touchmove\" + EVENT_KEY$2;\n var EVENT_TOUCHEND = \"touchend\" + EVENT_KEY$2;\n var EVENT_POINTERDOWN = \"pointerdown\" + EVENT_KEY$2;\n var EVENT_POINTERUP = \"pointerup\" + EVENT_KEY$2;\n var EVENT_DRAG_START = \"dragstart\" + EVENT_KEY$2;\n var EVENT_LOAD_DATA_API$1 = \"load\" + EVENT_KEY$2 + DATA_API_KEY$2;\n var EVENT_CLICK_DATA_API$2 = \"click\" + EVENT_KEY$2 + DATA_API_KEY$2;\n var CLASS_NAME_CAROUSEL = 'carousel';\n var CLASS_NAME_ACTIVE$1 = 'active';\n var CLASS_NAME_SLIDE = 'slide';\n var CLASS_NAME_RIGHT = 'carousel-item-right';\n var CLASS_NAME_LEFT = 'carousel-item-left';\n var CLASS_NAME_NEXT = 'carousel-item-next';\n var CLASS_NAME_PREV = 'carousel-item-prev';\n var CLASS_NAME_POINTER_EVENT = 'pointer-event';\n var SELECTOR_ACTIVE$1 = '.active';\n var SELECTOR_ACTIVE_ITEM = '.active.carousel-item';\n var SELECTOR_ITEM = '.carousel-item';\n var SELECTOR_ITEM_IMG = '.carousel-item img';\n var SELECTOR_NEXT_PREV = '.carousel-item-next, .carousel-item-prev';\n var SELECTOR_INDICATORS = '.carousel-indicators';\n var SELECTOR_DATA_SLIDE = '[data-slide], [data-slide-to]';\n var SELECTOR_DATA_RIDE = '[data-ride=\"carousel\"]';\n var PointerType = {\n TOUCH: 'touch',\n PEN: 'pen'\n };\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n var Carousel = /*#__PURE__*/function () {\n function Carousel(element, config) {\n this._items = null;\n this._interval = null;\n this._activeElement = null;\n this._isPaused = false;\n this._isSliding = false;\n this.touchTimeout = null;\n this.touchStartX = 0;\n this.touchDeltaX = 0;\n this._config = this._getConfig(config);\n this._element = element;\n this._indicatorsElement = this._element.querySelector(SELECTOR_INDICATORS);\n this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0;\n this._pointerEvent = Boolean(window.PointerEvent || window.MSPointerEvent);\n\n this._addEventListeners();\n } // Getters\n\n\n var _proto = Carousel.prototype;\n\n // Public\n _proto.next = function next() {\n if (!this._isSliding) {\n this._slide(DIRECTION_NEXT);\n }\n };\n\n _proto.nextWhenVisible = function nextWhenVisible() {\n var $element = $__default['default'](this._element); // Don't call next when the page isn't visible\n // or the carousel or its parent isn't visible\n\n if (!document.hidden && $element.is(':visible') && $element.css('visibility') !== 'hidden') {\n this.next();\n }\n };\n\n _proto.prev = function prev() {\n if (!this._isSliding) {\n this._slide(DIRECTION_PREV);\n }\n };\n\n _proto.pause = function pause(event) {\n if (!event) {\n this._isPaused = true;\n }\n\n if (this._element.querySelector(SELECTOR_NEXT_PREV)) {\n Util.triggerTransitionEnd(this._element);\n this.cycle(true);\n }\n\n clearInterval(this._interval);\n this._interval = null;\n };\n\n _proto.cycle = function cycle(event) {\n if (!event) {\n this._isPaused = false;\n }\n\n if (this._interval) {\n clearInterval(this._interval);\n this._interval = null;\n }\n\n if (this._config.interval && !this._isPaused) {\n this._updateInterval();\n\n this._interval = setInterval((document.visibilityState ? this.nextWhenVisible : this.next).bind(this), this._config.interval);\n }\n };\n\n _proto.to = function to(index) {\n var _this = this;\n\n this._activeElement = this._element.querySelector(SELECTOR_ACTIVE_ITEM);\n\n var activeIndex = this._getItemIndex(this._activeElement);\n\n if (index > this._items.length - 1 || index < 0) {\n return;\n }\n\n if (this._isSliding) {\n $__default['default'](this._element).one(EVENT_SLID, function () {\n return _this.to(index);\n });\n return;\n }\n\n if (activeIndex === index) {\n this.pause();\n this.cycle();\n return;\n }\n\n var direction = index > activeIndex ? DIRECTION_NEXT : DIRECTION_PREV;\n\n this._slide(direction, this._items[index]);\n };\n\n _proto.dispose = function dispose() {\n $__default['default'](this._element).off(EVENT_KEY$2);\n $__default['default'].removeData(this._element, DATA_KEY$2);\n this._items = null;\n this._config = null;\n this._element = null;\n this._interval = null;\n this._isPaused = null;\n this._isSliding = null;\n this._activeElement = null;\n this._indicatorsElement = null;\n } // Private\n ;\n\n _proto._getConfig = function _getConfig(config) {\n config = _extends({}, Default, config);\n Util.typeCheckConfig(NAME$2, config, DefaultType);\n return config;\n };\n\n _proto._handleSwipe = function _handleSwipe() {\n var absDeltax = Math.abs(this.touchDeltaX);\n\n if (absDeltax <= SWIPE_THRESHOLD) {\n return;\n }\n\n var direction = absDeltax / this.touchDeltaX;\n this.touchDeltaX = 0; // swipe left\n\n if (direction > 0) {\n this.prev();\n } // swipe right\n\n\n if (direction < 0) {\n this.next();\n }\n };\n\n _proto._addEventListeners = function _addEventListeners() {\n var _this2 = this;\n\n if (this._config.keyboard) {\n $__default['default'](this._element).on(EVENT_KEYDOWN, function (event) {\n return _this2._keydown(event);\n });\n }\n\n if (this._config.pause === 'hover') {\n $__default['default'](this._element).on(EVENT_MOUSEENTER, function (event) {\n return _this2.pause(event);\n }).on(EVENT_MOUSELEAVE, function (event) {\n return _this2.cycle(event);\n });\n }\n\n if (this._config.touch) {\n this._addTouchEventListeners();\n }\n };\n\n _proto._addTouchEventListeners = function _addTouchEventListeners() {\n var _this3 = this;\n\n if (!this._touchSupported) {\n return;\n }\n\n var start = function start(event) {\n if (_this3._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {\n _this3.touchStartX = event.originalEvent.clientX;\n } else if (!_this3._pointerEvent) {\n _this3.touchStartX = event.originalEvent.touches[0].clientX;\n }\n };\n\n var move = function move(event) {\n // ensure swiping with one touch and not pinching\n if (event.originalEvent.touches && event.originalEvent.touches.length > 1) {\n _this3.touchDeltaX = 0;\n } else {\n _this3.touchDeltaX = event.originalEvent.touches[0].clientX - _this3.touchStartX;\n }\n };\n\n var end = function end(event) {\n if (_this3._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {\n _this3.touchDeltaX = event.originalEvent.clientX - _this3.touchStartX;\n }\n\n _this3._handleSwipe();\n\n if (_this3._config.pause === 'hover') {\n // If it's a touch-enabled device, mouseenter/leave are fired as\n // part of the mouse compatibility events on first tap - the carousel\n // would stop cycling until user tapped out of it;\n // here, we listen for touchend, explicitly pause the carousel\n // (as if it's the second time we tap on it, mouseenter compat event\n // is NOT fired) and after a timeout (to allow for mouse compatibility\n // events to fire) we explicitly restart cycling\n _this3.pause();\n\n if (_this3.touchTimeout) {\n clearTimeout(_this3.touchTimeout);\n }\n\n _this3.touchTimeout = setTimeout(function (event) {\n return _this3.cycle(event);\n }, TOUCHEVENT_COMPAT_WAIT + _this3._config.interval);\n }\n };\n\n $__default['default'](this._element.querySelectorAll(SELECTOR_ITEM_IMG)).on(EVENT_DRAG_START, function (e) {\n return e.preventDefault();\n });\n\n if (this._pointerEvent) {\n $__default['default'](this._element).on(EVENT_POINTERDOWN, function (event) {\n return start(event);\n });\n $__default['default'](this._element).on(EVENT_POINTERUP, function (event) {\n return end(event);\n });\n\n this._element.classList.add(CLASS_NAME_POINTER_EVENT);\n } else {\n $__default['default'](this._element).on(EVENT_TOUCHSTART, function (event) {\n return start(event);\n });\n $__default['default'](this._element).on(EVENT_TOUCHMOVE, function (event) {\n return move(event);\n });\n $__default['default'](this._element).on(EVENT_TOUCHEND, function (event) {\n return end(event);\n });\n }\n };\n\n _proto._keydown = function _keydown(event) {\n if (/input|textarea/i.test(event.target.tagName)) {\n return;\n }\n\n switch (event.which) {\n case ARROW_LEFT_KEYCODE:\n event.preventDefault();\n this.prev();\n break;\n\n case ARROW_RIGHT_KEYCODE:\n event.preventDefault();\n this.next();\n break;\n }\n };\n\n _proto._getItemIndex = function _getItemIndex(element) {\n this._items = element && element.parentNode ? [].slice.call(element.parentNode.querySelectorAll(SELECTOR_ITEM)) : [];\n return this._items.indexOf(element);\n };\n\n _proto._getItemByDirection = function _getItemByDirection(direction, activeElement) {\n var isNextDirection = direction === DIRECTION_NEXT;\n var isPrevDirection = direction === DIRECTION_PREV;\n\n var activeIndex = this._getItemIndex(activeElement);\n\n var lastItemIndex = this._items.length - 1;\n var isGoingToWrap = isPrevDirection && activeIndex === 0 || isNextDirection && activeIndex === lastItemIndex;\n\n if (isGoingToWrap && !this._config.wrap) {\n return activeElement;\n }\n\n var delta = direction === DIRECTION_PREV ? -1 : 1;\n var itemIndex = (activeIndex + delta) % this._items.length;\n return itemIndex === -1 ? this._items[this._items.length - 1] : this._items[itemIndex];\n };\n\n _proto._triggerSlideEvent = function _triggerSlideEvent(relatedTarget, eventDirectionName) {\n var targetIndex = this._getItemIndex(relatedTarget);\n\n var fromIndex = this._getItemIndex(this._element.querySelector(SELECTOR_ACTIVE_ITEM));\n\n var slideEvent = $__default['default'].Event(EVENT_SLIDE, {\n relatedTarget: relatedTarget,\n direction: eventDirectionName,\n from: fromIndex,\n to: targetIndex\n });\n $__default['default'](this._element).trigger(slideEvent);\n return slideEvent;\n };\n\n _proto._setActiveIndicatorElement = function _setActiveIndicatorElement(element) {\n if (this._indicatorsElement) {\n var indicators = [].slice.call(this._indicatorsElement.querySelectorAll(SELECTOR_ACTIVE$1));\n $__default['default'](indicators).removeClass(CLASS_NAME_ACTIVE$1);\n\n var nextIndicator = this._indicatorsElement.children[this._getItemIndex(element)];\n\n if (nextIndicator) {\n $__default['default'](nextIndicator).addClass(CLASS_NAME_ACTIVE$1);\n }\n }\n };\n\n _proto._updateInterval = function _updateInterval() {\n var element = this._activeElement || this._element.querySelector(SELECTOR_ACTIVE_ITEM);\n\n if (!element) {\n return;\n }\n\n var elementInterval = parseInt(element.getAttribute('data-interval'), 10);\n\n if (elementInterval) {\n this._config.defaultInterval = this._config.defaultInterval || this._config.interval;\n this._config.interval = elementInterval;\n } else {\n this._config.interval = this._config.defaultInterval || this._config.interval;\n }\n };\n\n _proto._slide = function _slide(direction, element) {\n var _this4 = this;\n\n var activeElement = this._element.querySelector(SELECTOR_ACTIVE_ITEM);\n\n var activeElementIndex = this._getItemIndex(activeElement);\n\n var nextElement = element || activeElement && this._getItemByDirection(direction, activeElement);\n\n var nextElementIndex = this._getItemIndex(nextElement);\n\n var isCycling = Boolean(this._interval);\n var directionalClassName;\n var orderClassName;\n var eventDirectionName;\n\n if (direction === DIRECTION_NEXT) {\n directionalClassName = CLASS_NAME_LEFT;\n orderClassName = CLASS_NAME_NEXT;\n eventDirectionName = DIRECTION_LEFT;\n } else {\n directionalClassName = CLASS_NAME_RIGHT;\n orderClassName = CLASS_NAME_PREV;\n eventDirectionName = DIRECTION_RIGHT;\n }\n\n if (nextElement && $__default['default'](nextElement).hasClass(CLASS_NAME_ACTIVE$1)) {\n this._isSliding = false;\n return;\n }\n\n var slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName);\n\n if (slideEvent.isDefaultPrevented()) {\n return;\n }\n\n if (!activeElement || !nextElement) {\n // Some weirdness is happening, so we bail\n return;\n }\n\n this._isSliding = true;\n\n if (isCycling) {\n this.pause();\n }\n\n this._setActiveIndicatorElement(nextElement);\n\n this._activeElement = nextElement;\n var slidEvent = $__default['default'].Event(EVENT_SLID, {\n relatedTarget: nextElement,\n direction: eventDirectionName,\n from: activeElementIndex,\n to: nextElementIndex\n });\n\n if ($__default['default'](this._element).hasClass(CLASS_NAME_SLIDE)) {\n $__default['default'](nextElement).addClass(orderClassName);\n Util.reflow(nextElement);\n $__default['default'](activeElement).addClass(directionalClassName);\n $__default['default'](nextElement).addClass(directionalClassName);\n var transitionDuration = Util.getTransitionDurationFromElement(activeElement);\n $__default['default'](activeElement).one(Util.TRANSITION_END, function () {\n $__default['default'](nextElement).removeClass(directionalClassName + \" \" + orderClassName).addClass(CLASS_NAME_ACTIVE$1);\n $__default['default'](activeElement).removeClass(CLASS_NAME_ACTIVE$1 + \" \" + orderClassName + \" \" + directionalClassName);\n _this4._isSliding = false;\n setTimeout(function () {\n return $__default['default'](_this4._element).trigger(slidEvent);\n }, 0);\n }).emulateTransitionEnd(transitionDuration);\n } else {\n $__default['default'](activeElement).removeClass(CLASS_NAME_ACTIVE$1);\n $__default['default'](nextElement).addClass(CLASS_NAME_ACTIVE$1);\n this._isSliding = false;\n $__default['default'](this._element).trigger(slidEvent);\n }\n\n if (isCycling) {\n this.cycle();\n }\n } // Static\n ;\n\n Carousel._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var data = $__default['default'](this).data(DATA_KEY$2);\n\n var _config = _extends({}, Default, $__default['default'](this).data());\n\n if (typeof config === 'object') {\n _config = _extends({}, _config, config);\n }\n\n var action = typeof config === 'string' ? config : _config.slide;\n\n if (!data) {\n data = new Carousel(this, _config);\n $__default['default'](this).data(DATA_KEY$2, data);\n }\n\n if (typeof config === 'number') {\n data.to(config);\n } else if (typeof action === 'string') {\n if (typeof data[action] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + action + \"\\\"\");\n }\n\n data[action]();\n } else if (_config.interval && _config.ride) {\n data.pause();\n data.cycle();\n }\n });\n };\n\n Carousel._dataApiClickHandler = function _dataApiClickHandler(event) {\n var selector = Util.getSelectorFromElement(this);\n\n if (!selector) {\n return;\n }\n\n var target = $__default['default'](selector)[0];\n\n if (!target || !$__default['default'](target).hasClass(CLASS_NAME_CAROUSEL)) {\n return;\n }\n\n var config = _extends({}, $__default['default'](target).data(), $__default['default'](this).data());\n\n var slideIndex = this.getAttribute('data-slide-to');\n\n if (slideIndex) {\n config.interval = false;\n }\n\n Carousel._jQueryInterface.call($__default['default'](target), config);\n\n if (slideIndex) {\n $__default['default'](target).data(DATA_KEY$2).to(slideIndex);\n }\n\n event.preventDefault();\n };\n\n _createClass(Carousel, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$2;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default;\n }\n }]);\n\n return Carousel;\n }();\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n\n $__default['default'](document).on(EVENT_CLICK_DATA_API$2, SELECTOR_DATA_SLIDE, Carousel._dataApiClickHandler);\n $__default['default'](window).on(EVENT_LOAD_DATA_API$1, function () {\n var carousels = [].slice.call(document.querySelectorAll(SELECTOR_DATA_RIDE));\n\n for (var i = 0, len = carousels.length; i < len; i++) {\n var $carousel = $__default['default'](carousels[i]);\n\n Carousel._jQueryInterface.call($carousel, $carousel.data());\n }\n });\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $__default['default'].fn[NAME$2] = Carousel._jQueryInterface;\n $__default['default'].fn[NAME$2].Constructor = Carousel;\n\n $__default['default'].fn[NAME$2].noConflict = function () {\n $__default['default'].fn[NAME$2] = JQUERY_NO_CONFLICT$2;\n return Carousel._jQueryInterface;\n };\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n var NAME$3 = 'collapse';\n var VERSION$3 = '4.6.0';\n var DATA_KEY$3 = 'bs.collapse';\n var EVENT_KEY$3 = \".\" + DATA_KEY$3;\n var DATA_API_KEY$3 = '.data-api';\n var JQUERY_NO_CONFLICT$3 = $__default['default'].fn[NAME$3];\n var Default$1 = {\n toggle: true,\n parent: ''\n };\n var DefaultType$1 = {\n toggle: 'boolean',\n parent: '(string|element)'\n };\n var EVENT_SHOW = \"show\" + EVENT_KEY$3;\n var EVENT_SHOWN = \"shown\" + EVENT_KEY$3;\n var EVENT_HIDE = \"hide\" + EVENT_KEY$3;\n var EVENT_HIDDEN = \"hidden\" + EVENT_KEY$3;\n var EVENT_CLICK_DATA_API$3 = \"click\" + EVENT_KEY$3 + DATA_API_KEY$3;\n var CLASS_NAME_SHOW$1 = 'show';\n var CLASS_NAME_COLLAPSE = 'collapse';\n var CLASS_NAME_COLLAPSING = 'collapsing';\n var CLASS_NAME_COLLAPSED = 'collapsed';\n var DIMENSION_WIDTH = 'width';\n var DIMENSION_HEIGHT = 'height';\n var SELECTOR_ACTIVES = '.show, .collapsing';\n var SELECTOR_DATA_TOGGLE$1 = '[data-toggle=\"collapse\"]';\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n var Collapse = /*#__PURE__*/function () {\n function Collapse(element, config) {\n this._isTransitioning = false;\n this._element = element;\n this._config = this._getConfig(config);\n this._triggerArray = [].slice.call(document.querySelectorAll(\"[data-toggle=\\\"collapse\\\"][href=\\\"#\" + element.id + \"\\\"],\" + (\"[data-toggle=\\\"collapse\\\"][data-target=\\\"#\" + element.id + \"\\\"]\")));\n var toggleList = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE$1));\n\n for (var i = 0, len = toggleList.length; i < len; i++) {\n var elem = toggleList[i];\n var selector = Util.getSelectorFromElement(elem);\n var filterElement = [].slice.call(document.querySelectorAll(selector)).filter(function (foundElem) {\n return foundElem === element;\n });\n\n if (selector !== null && filterElement.length > 0) {\n this._selector = selector;\n\n this._triggerArray.push(elem);\n }\n }\n\n this._parent = this._config.parent ? this._getParent() : null;\n\n if (!this._config.parent) {\n this._addAriaAndCollapsedClass(this._element, this._triggerArray);\n }\n\n if (this._config.toggle) {\n this.toggle();\n }\n } // Getters\n\n\n var _proto = Collapse.prototype;\n\n // Public\n _proto.toggle = function toggle() {\n if ($__default['default'](this._element).hasClass(CLASS_NAME_SHOW$1)) {\n this.hide();\n } else {\n this.show();\n }\n };\n\n _proto.show = function show() {\n var _this = this;\n\n if (this._isTransitioning || $__default['default'](this._element).hasClass(CLASS_NAME_SHOW$1)) {\n return;\n }\n\n var actives;\n var activesData;\n\n if (this._parent) {\n actives = [].slice.call(this._parent.querySelectorAll(SELECTOR_ACTIVES)).filter(function (elem) {\n if (typeof _this._config.parent === 'string') {\n return elem.getAttribute('data-parent') === _this._config.parent;\n }\n\n return elem.classList.contains(CLASS_NAME_COLLAPSE);\n });\n\n if (actives.length === 0) {\n actives = null;\n }\n }\n\n if (actives) {\n activesData = $__default['default'](actives).not(this._selector).data(DATA_KEY$3);\n\n if (activesData && activesData._isTransitioning) {\n return;\n }\n }\n\n var startEvent = $__default['default'].Event(EVENT_SHOW);\n $__default['default'](this._element).trigger(startEvent);\n\n if (startEvent.isDefaultPrevented()) {\n return;\n }\n\n if (actives) {\n Collapse._jQueryInterface.call($__default['default'](actives).not(this._selector), 'hide');\n\n if (!activesData) {\n $__default['default'](actives).data(DATA_KEY$3, null);\n }\n }\n\n var dimension = this._getDimension();\n\n $__default['default'](this._element).removeClass(CLASS_NAME_COLLAPSE).addClass(CLASS_NAME_COLLAPSING);\n this._element.style[dimension] = 0;\n\n if (this._triggerArray.length) {\n $__default['default'](this._triggerArray).removeClass(CLASS_NAME_COLLAPSED).attr('aria-expanded', true);\n }\n\n this.setTransitioning(true);\n\n var complete = function complete() {\n $__default['default'](_this._element).removeClass(CLASS_NAME_COLLAPSING).addClass(CLASS_NAME_COLLAPSE + \" \" + CLASS_NAME_SHOW$1);\n _this._element.style[dimension] = '';\n\n _this.setTransitioning(false);\n\n $__default['default'](_this._element).trigger(EVENT_SHOWN);\n };\n\n var capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);\n var scrollSize = \"scroll\" + capitalizedDimension;\n var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n $__default['default'](this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n this._element.style[dimension] = this._element[scrollSize] + \"px\";\n };\n\n _proto.hide = function hide() {\n var _this2 = this;\n\n if (this._isTransitioning || !$__default['default'](this._element).hasClass(CLASS_NAME_SHOW$1)) {\n return;\n }\n\n var startEvent = $__default['default'].Event(EVENT_HIDE);\n $__default['default'](this._element).trigger(startEvent);\n\n if (startEvent.isDefaultPrevented()) {\n return;\n }\n\n var dimension = this._getDimension();\n\n this._element.style[dimension] = this._element.getBoundingClientRect()[dimension] + \"px\";\n Util.reflow(this._element);\n $__default['default'](this._element).addClass(CLASS_NAME_COLLAPSING).removeClass(CLASS_NAME_COLLAPSE + \" \" + CLASS_NAME_SHOW$1);\n var triggerArrayLength = this._triggerArray.length;\n\n if (triggerArrayLength > 0) {\n for (var i = 0; i < triggerArrayLength; i++) {\n var trigger = this._triggerArray[i];\n var selector = Util.getSelectorFromElement(trigger);\n\n if (selector !== null) {\n var $elem = $__default['default']([].slice.call(document.querySelectorAll(selector)));\n\n if (!$elem.hasClass(CLASS_NAME_SHOW$1)) {\n $__default['default'](trigger).addClass(CLASS_NAME_COLLAPSED).attr('aria-expanded', false);\n }\n }\n }\n }\n\n this.setTransitioning(true);\n\n var complete = function complete() {\n _this2.setTransitioning(false);\n\n $__default['default'](_this2._element).removeClass(CLASS_NAME_COLLAPSING).addClass(CLASS_NAME_COLLAPSE).trigger(EVENT_HIDDEN);\n };\n\n this._element.style[dimension] = '';\n var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n $__default['default'](this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n };\n\n _proto.setTransitioning = function setTransitioning(isTransitioning) {\n this._isTransitioning = isTransitioning;\n };\n\n _proto.dispose = function dispose() {\n $__default['default'].removeData(this._element, DATA_KEY$3);\n this._config = null;\n this._parent = null;\n this._element = null;\n this._triggerArray = null;\n this._isTransitioning = null;\n } // Private\n ;\n\n _proto._getConfig = function _getConfig(config) {\n config = _extends({}, Default$1, config);\n config.toggle = Boolean(config.toggle); // Coerce string values\n\n Util.typeCheckConfig(NAME$3, config, DefaultType$1);\n return config;\n };\n\n _proto._getDimension = function _getDimension() {\n var hasWidth = $__default['default'](this._element).hasClass(DIMENSION_WIDTH);\n return hasWidth ? DIMENSION_WIDTH : DIMENSION_HEIGHT;\n };\n\n _proto._getParent = function _getParent() {\n var _this3 = this;\n\n var parent;\n\n if (Util.isElement(this._config.parent)) {\n parent = this._config.parent; // It's a jQuery object\n\n if (typeof this._config.parent.jquery !== 'undefined') {\n parent = this._config.parent[0];\n }\n } else {\n parent = document.querySelector(this._config.parent);\n }\n\n var selector = \"[data-toggle=\\\"collapse\\\"][data-parent=\\\"\" + this._config.parent + \"\\\"]\";\n var children = [].slice.call(parent.querySelectorAll(selector));\n $__default['default'](children).each(function (i, element) {\n _this3._addAriaAndCollapsedClass(Collapse._getTargetFromElement(element), [element]);\n });\n return parent;\n };\n\n _proto._addAriaAndCollapsedClass = function _addAriaAndCollapsedClass(element, triggerArray) {\n var isOpen = $__default['default'](element).hasClass(CLASS_NAME_SHOW$1);\n\n if (triggerArray.length) {\n $__default['default'](triggerArray).toggleClass(CLASS_NAME_COLLAPSED, !isOpen).attr('aria-expanded', isOpen);\n }\n } // Static\n ;\n\n Collapse._getTargetFromElement = function _getTargetFromElement(element) {\n var selector = Util.getSelectorFromElement(element);\n return selector ? document.querySelector(selector) : null;\n };\n\n Collapse._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var $element = $__default['default'](this);\n var data = $element.data(DATA_KEY$3);\n\n var _config = _extends({}, Default$1, $element.data(), typeof config === 'object' && config ? config : {});\n\n if (!data && _config.toggle && typeof config === 'string' && /show|hide/.test(config)) {\n _config.toggle = false;\n }\n\n if (!data) {\n data = new Collapse(this, _config);\n $element.data(DATA_KEY$3, data);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n\n data[config]();\n }\n });\n };\n\n _createClass(Collapse, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$3;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default$1;\n }\n }]);\n\n return Collapse;\n }();\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n\n $__default['default'](document).on(EVENT_CLICK_DATA_API$3, SELECTOR_DATA_TOGGLE$1, function (event) {\n // preventDefault only for <a> elements (which change the URL) not inside the collapsible element\n if (event.currentTarget.tagName === 'A') {\n event.preventDefault();\n }\n\n var $trigger = $__default['default'](this);\n var selector = Util.getSelectorFromElement(this);\n var selectors = [].slice.call(document.querySelectorAll(selector));\n $__default['default'](selectors).each(function () {\n var $target = $__default['default'](this);\n var data = $target.data(DATA_KEY$3);\n var config = data ? 'toggle' : $trigger.data();\n\n Collapse._jQueryInterface.call($target, config);\n });\n });\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $__default['default'].fn[NAME$3] = Collapse._jQueryInterface;\n $__default['default'].fn[NAME$3].Constructor = Collapse;\n\n $__default['default'].fn[NAME$3].noConflict = function () {\n $__default['default'].fn[NAME$3] = JQUERY_NO_CONFLICT$3;\n return Collapse._jQueryInterface;\n };\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n var NAME$4 = 'dropdown';\n var VERSION$4 = '4.6.0';\n var DATA_KEY$4 = 'bs.dropdown';\n var EVENT_KEY$4 = \".\" + DATA_KEY$4;\n var DATA_API_KEY$4 = '.data-api';\n var JQUERY_NO_CONFLICT$4 = $__default['default'].fn[NAME$4];\n var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key\n\n var SPACE_KEYCODE = 32; // KeyboardEvent.which value for space key\n\n var TAB_KEYCODE = 9; // KeyboardEvent.which value for tab key\n\n var ARROW_UP_KEYCODE = 38; // KeyboardEvent.which value for up arrow key\n\n var ARROW_DOWN_KEYCODE = 40; // KeyboardEvent.which value for down arrow key\n\n var RIGHT_MOUSE_BUTTON_WHICH = 3; // MouseEvent.which value for the right button (assuming a right-handed mouse)\n\n var REGEXP_KEYDOWN = new RegExp(ARROW_UP_KEYCODE + \"|\" + ARROW_DOWN_KEYCODE + \"|\" + ESCAPE_KEYCODE);\n var EVENT_HIDE$1 = \"hide\" + EVENT_KEY$4;\n var EVENT_HIDDEN$1 = \"hidden\" + EVENT_KEY$4;\n var EVENT_SHOW$1 = \"show\" + EVENT_KEY$4;\n var EVENT_SHOWN$1 = \"shown\" + EVENT_KEY$4;\n var EVENT_CLICK = \"click\" + EVENT_KEY$4;\n var EVENT_CLICK_DATA_API$4 = \"click\" + EVENT_KEY$4 + DATA_API_KEY$4;\n var EVENT_KEYDOWN_DATA_API = \"keydown\" + EVENT_KEY$4 + DATA_API_KEY$4;\n var EVENT_KEYUP_DATA_API = \"keyup\" + EVENT_KEY$4 + DATA_API_KEY$4;\n var CLASS_NAME_DISABLED = 'disabled';\n var CLASS_NAME_SHOW$2 = 'show';\n var CLASS_NAME_DROPUP = 'dropup';\n var CLASS_NAME_DROPRIGHT = 'dropright';\n var CLASS_NAME_DROPLEFT = 'dropleft';\n var CLASS_NAME_MENURIGHT = 'dropdown-menu-right';\n var CLASS_NAME_POSITION_STATIC = 'position-static';\n var SELECTOR_DATA_TOGGLE$2 = '[data-toggle=\"dropdown\"]';\n var SELECTOR_FORM_CHILD = '.dropdown form';\n var SELECTOR_MENU = '.dropdown-menu';\n var SELECTOR_NAVBAR_NAV = '.navbar-nav';\n var SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)';\n var PLACEMENT_TOP = 'top-start';\n var PLACEMENT_TOPEND = 'top-end';\n var PLACEMENT_BOTTOM = 'bottom-start';\n var PLACEMENT_BOTTOMEND = 'bottom-end';\n var PLACEMENT_RIGHT = 'right-start';\n var PLACEMENT_LEFT = 'left-start';\n var Default$2 = {\n offset: 0,\n flip: true,\n boundary: 'scrollParent',\n reference: 'toggle',\n display: 'dynamic',\n popperConfig: null\n };\n var DefaultType$2 = {\n offset: '(number|string|function)',\n flip: 'boolean',\n boundary: '(string|element)',\n reference: '(string|element)',\n display: 'string',\n popperConfig: '(null|object)'\n };\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n var Dropdown = /*#__PURE__*/function () {\n function Dropdown(element, config) {\n this._element = element;\n this._popper = null;\n this._config = this._getConfig(config);\n this._menu = this._getMenuElement();\n this._inNavbar = this._detectNavbar();\n\n this._addEventListeners();\n } // Getters\n\n\n var _proto = Dropdown.prototype;\n\n // Public\n _proto.toggle = function toggle() {\n if (this._element.disabled || $__default['default'](this._element).hasClass(CLASS_NAME_DISABLED)) {\n return;\n }\n\n var isActive = $__default['default'](this._menu).hasClass(CLASS_NAME_SHOW$2);\n\n Dropdown._clearMenus();\n\n if (isActive) {\n return;\n }\n\n this.show(true);\n };\n\n _proto.show = function show(usePopper) {\n if (usePopper === void 0) {\n usePopper = false;\n }\n\n if (this._element.disabled || $__default['default'](this._element).hasClass(CLASS_NAME_DISABLED) || $__default['default'](this._menu).hasClass(CLASS_NAME_SHOW$2)) {\n return;\n }\n\n var relatedTarget = {\n relatedTarget: this._element\n };\n var showEvent = $__default['default'].Event(EVENT_SHOW$1, relatedTarget);\n\n var parent = Dropdown._getParentFromElement(this._element);\n\n $__default['default'](parent).trigger(showEvent);\n\n if (showEvent.isDefaultPrevented()) {\n return;\n } // Totally disable Popper for Dropdowns in Navbar\n\n\n if (!this._inNavbar && usePopper) {\n /**\n * Check for Popper dependency\n * Popper - https://popper.js.org\n */\n if (typeof Popper__default['default'] === 'undefined') {\n throw new TypeError('Bootstrap\\'s dropdowns require Popper (https://popper.js.org)');\n }\n\n var referenceElement = this._element;\n\n if (this._config.reference === 'parent') {\n referenceElement = parent;\n } else if (Util.isElement(this._config.reference)) {\n referenceElement = this._config.reference; // Check if it's jQuery element\n\n if (typeof this._config.reference.jquery !== 'undefined') {\n referenceElement = this._config.reference[0];\n }\n } // If boundary is not `scrollParent`, then set position to `static`\n // to allow the menu to \"escape\" the scroll parent's boundaries\n // https://github.com/twbs/bootstrap/issues/24251\n\n\n if (this._config.boundary !== 'scrollParent') {\n $__default['default'](parent).addClass(CLASS_NAME_POSITION_STATIC);\n }\n\n this._popper = new Popper__default['default'](referenceElement, this._menu, this._getPopperConfig());\n } // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n\n\n if ('ontouchstart' in document.documentElement && $__default['default'](parent).closest(SELECTOR_NAVBAR_NAV).length === 0) {\n $__default['default'](document.body).children().on('mouseover', null, $__default['default'].noop);\n }\n\n this._element.focus();\n\n this._element.setAttribute('aria-expanded', true);\n\n $__default['default'](this._menu).toggleClass(CLASS_NAME_SHOW$2);\n $__default['default'](parent).toggleClass(CLASS_NAME_SHOW$2).trigger($__default['default'].Event(EVENT_SHOWN$1, relatedTarget));\n };\n\n _proto.hide = function hide() {\n if (this._element.disabled || $__default['default'](this._element).hasClass(CLASS_NAME_DISABLED) || !$__default['default'](this._menu).hasClass(CLASS_NAME_SHOW$2)) {\n return;\n }\n\n var relatedTarget = {\n relatedTarget: this._element\n };\n var hideEvent = $__default['default'].Event(EVENT_HIDE$1, relatedTarget);\n\n var parent = Dropdown._getParentFromElement(this._element);\n\n $__default['default'](parent).trigger(hideEvent);\n\n if (hideEvent.isDefaultPrevented()) {\n return;\n }\n\n if (this._popper) {\n this._popper.destroy();\n }\n\n $__default['default'](this._menu).toggleClass(CLASS_NAME_SHOW$2);\n $__default['default'](parent).toggleClass(CLASS_NAME_SHOW$2).trigger($__default['default'].Event(EVENT_HIDDEN$1, relatedTarget));\n };\n\n _proto.dispose = function dispose() {\n $__default['default'].removeData(this._element, DATA_KEY$4);\n $__default['default'](this._element).off(EVENT_KEY$4);\n this._element = null;\n this._menu = null;\n\n if (this._popper !== null) {\n this._popper.destroy();\n\n this._popper = null;\n }\n };\n\n _proto.update = function update() {\n this._inNavbar = this._detectNavbar();\n\n if (this._popper !== null) {\n this._popper.scheduleUpdate();\n }\n } // Private\n ;\n\n _proto._addEventListeners = function _addEventListeners() {\n var _this = this;\n\n $__default['default'](this._element).on(EVENT_CLICK, function (event) {\n event.preventDefault();\n event.stopPropagation();\n\n _this.toggle();\n });\n };\n\n _proto._getConfig = function _getConfig(config) {\n config = _extends({}, this.constructor.Default, $__default['default'](this._element).data(), config);\n Util.typeCheckConfig(NAME$4, config, this.constructor.DefaultType);\n return config;\n };\n\n _proto._getMenuElement = function _getMenuElement() {\n if (!this._menu) {\n var parent = Dropdown._getParentFromElement(this._element);\n\n if (parent) {\n this._menu = parent.querySelector(SELECTOR_MENU);\n }\n }\n\n return this._menu;\n };\n\n _proto._getPlacement = function _getPlacement() {\n var $parentDropdown = $__default['default'](this._element.parentNode);\n var placement = PLACEMENT_BOTTOM; // Handle dropup\n\n if ($parentDropdown.hasClass(CLASS_NAME_DROPUP)) {\n placement = $__default['default'](this._menu).hasClass(CLASS_NAME_MENURIGHT) ? PLACEMENT_TOPEND : PLACEMENT_TOP;\n } else if ($parentDropdown.hasClass(CLASS_NAME_DROPRIGHT)) {\n placement = PLACEMENT_RIGHT;\n } else if ($parentDropdown.hasClass(CLASS_NAME_DROPLEFT)) {\n placement = PLACEMENT_LEFT;\n } else if ($__default['default'](this._menu).hasClass(CLASS_NAME_MENURIGHT)) {\n placement = PLACEMENT_BOTTOMEND;\n }\n\n return placement;\n };\n\n _proto._detectNavbar = function _detectNavbar() {\n return $__default['default'](this._element).closest('.navbar').length > 0;\n };\n\n _proto._getOffset = function _getOffset() {\n var _this2 = this;\n\n var offset = {};\n\n if (typeof this._config.offset === 'function') {\n offset.fn = function (data) {\n data.offsets = _extends({}, data.offsets, _this2._config.offset(data.offsets, _this2._element) || {});\n return data;\n };\n } else {\n offset.offset = this._config.offset;\n }\n\n return offset;\n };\n\n _proto._getPopperConfig = function _getPopperConfig() {\n var popperConfig = {\n placement: this._getPlacement(),\n modifiers: {\n offset: this._getOffset(),\n flip: {\n enabled: this._config.flip\n },\n preventOverflow: {\n boundariesElement: this._config.boundary\n }\n }\n }; // Disable Popper if we have a static display\n\n if (this._config.display === 'static') {\n popperConfig.modifiers.applyStyle = {\n enabled: false\n };\n }\n\n return _extends({}, popperConfig, this._config.popperConfig);\n } // Static\n ;\n\n Dropdown._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var data = $__default['default'](this).data(DATA_KEY$4);\n\n var _config = typeof config === 'object' ? config : null;\n\n if (!data) {\n data = new Dropdown(this, _config);\n $__default['default'](this).data(DATA_KEY$4, data);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n\n data[config]();\n }\n });\n };\n\n Dropdown._clearMenus = function _clearMenus(event) {\n if (event && (event.which === RIGHT_MOUSE_BUTTON_WHICH || event.type === 'keyup' && event.which !== TAB_KEYCODE)) {\n return;\n }\n\n var toggles = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE$2));\n\n for (var i = 0, len = toggles.length; i < len; i++) {\n var parent = Dropdown._getParentFromElement(toggles[i]);\n\n var context = $__default['default'](toggles[i]).data(DATA_KEY$4);\n var relatedTarget = {\n relatedTarget: toggles[i]\n };\n\n if (event && event.type === 'click') {\n relatedTarget.clickEvent = event;\n }\n\n if (!context) {\n continue;\n }\n\n var dropdownMenu = context._menu;\n\n if (!$__default['default'](parent).hasClass(CLASS_NAME_SHOW$2)) {\n continue;\n }\n\n if (event && (event.type === 'click' && /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.which === TAB_KEYCODE) && $__default['default'].contains(parent, event.target)) {\n continue;\n }\n\n var hideEvent = $__default['default'].Event(EVENT_HIDE$1, relatedTarget);\n $__default['default'](parent).trigger(hideEvent);\n\n if (hideEvent.isDefaultPrevented()) {\n continue;\n } // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n\n\n if ('ontouchstart' in document.documentElement) {\n $__default['default'](document.body).children().off('mouseover', null, $__default['default'].noop);\n }\n\n toggles[i].setAttribute('aria-expanded', 'false');\n\n if (context._popper) {\n context._popper.destroy();\n }\n\n $__default['default'](dropdownMenu).removeClass(CLASS_NAME_SHOW$2);\n $__default['default'](parent).removeClass(CLASS_NAME_SHOW$2).trigger($__default['default'].Event(EVENT_HIDDEN$1, relatedTarget));\n }\n };\n\n Dropdown._getParentFromElement = function _getParentFromElement(element) {\n var parent;\n var selector = Util.getSelectorFromElement(element);\n\n if (selector) {\n parent = document.querySelector(selector);\n }\n\n return parent || element.parentNode;\n } // eslint-disable-next-line complexity\n ;\n\n Dropdown._dataApiKeydownHandler = function _dataApiKeydownHandler(event) {\n // If not input/textarea:\n // - And not a key in REGEXP_KEYDOWN => not a dropdown command\n // If input/textarea:\n // - If space key => not a dropdown command\n // - If key is other than escape\n // - If key is not up or down => not a dropdown command\n // - If trigger inside the menu => not a dropdown command\n if (/input|textarea/i.test(event.target.tagName) ? event.which === SPACE_KEYCODE || event.which !== ESCAPE_KEYCODE && (event.which !== ARROW_DOWN_KEYCODE && event.which !== ARROW_UP_KEYCODE || $__default['default'](event.target).closest(SELECTOR_MENU).length) : !REGEXP_KEYDOWN.test(event.which)) {\n return;\n }\n\n if (this.disabled || $__default['default'](this).hasClass(CLASS_NAME_DISABLED)) {\n return;\n }\n\n var parent = Dropdown._getParentFromElement(this);\n\n var isActive = $__default['default'](parent).hasClass(CLASS_NAME_SHOW$2);\n\n if (!isActive && event.which === ESCAPE_KEYCODE) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n\n if (!isActive || event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE) {\n if (event.which === ESCAPE_KEYCODE) {\n $__default['default'](parent.querySelector(SELECTOR_DATA_TOGGLE$2)).trigger('focus');\n }\n\n $__default['default'](this).trigger('click');\n return;\n }\n\n var items = [].slice.call(parent.querySelectorAll(SELECTOR_VISIBLE_ITEMS)).filter(function (item) {\n return $__default['default'](item).is(':visible');\n });\n\n if (items.length === 0) {\n return;\n }\n\n var index = items.indexOf(event.target);\n\n if (event.which === ARROW_UP_KEYCODE && index > 0) {\n // Up\n index--;\n }\n\n if (event.which === ARROW_DOWN_KEYCODE && index < items.length - 1) {\n // Down\n index++;\n }\n\n if (index < 0) {\n index = 0;\n }\n\n items[index].focus();\n };\n\n _createClass(Dropdown, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$4;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default$2;\n }\n }, {\n key: \"DefaultType\",\n get: function get() {\n return DefaultType$2;\n }\n }]);\n\n return Dropdown;\n }();\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n\n $__default['default'](document).on(EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE$2, Dropdown._dataApiKeydownHandler).on(EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown._dataApiKeydownHandler).on(EVENT_CLICK_DATA_API$4 + \" \" + EVENT_KEYUP_DATA_API, Dropdown._clearMenus).on(EVENT_CLICK_DATA_API$4, SELECTOR_DATA_TOGGLE$2, function (event) {\n event.preventDefault();\n event.stopPropagation();\n\n Dropdown._jQueryInterface.call($__default['default'](this), 'toggle');\n }).on(EVENT_CLICK_DATA_API$4, SELECTOR_FORM_CHILD, function (e) {\n e.stopPropagation();\n });\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $__default['default'].fn[NAME$4] = Dropdown._jQueryInterface;\n $__default['default'].fn[NAME$4].Constructor = Dropdown;\n\n $__default['default'].fn[NAME$4].noConflict = function () {\n $__default['default'].fn[NAME$4] = JQUERY_NO_CONFLICT$4;\n return Dropdown._jQueryInterface;\n };\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n var NAME$5 = 'modal';\n var VERSION$5 = '4.6.0';\n var DATA_KEY$5 = 'bs.modal';\n var EVENT_KEY$5 = \".\" + DATA_KEY$5;\n var DATA_API_KEY$5 = '.data-api';\n var JQUERY_NO_CONFLICT$5 = $__default['default'].fn[NAME$5];\n var ESCAPE_KEYCODE$1 = 27; // KeyboardEvent.which value for Escape (Esc) key\n\n var Default$3 = {\n backdrop: true,\n keyboard: true,\n focus: true,\n show: true\n };\n var DefaultType$3 = {\n backdrop: '(boolean|string)',\n keyboard: 'boolean',\n focus: 'boolean',\n show: 'boolean'\n };\n var EVENT_HIDE$2 = \"hide\" + EVENT_KEY$5;\n var EVENT_HIDE_PREVENTED = \"hidePrevented\" + EVENT_KEY$5;\n var EVENT_HIDDEN$2 = \"hidden\" + EVENT_KEY$5;\n var EVENT_SHOW$2 = \"show\" + EVENT_KEY$5;\n var EVENT_SHOWN$2 = \"shown\" + EVENT_KEY$5;\n var EVENT_FOCUSIN = \"focusin\" + EVENT_KEY$5;\n var EVENT_RESIZE = \"resize\" + EVENT_KEY$5;\n var EVENT_CLICK_DISMISS = \"click.dismiss\" + EVENT_KEY$5;\n var EVENT_KEYDOWN_DISMISS = \"keydown.dismiss\" + EVENT_KEY$5;\n var EVENT_MOUSEUP_DISMISS = \"mouseup.dismiss\" + EVENT_KEY$5;\n var EVENT_MOUSEDOWN_DISMISS = \"mousedown.dismiss\" + EVENT_KEY$5;\n var EVENT_CLICK_DATA_API$5 = \"click\" + EVENT_KEY$5 + DATA_API_KEY$5;\n var CLASS_NAME_SCROLLABLE = 'modal-dialog-scrollable';\n var CLASS_NAME_SCROLLBAR_MEASURER = 'modal-scrollbar-measure';\n var CLASS_NAME_BACKDROP = 'modal-backdrop';\n var CLASS_NAME_OPEN = 'modal-open';\n var CLASS_NAME_FADE$1 = 'fade';\n var CLASS_NAME_SHOW$3 = 'show';\n var CLASS_NAME_STATIC = 'modal-static';\n var SELECTOR_DIALOG = '.modal-dialog';\n var SELECTOR_MODAL_BODY = '.modal-body';\n var SELECTOR_DATA_TOGGLE$3 = '[data-toggle=\"modal\"]';\n var SELECTOR_DATA_DISMISS = '[data-dismiss=\"modal\"]';\n var SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top';\n var SELECTOR_STICKY_CONTENT = '.sticky-top';\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n var Modal = /*#__PURE__*/function () {\n function Modal(element, config) {\n this._config = this._getConfig(config);\n this._element = element;\n this._dialog = element.querySelector(SELECTOR_DIALOG);\n this._backdrop = null;\n this._isShown = false;\n this._isBodyOverflowing = false;\n this._ignoreBackdropClick = false;\n this._isTransitioning = false;\n this._scrollbarWidth = 0;\n } // Getters\n\n\n var _proto = Modal.prototype;\n\n // Public\n _proto.toggle = function toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget);\n };\n\n _proto.show = function show(relatedTarget) {\n var _this = this;\n\n if (this._isShown || this._isTransitioning) {\n return;\n }\n\n if ($__default['default'](this._element).hasClass(CLASS_NAME_FADE$1)) {\n this._isTransitioning = true;\n }\n\n var showEvent = $__default['default'].Event(EVENT_SHOW$2, {\n relatedTarget: relatedTarget\n });\n $__default['default'](this._element).trigger(showEvent);\n\n if (this._isShown || showEvent.isDefaultPrevented()) {\n return;\n }\n\n this._isShown = true;\n\n this._checkScrollbar();\n\n this._setScrollbar();\n\n this._adjustDialog();\n\n this._setEscapeEvent();\n\n this._setResizeEvent();\n\n $__default['default'](this._element).on(EVENT_CLICK_DISMISS, SELECTOR_DATA_DISMISS, function (event) {\n return _this.hide(event);\n });\n $__default['default'](this._dialog).on(EVENT_MOUSEDOWN_DISMISS, function () {\n $__default['default'](_this._element).one(EVENT_MOUSEUP_DISMISS, function (event) {\n if ($__default['default'](event.target).is(_this._element)) {\n _this._ignoreBackdropClick = true;\n }\n });\n });\n\n this._showBackdrop(function () {\n return _this._showElement(relatedTarget);\n });\n };\n\n _proto.hide = function hide(event) {\n var _this2 = this;\n\n if (event) {\n event.preventDefault();\n }\n\n if (!this._isShown || this._isTransitioning) {\n return;\n }\n\n var hideEvent = $__default['default'].Event(EVENT_HIDE$2);\n $__default['default'](this._element).trigger(hideEvent);\n\n if (!this._isShown || hideEvent.isDefaultPrevented()) {\n return;\n }\n\n this._isShown = false;\n var transition = $__default['default'](this._element).hasClass(CLASS_NAME_FADE$1);\n\n if (transition) {\n this._isTransitioning = true;\n }\n\n this._setEscapeEvent();\n\n this._setResizeEvent();\n\n $__default['default'](document).off(EVENT_FOCUSIN);\n $__default['default'](this._element).removeClass(CLASS_NAME_SHOW$3);\n $__default['default'](this._element).off(EVENT_CLICK_DISMISS);\n $__default['default'](this._dialog).off(EVENT_MOUSEDOWN_DISMISS);\n\n if (transition) {\n var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n $__default['default'](this._element).one(Util.TRANSITION_END, function (event) {\n return _this2._hideModal(event);\n }).emulateTransitionEnd(transitionDuration);\n } else {\n this._hideModal();\n }\n };\n\n _proto.dispose = function dispose() {\n [window, this._element, this._dialog].forEach(function (htmlElement) {\n return $__default['default'](htmlElement).off(EVENT_KEY$5);\n });\n /**\n * `document` has 2 events `EVENT_FOCUSIN` and `EVENT_CLICK_DATA_API`\n * Do not move `document` in `htmlElements` array\n * It will remove `EVENT_CLICK_DATA_API` event that should remain\n */\n\n $__default['default'](document).off(EVENT_FOCUSIN);\n $__default['default'].removeData(this._element, DATA_KEY$5);\n this._config = null;\n this._element = null;\n this._dialog = null;\n this._backdrop = null;\n this._isShown = null;\n this._isBodyOverflowing = null;\n this._ignoreBackdropClick = null;\n this._isTransitioning = null;\n this._scrollbarWidth = null;\n };\n\n _proto.handleUpdate = function handleUpdate() {\n this._adjustDialog();\n } // Private\n ;\n\n _proto._getConfig = function _getConfig(config) {\n config = _extends({}, Default$3, config);\n Util.typeCheckConfig(NAME$5, config, DefaultType$3);\n return config;\n };\n\n _proto._triggerBackdropTransition = function _triggerBackdropTransition() {\n var _this3 = this;\n\n var hideEventPrevented = $__default['default'].Event(EVENT_HIDE_PREVENTED);\n $__default['default'](this._element).trigger(hideEventPrevented);\n\n if (hideEventPrevented.isDefaultPrevented()) {\n return;\n }\n\n var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;\n\n if (!isModalOverflowing) {\n this._element.style.overflowY = 'hidden';\n }\n\n this._element.classList.add(CLASS_NAME_STATIC);\n\n var modalTransitionDuration = Util.getTransitionDurationFromElement(this._dialog);\n $__default['default'](this._element).off(Util.TRANSITION_END);\n $__default['default'](this._element).one(Util.TRANSITION_END, function () {\n _this3._element.classList.remove(CLASS_NAME_STATIC);\n\n if (!isModalOverflowing) {\n $__default['default'](_this3._element).one(Util.TRANSITION_END, function () {\n _this3._element.style.overflowY = '';\n }).emulateTransitionEnd(_this3._element, modalTransitionDuration);\n }\n }).emulateTransitionEnd(modalTransitionDuration);\n\n this._element.focus();\n };\n\n _proto._showElement = function _showElement(relatedTarget) {\n var _this4 = this;\n\n var transition = $__default['default'](this._element).hasClass(CLASS_NAME_FADE$1);\n var modalBody = this._dialog ? this._dialog.querySelector(SELECTOR_MODAL_BODY) : null;\n\n if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {\n // Don't move modal's DOM position\n document.body.appendChild(this._element);\n }\n\n this._element.style.display = 'block';\n\n this._element.removeAttribute('aria-hidden');\n\n this._element.setAttribute('aria-modal', true);\n\n this._element.setAttribute('role', 'dialog');\n\n if ($__default['default'](this._dialog).hasClass(CLASS_NAME_SCROLLABLE) && modalBody) {\n modalBody.scrollTop = 0;\n } else {\n this._element.scrollTop = 0;\n }\n\n if (transition) {\n Util.reflow(this._element);\n }\n\n $__default['default'](this._element).addClass(CLASS_NAME_SHOW$3);\n\n if (this._config.focus) {\n this._enforceFocus();\n }\n\n var shownEvent = $__default['default'].Event(EVENT_SHOWN$2, {\n relatedTarget: relatedTarget\n });\n\n var transitionComplete = function transitionComplete() {\n if (_this4._config.focus) {\n _this4._element.focus();\n }\n\n _this4._isTransitioning = false;\n $__default['default'](_this4._element).trigger(shownEvent);\n };\n\n if (transition) {\n var transitionDuration = Util.getTransitionDurationFromElement(this._dialog);\n $__default['default'](this._dialog).one(Util.TRANSITION_END, transitionComplete).emulateTransitionEnd(transitionDuration);\n } else {\n transitionComplete();\n }\n };\n\n _proto._enforceFocus = function _enforceFocus() {\n var _this5 = this;\n\n $__default['default'](document).off(EVENT_FOCUSIN) // Guard against infinite focus loop\n .on(EVENT_FOCUSIN, function (event) {\n if (document !== event.target && _this5._element !== event.target && $__default['default'](_this5._element).has(event.target).length === 0) {\n _this5._element.focus();\n }\n });\n };\n\n _proto._setEscapeEvent = function _setEscapeEvent() {\n var _this6 = this;\n\n if (this._isShown) {\n $__default['default'](this._element).on(EVENT_KEYDOWN_DISMISS, function (event) {\n if (_this6._config.keyboard && event.which === ESCAPE_KEYCODE$1) {\n event.preventDefault();\n\n _this6.hide();\n } else if (!_this6._config.keyboard && event.which === ESCAPE_KEYCODE$1) {\n _this6._triggerBackdropTransition();\n }\n });\n } else if (!this._isShown) {\n $__default['default'](this._element).off(EVENT_KEYDOWN_DISMISS);\n }\n };\n\n _proto._setResizeEvent = function _setResizeEvent() {\n var _this7 = this;\n\n if (this._isShown) {\n $__default['default'](window).on(EVENT_RESIZE, function (event) {\n return _this7.handleUpdate(event);\n });\n } else {\n $__default['default'](window).off(EVENT_RESIZE);\n }\n };\n\n _proto._hideModal = function _hideModal() {\n var _this8 = this;\n\n this._element.style.display = 'none';\n\n this._element.setAttribute('aria-hidden', true);\n\n this._element.removeAttribute('aria-modal');\n\n this._element.removeAttribute('role');\n\n this._isTransitioning = false;\n\n this._showBackdrop(function () {\n $__default['default'](document.body).removeClass(CLASS_NAME_OPEN);\n\n _this8._resetAdjustments();\n\n _this8._resetScrollbar();\n\n $__default['default'](_this8._element).trigger(EVENT_HIDDEN$2);\n });\n };\n\n _proto._removeBackdrop = function _removeBackdrop() {\n if (this._backdrop) {\n $__default['default'](this._backdrop).remove();\n this._backdrop = null;\n }\n };\n\n _proto._showBackdrop = function _showBackdrop(callback) {\n var _this9 = this;\n\n var animate = $__default['default'](this._element).hasClass(CLASS_NAME_FADE$1) ? CLASS_NAME_FADE$1 : '';\n\n if (this._isShown && this._config.backdrop) {\n this._backdrop = document.createElement('div');\n this._backdrop.className = CLASS_NAME_BACKDROP;\n\n if (animate) {\n this._backdrop.classList.add(animate);\n }\n\n $__default['default'](this._backdrop).appendTo(document.body);\n $__default['default'](this._element).on(EVENT_CLICK_DISMISS, function (event) {\n if (_this9._ignoreBackdropClick) {\n _this9._ignoreBackdropClick = false;\n return;\n }\n\n if (event.target !== event.currentTarget) {\n return;\n }\n\n if (_this9._config.backdrop === 'static') {\n _this9._triggerBackdropTransition();\n } else {\n _this9.hide();\n }\n });\n\n if (animate) {\n Util.reflow(this._backdrop);\n }\n\n $__default['default'](this._backdrop).addClass(CLASS_NAME_SHOW$3);\n\n if (!callback) {\n return;\n }\n\n if (!animate) {\n callback();\n return;\n }\n\n var backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop);\n $__default['default'](this._backdrop).one(Util.TRANSITION_END, callback).emulateTransitionEnd(backdropTransitionDuration);\n } else if (!this._isShown && this._backdrop) {\n $__default['default'](this._backdrop).removeClass(CLASS_NAME_SHOW$3);\n\n var callbackRemove = function callbackRemove() {\n _this9._removeBackdrop();\n\n if (callback) {\n callback();\n }\n };\n\n if ($__default['default'](this._element).hasClass(CLASS_NAME_FADE$1)) {\n var _backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop);\n\n $__default['default'](this._backdrop).one(Util.TRANSITION_END, callbackRemove).emulateTransitionEnd(_backdropTransitionDuration);\n } else {\n callbackRemove();\n }\n } else if (callback) {\n callback();\n }\n } // ----------------------------------------------------------------------\n // the following methods are used to handle overflowing modals\n // todo (fat): these should probably be refactored out of modal.js\n // ----------------------------------------------------------------------\n ;\n\n _proto._adjustDialog = function _adjustDialog() {\n var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;\n\n if (!this._isBodyOverflowing && isModalOverflowing) {\n this._element.style.paddingLeft = this._scrollbarWidth + \"px\";\n }\n\n if (this._isBodyOverflowing && !isModalOverflowing) {\n this._element.style.paddingRight = this._scrollbarWidth + \"px\";\n }\n };\n\n _proto._resetAdjustments = function _resetAdjustments() {\n this._element.style.paddingLeft = '';\n this._element.style.paddingRight = '';\n };\n\n _proto._checkScrollbar = function _checkScrollbar() {\n var rect = document.body.getBoundingClientRect();\n this._isBodyOverflowing = Math.round(rect.left + rect.right) < window.innerWidth;\n this._scrollbarWidth = this._getScrollbarWidth();\n };\n\n _proto._setScrollbar = function _setScrollbar() {\n var _this10 = this;\n\n if (this._isBodyOverflowing) {\n // Note: DOMNode.style.paddingRight returns the actual value or '' if not set\n // while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set\n var fixedContent = [].slice.call(document.querySelectorAll(SELECTOR_FIXED_CONTENT));\n var stickyContent = [].slice.call(document.querySelectorAll(SELECTOR_STICKY_CONTENT)); // Adjust fixed content padding\n\n $__default['default'](fixedContent).each(function (index, element) {\n var actualPadding = element.style.paddingRight;\n var calculatedPadding = $__default['default'](element).css('padding-right');\n $__default['default'](element).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + _this10._scrollbarWidth + \"px\");\n }); // Adjust sticky content margin\n\n $__default['default'](stickyContent).each(function (index, element) {\n var actualMargin = element.style.marginRight;\n var calculatedMargin = $__default['default'](element).css('margin-right');\n $__default['default'](element).data('margin-right', actualMargin).css('margin-right', parseFloat(calculatedMargin) - _this10._scrollbarWidth + \"px\");\n }); // Adjust body padding\n\n var actualPadding = document.body.style.paddingRight;\n var calculatedPadding = $__default['default'](document.body).css('padding-right');\n $__default['default'](document.body).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + this._scrollbarWidth + \"px\");\n }\n\n $__default['default'](document.body).addClass(CLASS_NAME_OPEN);\n };\n\n _proto._resetScrollbar = function _resetScrollbar() {\n // Restore fixed content padding\n var fixedContent = [].slice.call(document.querySelectorAll(SELECTOR_FIXED_CONTENT));\n $__default['default'](fixedContent).each(function (index, element) {\n var padding = $__default['default'](element).data('padding-right');\n $__default['default'](element).removeData('padding-right');\n element.style.paddingRight = padding ? padding : '';\n }); // Restore sticky content\n\n var elements = [].slice.call(document.querySelectorAll(\"\" + SELECTOR_STICKY_CONTENT));\n $__default['default'](elements).each(function (index, element) {\n var margin = $__default['default'](element).data('margin-right');\n\n if (typeof margin !== 'undefined') {\n $__default['default'](element).css('margin-right', margin).removeData('margin-right');\n }\n }); // Restore body padding\n\n var padding = $__default['default'](document.body).data('padding-right');\n $__default['default'](document.body).removeData('padding-right');\n document.body.style.paddingRight = padding ? padding : '';\n };\n\n _proto._getScrollbarWidth = function _getScrollbarWidth() {\n // thx d.walsh\n var scrollDiv = document.createElement('div');\n scrollDiv.className = CLASS_NAME_SCROLLBAR_MEASURER;\n document.body.appendChild(scrollDiv);\n var scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth;\n document.body.removeChild(scrollDiv);\n return scrollbarWidth;\n } // Static\n ;\n\n Modal._jQueryInterface = function _jQueryInterface(config, relatedTarget) {\n return this.each(function () {\n var data = $__default['default'](this).data(DATA_KEY$5);\n\n var _config = _extends({}, Default$3, $__default['default'](this).data(), typeof config === 'object' && config ? config : {});\n\n if (!data) {\n data = new Modal(this, _config);\n $__default['default'](this).data(DATA_KEY$5, data);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n\n data[config](relatedTarget);\n } else if (_config.show) {\n data.show(relatedTarget);\n }\n });\n };\n\n _createClass(Modal, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$5;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default$3;\n }\n }]);\n\n return Modal;\n }();\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n\n $__default['default'](document).on(EVENT_CLICK_DATA_API$5, SELECTOR_DATA_TOGGLE$3, function (event) {\n var _this11 = this;\n\n var target;\n var selector = Util.getSelectorFromElement(this);\n\n if (selector) {\n target = document.querySelector(selector);\n }\n\n var config = $__default['default'](target).data(DATA_KEY$5) ? 'toggle' : _extends({}, $__default['default'](target).data(), $__default['default'](this).data());\n\n if (this.tagName === 'A' || this.tagName === 'AREA') {\n event.preventDefault();\n }\n\n var $target = $__default['default'](target).one(EVENT_SHOW$2, function (showEvent) {\n if (showEvent.isDefaultPrevented()) {\n // Only register focus restorer if modal will actually get shown\n return;\n }\n\n $target.one(EVENT_HIDDEN$2, function () {\n if ($__default['default'](_this11).is(':visible')) {\n _this11.focus();\n }\n });\n });\n\n Modal._jQueryInterface.call($__default['default'](target), config, this);\n });\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $__default['default'].fn[NAME$5] = Modal._jQueryInterface;\n $__default['default'].fn[NAME$5].Constructor = Modal;\n\n $__default['default'].fn[NAME$5].noConflict = function () {\n $__default['default'].fn[NAME$5] = JQUERY_NO_CONFLICT$5;\n return Modal._jQueryInterface;\n };\n\n /**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.0): tools/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n var uriAttrs = ['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href'];\n var ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i;\n var DefaultWhitelist = {\n // Global attributes allowed on any supplied element below.\n '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n a: ['target', 'href', 'title', 'rel'],\n area: [],\n b: [],\n br: [],\n col: [],\n code: [],\n div: [],\n em: [],\n hr: [],\n h1: [],\n h2: [],\n h3: [],\n h4: [],\n h5: [],\n h6: [],\n i: [],\n img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],\n li: [],\n ol: [],\n p: [],\n pre: [],\n s: [],\n small: [],\n span: [],\n sub: [],\n sup: [],\n strong: [],\n u: [],\n ul: []\n };\n /**\n * A pattern that recognizes a commonly useful subset of URLs that are safe.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\n\n var SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^#&/:?]*(?:[#/?]|$))/gi;\n /**\n * A pattern that matches safe data URLs. Only matches image, video and audio types.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\n\n var DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[\\d+/a-z]+=*$/i;\n\n function allowedAttribute(attr, allowedAttributeList) {\n var attrName = attr.nodeName.toLowerCase();\n\n if (allowedAttributeList.indexOf(attrName) !== -1) {\n if (uriAttrs.indexOf(attrName) !== -1) {\n return Boolean(attr.nodeValue.match(SAFE_URL_PATTERN) || attr.nodeValue.match(DATA_URL_PATTERN));\n }\n\n return true;\n }\n\n var regExp = allowedAttributeList.filter(function (attrRegex) {\n return attrRegex instanceof RegExp;\n }); // Check if a regular expression validates the attribute.\n\n for (var i = 0, len = regExp.length; i < len; i++) {\n if (attrName.match(regExp[i])) {\n return true;\n }\n }\n\n return false;\n }\n\n function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) {\n if (unsafeHtml.length === 0) {\n return unsafeHtml;\n }\n\n if (sanitizeFn && typeof sanitizeFn === 'function') {\n return sanitizeFn(unsafeHtml);\n }\n\n var domParser = new window.DOMParser();\n var createdDocument = domParser.parseFromString(unsafeHtml, 'text/html');\n var whitelistKeys = Object.keys(whiteList);\n var elements = [].slice.call(createdDocument.body.querySelectorAll('*'));\n\n var _loop = function _loop(i, len) {\n var el = elements[i];\n var elName = el.nodeName.toLowerCase();\n\n if (whitelistKeys.indexOf(el.nodeName.toLowerCase()) === -1) {\n el.parentNode.removeChild(el);\n return \"continue\";\n }\n\n var attributeList = [].slice.call(el.attributes);\n var whitelistedAttributes = [].concat(whiteList['*'] || [], whiteList[elName] || []);\n attributeList.forEach(function (attr) {\n if (!allowedAttribute(attr, whitelistedAttributes)) {\n el.removeAttribute(attr.nodeName);\n }\n });\n };\n\n for (var i = 0, len = elements.length; i < len; i++) {\n var _ret = _loop(i);\n\n if (_ret === \"continue\") continue;\n }\n\n return createdDocument.body.innerHTML;\n }\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n var NAME$6 = 'tooltip';\n var VERSION$6 = '4.6.0';\n var DATA_KEY$6 = 'bs.tooltip';\n var EVENT_KEY$6 = \".\" + DATA_KEY$6;\n var JQUERY_NO_CONFLICT$6 = $__default['default'].fn[NAME$6];\n var CLASS_PREFIX = 'bs-tooltip';\n var BSCLS_PREFIX_REGEX = new RegExp(\"(^|\\\\s)\" + CLASS_PREFIX + \"\\\\S+\", 'g');\n var DISALLOWED_ATTRIBUTES = ['sanitize', 'whiteList', 'sanitizeFn'];\n var DefaultType$4 = {\n animation: 'boolean',\n template: 'string',\n title: '(string|element|function)',\n trigger: 'string',\n delay: '(number|object)',\n html: 'boolean',\n selector: '(string|boolean)',\n placement: '(string|function)',\n offset: '(number|string|function)',\n container: '(string|element|boolean)',\n fallbackPlacement: '(string|array)',\n boundary: '(string|element)',\n customClass: '(string|function)',\n sanitize: 'boolean',\n sanitizeFn: '(null|function)',\n whiteList: 'object',\n popperConfig: '(null|object)'\n };\n var AttachmentMap = {\n AUTO: 'auto',\n TOP: 'top',\n RIGHT: 'right',\n BOTTOM: 'bottom',\n LEFT: 'left'\n };\n var Default$4 = {\n animation: true,\n template: '<div class=\"tooltip\" role=\"tooltip\">' + '<div class=\"arrow\"></div>' + '<div class=\"tooltip-inner\"></div></div>',\n trigger: 'hover focus',\n title: '',\n delay: 0,\n html: false,\n selector: false,\n placement: 'top',\n offset: 0,\n container: false,\n fallbackPlacement: 'flip',\n boundary: 'scrollParent',\n customClass: '',\n sanitize: true,\n sanitizeFn: null,\n whiteList: DefaultWhitelist,\n popperConfig: null\n };\n var HOVER_STATE_SHOW = 'show';\n var HOVER_STATE_OUT = 'out';\n var Event = {\n HIDE: \"hide\" + EVENT_KEY$6,\n HIDDEN: \"hidden\" + EVENT_KEY$6,\n SHOW: \"show\" + EVENT_KEY$6,\n SHOWN: \"shown\" + EVENT_KEY$6,\n INSERTED: \"inserted\" + EVENT_KEY$6,\n CLICK: \"click\" + EVENT_KEY$6,\n FOCUSIN: \"focusin\" + EVENT_KEY$6,\n FOCUSOUT: \"focusout\" + EVENT_KEY$6,\n MOUSEENTER: \"mouseenter\" + EVENT_KEY$6,\n MOUSELEAVE: \"mouseleave\" + EVENT_KEY$6\n };\n var CLASS_NAME_FADE$2 = 'fade';\n var CLASS_NAME_SHOW$4 = 'show';\n var SELECTOR_TOOLTIP_INNER = '.tooltip-inner';\n var SELECTOR_ARROW = '.arrow';\n var TRIGGER_HOVER = 'hover';\n var TRIGGER_FOCUS = 'focus';\n var TRIGGER_CLICK = 'click';\n var TRIGGER_MANUAL = 'manual';\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n var Tooltip = /*#__PURE__*/function () {\n function Tooltip(element, config) {\n if (typeof Popper__default['default'] === 'undefined') {\n throw new TypeError('Bootstrap\\'s tooltips require Popper (https://popper.js.org)');\n } // private\n\n\n this._isEnabled = true;\n this._timeout = 0;\n this._hoverState = '';\n this._activeTrigger = {};\n this._popper = null; // Protected\n\n this.element = element;\n this.config = this._getConfig(config);\n this.tip = null;\n\n this._setListeners();\n } // Getters\n\n\n var _proto = Tooltip.prototype;\n\n // Public\n _proto.enable = function enable() {\n this._isEnabled = true;\n };\n\n _proto.disable = function disable() {\n this._isEnabled = false;\n };\n\n _proto.toggleEnabled = function toggleEnabled() {\n this._isEnabled = !this._isEnabled;\n };\n\n _proto.toggle = function toggle(event) {\n if (!this._isEnabled) {\n return;\n }\n\n if (event) {\n var dataKey = this.constructor.DATA_KEY;\n var context = $__default['default'](event.currentTarget).data(dataKey);\n\n if (!context) {\n context = new this.constructor(event.currentTarget, this._getDelegateConfig());\n $__default['default'](event.currentTarget).data(dataKey, context);\n }\n\n context._activeTrigger.click = !context._activeTrigger.click;\n\n if (context._isWithActiveTrigger()) {\n context._enter(null, context);\n } else {\n context._leave(null, context);\n }\n } else {\n if ($__default['default'](this.getTipElement()).hasClass(CLASS_NAME_SHOW$4)) {\n this._leave(null, this);\n\n return;\n }\n\n this._enter(null, this);\n }\n };\n\n _proto.dispose = function dispose() {\n clearTimeout(this._timeout);\n $__default['default'].removeData(this.element, this.constructor.DATA_KEY);\n $__default['default'](this.element).off(this.constructor.EVENT_KEY);\n $__default['default'](this.element).closest('.modal').off('hide.bs.modal', this._hideModalHandler);\n\n if (this.tip) {\n $__default['default'](this.tip).remove();\n }\n\n this._isEnabled = null;\n this._timeout = null;\n this._hoverState = null;\n this._activeTrigger = null;\n\n if (this._popper) {\n this._popper.destroy();\n }\n\n this._popper = null;\n this.element = null;\n this.config = null;\n this.tip = null;\n };\n\n _proto.show = function show() {\n var _this = this;\n\n if ($__default['default'](this.element).css('display') === 'none') {\n throw new Error('Please use show on visible elements');\n }\n\n var showEvent = $__default['default'].Event(this.constructor.Event.SHOW);\n\n if (this.isWithContent() && this._isEnabled) {\n $__default['default'](this.element).trigger(showEvent);\n var shadowRoot = Util.findShadowRoot(this.element);\n var isInTheDom = $__default['default'].contains(shadowRoot !== null ? shadowRoot : this.element.ownerDocument.documentElement, this.element);\n\n if (showEvent.isDefaultPrevented() || !isInTheDom) {\n return;\n }\n\n var tip = this.getTipElement();\n var tipId = Util.getUID(this.constructor.NAME);\n tip.setAttribute('id', tipId);\n this.element.setAttribute('aria-describedby', tipId);\n this.setContent();\n\n if (this.config.animation) {\n $__default['default'](tip).addClass(CLASS_NAME_FADE$2);\n }\n\n var placement = typeof this.config.placement === 'function' ? this.config.placement.call(this, tip, this.element) : this.config.placement;\n\n var attachment = this._getAttachment(placement);\n\n this.addAttachmentClass(attachment);\n\n var container = this._getContainer();\n\n $__default['default'](tip).data(this.constructor.DATA_KEY, this);\n\n if (!$__default['default'].contains(this.element.ownerDocument.documentElement, this.tip)) {\n $__default['default'](tip).appendTo(container);\n }\n\n $__default['default'](this.element).trigger(this.constructor.Event.INSERTED);\n this._popper = new Popper__default['default'](this.element, tip, this._getPopperConfig(attachment));\n $__default['default'](tip).addClass(CLASS_NAME_SHOW$4);\n $__default['default'](tip).addClass(this.config.customClass); // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n\n if ('ontouchstart' in document.documentElement) {\n $__default['default'](document.body).children().on('mouseover', null, $__default['default'].noop);\n }\n\n var complete = function complete() {\n if (_this.config.animation) {\n _this._fixTransition();\n }\n\n var prevHoverState = _this._hoverState;\n _this._hoverState = null;\n $__default['default'](_this.element).trigger(_this.constructor.Event.SHOWN);\n\n if (prevHoverState === HOVER_STATE_OUT) {\n _this._leave(null, _this);\n }\n };\n\n if ($__default['default'](this.tip).hasClass(CLASS_NAME_FADE$2)) {\n var transitionDuration = Util.getTransitionDurationFromElement(this.tip);\n $__default['default'](this.tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n } else {\n complete();\n }\n }\n };\n\n _proto.hide = function hide(callback) {\n var _this2 = this;\n\n var tip = this.getTipElement();\n var hideEvent = $__default['default'].Event(this.constructor.Event.HIDE);\n\n var complete = function complete() {\n if (_this2._hoverState !== HOVER_STATE_SHOW && tip.parentNode) {\n tip.parentNode.removeChild(tip);\n }\n\n _this2._cleanTipClass();\n\n _this2.element.removeAttribute('aria-describedby');\n\n $__default['default'](_this2.element).trigger(_this2.constructor.Event.HIDDEN);\n\n if (_this2._popper !== null) {\n _this2._popper.destroy();\n }\n\n if (callback) {\n callback();\n }\n };\n\n $__default['default'](this.element).trigger(hideEvent);\n\n if (hideEvent.isDefaultPrevented()) {\n return;\n }\n\n $__default['default'](tip).removeClass(CLASS_NAME_SHOW$4); // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n\n if ('ontouchstart' in document.documentElement) {\n $__default['default'](document.body).children().off('mouseover', null, $__default['default'].noop);\n }\n\n this._activeTrigger[TRIGGER_CLICK] = false;\n this._activeTrigger[TRIGGER_FOCUS] = false;\n this._activeTrigger[TRIGGER_HOVER] = false;\n\n if ($__default['default'](this.tip).hasClass(CLASS_NAME_FADE$2)) {\n var transitionDuration = Util.getTransitionDurationFromElement(tip);\n $__default['default'](tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n } else {\n complete();\n }\n\n this._hoverState = '';\n };\n\n _proto.update = function update() {\n if (this._popper !== null) {\n this._popper.scheduleUpdate();\n }\n } // Protected\n ;\n\n _proto.isWithContent = function isWithContent() {\n return Boolean(this.getTitle());\n };\n\n _proto.addAttachmentClass = function addAttachmentClass(attachment) {\n $__default['default'](this.getTipElement()).addClass(CLASS_PREFIX + \"-\" + attachment);\n };\n\n _proto.getTipElement = function getTipElement() {\n this.tip = this.tip || $__default['default'](this.config.template)[0];\n return this.tip;\n };\n\n _proto.setContent = function setContent() {\n var tip = this.getTipElement();\n this.setElementContent($__default['default'](tip.querySelectorAll(SELECTOR_TOOLTIP_INNER)), this.getTitle());\n $__default['default'](tip).removeClass(CLASS_NAME_FADE$2 + \" \" + CLASS_NAME_SHOW$4);\n };\n\n _proto.setElementContent = function setElementContent($element, content) {\n if (typeof content === 'object' && (content.nodeType || content.jquery)) {\n // Content is a DOM node or a jQuery\n if (this.config.html) {\n if (!$__default['default'](content).parent().is($element)) {\n $element.empty().append(content);\n }\n } else {\n $element.text($__default['default'](content).text());\n }\n\n return;\n }\n\n if (this.config.html) {\n if (this.config.sanitize) {\n content = sanitizeHtml(content, this.config.whiteList, this.config.sanitizeFn);\n }\n\n $element.html(content);\n } else {\n $element.text(content);\n }\n };\n\n _proto.getTitle = function getTitle() {\n var title = this.element.getAttribute('data-original-title');\n\n if (!title) {\n title = typeof this.config.title === 'function' ? this.config.title.call(this.element) : this.config.title;\n }\n\n return title;\n } // Private\n ;\n\n _proto._getPopperConfig = function _getPopperConfig(attachment) {\n var _this3 = this;\n\n var defaultBsConfig = {\n placement: attachment,\n modifiers: {\n offset: this._getOffset(),\n flip: {\n behavior: this.config.fallbackPlacement\n },\n arrow: {\n element: SELECTOR_ARROW\n },\n preventOverflow: {\n boundariesElement: this.config.boundary\n }\n },\n onCreate: function onCreate(data) {\n if (data.originalPlacement !== data.placement) {\n _this3._handlePopperPlacementChange(data);\n }\n },\n onUpdate: function onUpdate(data) {\n return _this3._handlePopperPlacementChange(data);\n }\n };\n return _extends({}, defaultBsConfig, this.config.popperConfig);\n };\n\n _proto._getOffset = function _getOffset() {\n var _this4 = this;\n\n var offset = {};\n\n if (typeof this.config.offset === 'function') {\n offset.fn = function (data) {\n data.offsets = _extends({}, data.offsets, _this4.config.offset(data.offsets, _this4.element) || {});\n return data;\n };\n } else {\n offset.offset = this.config.offset;\n }\n\n return offset;\n };\n\n _proto._getContainer = function _getContainer() {\n if (this.config.container === false) {\n return document.body;\n }\n\n if (Util.isElement(this.config.container)) {\n return $__default['default'](this.config.container);\n }\n\n return $__default['default'](document).find(this.config.container);\n };\n\n _proto._getAttachment = function _getAttachment(placement) {\n return AttachmentMap[placement.toUpperCase()];\n };\n\n _proto._setListeners = function _setListeners() {\n var _this5 = this;\n\n var triggers = this.config.trigger.split(' ');\n triggers.forEach(function (trigger) {\n if (trigger === 'click') {\n $__default['default'](_this5.element).on(_this5.constructor.Event.CLICK, _this5.config.selector, function (event) {\n return _this5.toggle(event);\n });\n } else if (trigger !== TRIGGER_MANUAL) {\n var eventIn = trigger === TRIGGER_HOVER ? _this5.constructor.Event.MOUSEENTER : _this5.constructor.Event.FOCUSIN;\n var eventOut = trigger === TRIGGER_HOVER ? _this5.constructor.Event.MOUSELEAVE : _this5.constructor.Event.FOCUSOUT;\n $__default['default'](_this5.element).on(eventIn, _this5.config.selector, function (event) {\n return _this5._enter(event);\n }).on(eventOut, _this5.config.selector, function (event) {\n return _this5._leave(event);\n });\n }\n });\n\n this._hideModalHandler = function () {\n if (_this5.element) {\n _this5.hide();\n }\n };\n\n $__default['default'](this.element).closest('.modal').on('hide.bs.modal', this._hideModalHandler);\n\n if (this.config.selector) {\n this.config = _extends({}, this.config, {\n trigger: 'manual',\n selector: ''\n });\n } else {\n this._fixTitle();\n }\n };\n\n _proto._fixTitle = function _fixTitle() {\n var titleType = typeof this.element.getAttribute('data-original-title');\n\n if (this.element.getAttribute('title') || titleType !== 'string') {\n this.element.setAttribute('data-original-title', this.element.getAttribute('title') || '');\n this.element.setAttribute('title', '');\n }\n };\n\n _proto._enter = function _enter(event, context) {\n var dataKey = this.constructor.DATA_KEY;\n context = context || $__default['default'](event.currentTarget).data(dataKey);\n\n if (!context) {\n context = new this.constructor(event.currentTarget, this._getDelegateConfig());\n $__default['default'](event.currentTarget).data(dataKey, context);\n }\n\n if (event) {\n context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true;\n }\n\n if ($__default['default'](context.getTipElement()).hasClass(CLASS_NAME_SHOW$4) || context._hoverState === HOVER_STATE_SHOW) {\n context._hoverState = HOVER_STATE_SHOW;\n return;\n }\n\n clearTimeout(context._timeout);\n context._hoverState = HOVER_STATE_SHOW;\n\n if (!context.config.delay || !context.config.delay.show) {\n context.show();\n return;\n }\n\n context._timeout = setTimeout(function () {\n if (context._hoverState === HOVER_STATE_SHOW) {\n context.show();\n }\n }, context.config.delay.show);\n };\n\n _proto._leave = function _leave(event, context) {\n var dataKey = this.constructor.DATA_KEY;\n context = context || $__default['default'](event.currentTarget).data(dataKey);\n\n if (!context) {\n context = new this.constructor(event.currentTarget, this._getDelegateConfig());\n $__default['default'](event.currentTarget).data(dataKey, context);\n }\n\n if (event) {\n context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] = false;\n }\n\n if (context._isWithActiveTrigger()) {\n return;\n }\n\n clearTimeout(context._timeout);\n context._hoverState = HOVER_STATE_OUT;\n\n if (!context.config.delay || !context.config.delay.hide) {\n context.hide();\n return;\n }\n\n context._timeout = setTimeout(function () {\n if (context._hoverState === HOVER_STATE_OUT) {\n context.hide();\n }\n }, context.config.delay.hide);\n };\n\n _proto._isWithActiveTrigger = function _isWithActiveTrigger() {\n for (var trigger in this._activeTrigger) {\n if (this._activeTrigger[trigger]) {\n return true;\n }\n }\n\n return false;\n };\n\n _proto._getConfig = function _getConfig(config) {\n var dataAttributes = $__default['default'](this.element).data();\n Object.keys(dataAttributes).forEach(function (dataAttr) {\n if (DISALLOWED_ATTRIBUTES.indexOf(dataAttr) !== -1) {\n delete dataAttributes[dataAttr];\n }\n });\n config = _extends({}, this.constructor.Default, dataAttributes, typeof config === 'object' && config ? config : {});\n\n if (typeof config.delay === 'number') {\n config.delay = {\n show: config.delay,\n hide: config.delay\n };\n }\n\n if (typeof config.title === 'number') {\n config.title = config.title.toString();\n }\n\n if (typeof config.content === 'number') {\n config.content = config.content.toString();\n }\n\n Util.typeCheckConfig(NAME$6, config, this.constructor.DefaultType);\n\n if (config.sanitize) {\n config.template = sanitizeHtml(config.template, config.whiteList, config.sanitizeFn);\n }\n\n return config;\n };\n\n _proto._getDelegateConfig = function _getDelegateConfig() {\n var config = {};\n\n if (this.config) {\n for (var key in this.config) {\n if (this.constructor.Default[key] !== this.config[key]) {\n config[key] = this.config[key];\n }\n }\n }\n\n return config;\n };\n\n _proto._cleanTipClass = function _cleanTipClass() {\n var $tip = $__default['default'](this.getTipElement());\n var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX);\n\n if (tabClass !== null && tabClass.length) {\n $tip.removeClass(tabClass.join(''));\n }\n };\n\n _proto._handlePopperPlacementChange = function _handlePopperPlacementChange(popperData) {\n this.tip = popperData.instance.popper;\n\n this._cleanTipClass();\n\n this.addAttachmentClass(this._getAttachment(popperData.placement));\n };\n\n _proto._fixTransition = function _fixTransition() {\n var tip = this.getTipElement();\n var initConfigAnimation = this.config.animation;\n\n if (tip.getAttribute('x-placement') !== null) {\n return;\n }\n\n $__default['default'](tip).removeClass(CLASS_NAME_FADE$2);\n this.config.animation = false;\n this.hide();\n this.show();\n this.config.animation = initConfigAnimation;\n } // Static\n ;\n\n Tooltip._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var $element = $__default['default'](this);\n var data = $element.data(DATA_KEY$6);\n\n var _config = typeof config === 'object' && config;\n\n if (!data && /dispose|hide/.test(config)) {\n return;\n }\n\n if (!data) {\n data = new Tooltip(this, _config);\n $element.data(DATA_KEY$6, data);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n\n data[config]();\n }\n });\n };\n\n _createClass(Tooltip, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$6;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default$4;\n }\n }, {\n key: \"NAME\",\n get: function get() {\n return NAME$6;\n }\n }, {\n key: \"DATA_KEY\",\n get: function get() {\n return DATA_KEY$6;\n }\n }, {\n key: \"Event\",\n get: function get() {\n return Event;\n }\n }, {\n key: \"EVENT_KEY\",\n get: function get() {\n return EVENT_KEY$6;\n }\n }, {\n key: \"DefaultType\",\n get: function get() {\n return DefaultType$4;\n }\n }]);\n\n return Tooltip;\n }();\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n\n $__default['default'].fn[NAME$6] = Tooltip._jQueryInterface;\n $__default['default'].fn[NAME$6].Constructor = Tooltip;\n\n $__default['default'].fn[NAME$6].noConflict = function () {\n $__default['default'].fn[NAME$6] = JQUERY_NO_CONFLICT$6;\n return Tooltip._jQueryInterface;\n };\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n var NAME$7 = 'popover';\n var VERSION$7 = '4.6.0';\n var DATA_KEY$7 = 'bs.popover';\n var EVENT_KEY$7 = \".\" + DATA_KEY$7;\n var JQUERY_NO_CONFLICT$7 = $__default['default'].fn[NAME$7];\n var CLASS_PREFIX$1 = 'bs-popover';\n var BSCLS_PREFIX_REGEX$1 = new RegExp(\"(^|\\\\s)\" + CLASS_PREFIX$1 + \"\\\\S+\", 'g');\n\n var Default$5 = _extends({}, Tooltip.Default, {\n placement: 'right',\n trigger: 'click',\n content: '',\n template: '<div class=\"popover\" role=\"tooltip\">' + '<div class=\"arrow\"></div>' + '<h3 class=\"popover-header\"></h3>' + '<div class=\"popover-body\"></div></div>'\n });\n\n var DefaultType$5 = _extends({}, Tooltip.DefaultType, {\n content: '(string|element|function)'\n });\n\n var CLASS_NAME_FADE$3 = 'fade';\n var CLASS_NAME_SHOW$5 = 'show';\n var SELECTOR_TITLE = '.popover-header';\n var SELECTOR_CONTENT = '.popover-body';\n var Event$1 = {\n HIDE: \"hide\" + EVENT_KEY$7,\n HIDDEN: \"hidden\" + EVENT_KEY$7,\n SHOW: \"show\" + EVENT_KEY$7,\n SHOWN: \"shown\" + EVENT_KEY$7,\n INSERTED: \"inserted\" + EVENT_KEY$7,\n CLICK: \"click\" + EVENT_KEY$7,\n FOCUSIN: \"focusin\" + EVENT_KEY$7,\n FOCUSOUT: \"focusout\" + EVENT_KEY$7,\n MOUSEENTER: \"mouseenter\" + EVENT_KEY$7,\n MOUSELEAVE: \"mouseleave\" + EVENT_KEY$7\n };\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n var Popover = /*#__PURE__*/function (_Tooltip) {\n _inheritsLoose(Popover, _Tooltip);\n\n function Popover() {\n return _Tooltip.apply(this, arguments) || this;\n }\n\n var _proto = Popover.prototype;\n\n // Overrides\n _proto.isWithContent = function isWithContent() {\n return this.getTitle() || this._getContent();\n };\n\n _proto.addAttachmentClass = function addAttachmentClass(attachment) {\n $__default['default'](this.getTipElement()).addClass(CLASS_PREFIX$1 + \"-\" + attachment);\n };\n\n _proto.getTipElement = function getTipElement() {\n this.tip = this.tip || $__default['default'](this.config.template)[0];\n return this.tip;\n };\n\n _proto.setContent = function setContent() {\n var $tip = $__default['default'](this.getTipElement()); // We use append for html objects to maintain js events\n\n this.setElementContent($tip.find(SELECTOR_TITLE), this.getTitle());\n\n var content = this._getContent();\n\n if (typeof content === 'function') {\n content = content.call(this.element);\n }\n\n this.setElementContent($tip.find(SELECTOR_CONTENT), content);\n $tip.removeClass(CLASS_NAME_FADE$3 + \" \" + CLASS_NAME_SHOW$5);\n } // Private\n ;\n\n _proto._getContent = function _getContent() {\n return this.element.getAttribute('data-content') || this.config.content;\n };\n\n _proto._cleanTipClass = function _cleanTipClass() {\n var $tip = $__default['default'](this.getTipElement());\n var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX$1);\n\n if (tabClass !== null && tabClass.length > 0) {\n $tip.removeClass(tabClass.join(''));\n }\n } // Static\n ;\n\n Popover._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var data = $__default['default'](this).data(DATA_KEY$7);\n\n var _config = typeof config === 'object' ? config : null;\n\n if (!data && /dispose|hide/.test(config)) {\n return;\n }\n\n if (!data) {\n data = new Popover(this, _config);\n $__default['default'](this).data(DATA_KEY$7, data);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n\n data[config]();\n }\n });\n };\n\n _createClass(Popover, null, [{\n key: \"VERSION\",\n // Getters\n get: function get() {\n return VERSION$7;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default$5;\n }\n }, {\n key: \"NAME\",\n get: function get() {\n return NAME$7;\n }\n }, {\n key: \"DATA_KEY\",\n get: function get() {\n return DATA_KEY$7;\n }\n }, {\n key: \"Event\",\n get: function get() {\n return Event$1;\n }\n }, {\n key: \"EVENT_KEY\",\n get: function get() {\n return EVENT_KEY$7;\n }\n }, {\n key: \"DefaultType\",\n get: function get() {\n return DefaultType$5;\n }\n }]);\n\n return Popover;\n }(Tooltip);\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n\n $__default['default'].fn[NAME$7] = Popover._jQueryInterface;\n $__default['default'].fn[NAME$7].Constructor = Popover;\n\n $__default['default'].fn[NAME$7].noConflict = function () {\n $__default['default'].fn[NAME$7] = JQUERY_NO_CONFLICT$7;\n return Popover._jQueryInterface;\n };\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n var NAME$8 = 'scrollspy';\n var VERSION$8 = '4.6.0';\n var DATA_KEY$8 = 'bs.scrollspy';\n var EVENT_KEY$8 = \".\" + DATA_KEY$8;\n var DATA_API_KEY$6 = '.data-api';\n var JQUERY_NO_CONFLICT$8 = $__default['default'].fn[NAME$8];\n var Default$6 = {\n offset: 10,\n method: 'auto',\n target: ''\n };\n var DefaultType$6 = {\n offset: 'number',\n method: 'string',\n target: '(string|element)'\n };\n var EVENT_ACTIVATE = \"activate\" + EVENT_KEY$8;\n var EVENT_SCROLL = \"scroll\" + EVENT_KEY$8;\n var EVENT_LOAD_DATA_API$2 = \"load\" + EVENT_KEY$8 + DATA_API_KEY$6;\n var CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item';\n var CLASS_NAME_ACTIVE$2 = 'active';\n var SELECTOR_DATA_SPY = '[data-spy=\"scroll\"]';\n var SELECTOR_NAV_LIST_GROUP = '.nav, .list-group';\n var SELECTOR_NAV_LINKS = '.nav-link';\n var SELECTOR_NAV_ITEMS = '.nav-item';\n var SELECTOR_LIST_ITEMS = '.list-group-item';\n var SELECTOR_DROPDOWN = '.dropdown';\n var SELECTOR_DROPDOWN_ITEMS = '.dropdown-item';\n var SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle';\n var METHOD_OFFSET = 'offset';\n var METHOD_POSITION = 'position';\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n var ScrollSpy = /*#__PURE__*/function () {\n function ScrollSpy(element, config) {\n var _this = this;\n\n this._element = element;\n this._scrollElement = element.tagName === 'BODY' ? window : element;\n this._config = this._getConfig(config);\n this._selector = this._config.target + \" \" + SELECTOR_NAV_LINKS + \",\" + (this._config.target + \" \" + SELECTOR_LIST_ITEMS + \",\") + (this._config.target + \" \" + SELECTOR_DROPDOWN_ITEMS);\n this._offsets = [];\n this._targets = [];\n this._activeTarget = null;\n this._scrollHeight = 0;\n $__default['default'](this._scrollElement).on(EVENT_SCROLL, function (event) {\n return _this._process(event);\n });\n this.refresh();\n\n this._process();\n } // Getters\n\n\n var _proto = ScrollSpy.prototype;\n\n // Public\n _proto.refresh = function refresh() {\n var _this2 = this;\n\n var autoMethod = this._scrollElement === this._scrollElement.window ? METHOD_OFFSET : METHOD_POSITION;\n var offsetMethod = this._config.method === 'auto' ? autoMethod : this._config.method;\n var offsetBase = offsetMethod === METHOD_POSITION ? this._getScrollTop() : 0;\n this._offsets = [];\n this._targets = [];\n this._scrollHeight = this._getScrollHeight();\n var targets = [].slice.call(document.querySelectorAll(this._selector));\n targets.map(function (element) {\n var target;\n var targetSelector = Util.getSelectorFromElement(element);\n\n if (targetSelector) {\n target = document.querySelector(targetSelector);\n }\n\n if (target) {\n var targetBCR = target.getBoundingClientRect();\n\n if (targetBCR.width || targetBCR.height) {\n // TODO (fat): remove sketch reliance on jQuery position/offset\n return [$__default['default'](target)[offsetMethod]().top + offsetBase, targetSelector];\n }\n }\n\n return null;\n }).filter(function (item) {\n return item;\n }).sort(function (a, b) {\n return a[0] - b[0];\n }).forEach(function (item) {\n _this2._offsets.push(item[0]);\n\n _this2._targets.push(item[1]);\n });\n };\n\n _proto.dispose = function dispose() {\n $__default['default'].removeData(this._element, DATA_KEY$8);\n $__default['default'](this._scrollElement).off(EVENT_KEY$8);\n this._element = null;\n this._scrollElement = null;\n this._config = null;\n this._selector = null;\n this._offsets = null;\n this._targets = null;\n this._activeTarget = null;\n this._scrollHeight = null;\n } // Private\n ;\n\n _proto._getConfig = function _getConfig(config) {\n config = _extends({}, Default$6, typeof config === 'object' && config ? config : {});\n\n if (typeof config.target !== 'string' && Util.isElement(config.target)) {\n var id = $__default['default'](config.target).attr('id');\n\n if (!id) {\n id = Util.getUID(NAME$8);\n $__default['default'](config.target).attr('id', id);\n }\n\n config.target = \"#\" + id;\n }\n\n Util.typeCheckConfig(NAME$8, config, DefaultType$6);\n return config;\n };\n\n _proto._getScrollTop = function _getScrollTop() {\n return this._scrollElement === window ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop;\n };\n\n _proto._getScrollHeight = function _getScrollHeight() {\n return this._scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight);\n };\n\n _proto._getOffsetHeight = function _getOffsetHeight() {\n return this._scrollElement === window ? window.innerHeight : this._scrollElement.getBoundingClientRect().height;\n };\n\n _proto._process = function _process() {\n var scrollTop = this._getScrollTop() + this._config.offset;\n\n var scrollHeight = this._getScrollHeight();\n\n var maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight();\n\n if (this._scrollHeight !== scrollHeight) {\n this.refresh();\n }\n\n if (scrollTop >= maxScroll) {\n var target = this._targets[this._targets.length - 1];\n\n if (this._activeTarget !== target) {\n this._activate(target);\n }\n\n return;\n }\n\n if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {\n this._activeTarget = null;\n\n this._clear();\n\n return;\n }\n\n for (var i = this._offsets.length; i--;) {\n var isActiveTarget = this._activeTarget !== this._targets[i] && scrollTop >= this._offsets[i] && (typeof this._offsets[i + 1] === 'undefined' || scrollTop < this._offsets[i + 1]);\n\n if (isActiveTarget) {\n this._activate(this._targets[i]);\n }\n }\n };\n\n _proto._activate = function _activate(target) {\n this._activeTarget = target;\n\n this._clear();\n\n var queries = this._selector.split(',').map(function (selector) {\n return selector + \"[data-target=\\\"\" + target + \"\\\"],\" + selector + \"[href=\\\"\" + target + \"\\\"]\";\n });\n\n var $link = $__default['default']([].slice.call(document.querySelectorAll(queries.join(','))));\n\n if ($link.hasClass(CLASS_NAME_DROPDOWN_ITEM)) {\n $link.closest(SELECTOR_DROPDOWN).find(SELECTOR_DROPDOWN_TOGGLE).addClass(CLASS_NAME_ACTIVE$2);\n $link.addClass(CLASS_NAME_ACTIVE$2);\n } else {\n // Set triggered link as active\n $link.addClass(CLASS_NAME_ACTIVE$2); // Set triggered links parents as active\n // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor\n\n $link.parents(SELECTOR_NAV_LIST_GROUP).prev(SELECTOR_NAV_LINKS + \", \" + SELECTOR_LIST_ITEMS).addClass(CLASS_NAME_ACTIVE$2); // Handle special case when .nav-link is inside .nav-item\n\n $link.parents(SELECTOR_NAV_LIST_GROUP).prev(SELECTOR_NAV_ITEMS).children(SELECTOR_NAV_LINKS).addClass(CLASS_NAME_ACTIVE$2);\n }\n\n $__default['default'](this._scrollElement).trigger(EVENT_ACTIVATE, {\n relatedTarget: target\n });\n };\n\n _proto._clear = function _clear() {\n [].slice.call(document.querySelectorAll(this._selector)).filter(function (node) {\n return node.classList.contains(CLASS_NAME_ACTIVE$2);\n }).forEach(function (node) {\n return node.classList.remove(CLASS_NAME_ACTIVE$2);\n });\n } // Static\n ;\n\n ScrollSpy._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var data = $__default['default'](this).data(DATA_KEY$8);\n\n var _config = typeof config === 'object' && config;\n\n if (!data) {\n data = new ScrollSpy(this, _config);\n $__default['default'](this).data(DATA_KEY$8, data);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n\n data[config]();\n }\n });\n };\n\n _createClass(ScrollSpy, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$8;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default$6;\n }\n }]);\n\n return ScrollSpy;\n }();\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n\n $__default['default'](window).on(EVENT_LOAD_DATA_API$2, function () {\n var scrollSpys = [].slice.call(document.querySelectorAll(SELECTOR_DATA_SPY));\n var scrollSpysLength = scrollSpys.length;\n\n for (var i = scrollSpysLength; i--;) {\n var $spy = $__default['default'](scrollSpys[i]);\n\n ScrollSpy._jQueryInterface.call($spy, $spy.data());\n }\n });\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $__default['default'].fn[NAME$8] = ScrollSpy._jQueryInterface;\n $__default['default'].fn[NAME$8].Constructor = ScrollSpy;\n\n $__default['default'].fn[NAME$8].noConflict = function () {\n $__default['default'].fn[NAME$8] = JQUERY_NO_CONFLICT$8;\n return ScrollSpy._jQueryInterface;\n };\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n var NAME$9 = 'tab';\n var VERSION$9 = '4.6.0';\n var DATA_KEY$9 = 'bs.tab';\n var EVENT_KEY$9 = \".\" + DATA_KEY$9;\n var DATA_API_KEY$7 = '.data-api';\n var JQUERY_NO_CONFLICT$9 = $__default['default'].fn[NAME$9];\n var EVENT_HIDE$3 = \"hide\" + EVENT_KEY$9;\n var EVENT_HIDDEN$3 = \"hidden\" + EVENT_KEY$9;\n var EVENT_SHOW$3 = \"show\" + EVENT_KEY$9;\n var EVENT_SHOWN$3 = \"shown\" + EVENT_KEY$9;\n var EVENT_CLICK_DATA_API$6 = \"click\" + EVENT_KEY$9 + DATA_API_KEY$7;\n var CLASS_NAME_DROPDOWN_MENU = 'dropdown-menu';\n var CLASS_NAME_ACTIVE$3 = 'active';\n var CLASS_NAME_DISABLED$1 = 'disabled';\n var CLASS_NAME_FADE$4 = 'fade';\n var CLASS_NAME_SHOW$6 = 'show';\n var SELECTOR_DROPDOWN$1 = '.dropdown';\n var SELECTOR_NAV_LIST_GROUP$1 = '.nav, .list-group';\n var SELECTOR_ACTIVE$2 = '.active';\n var SELECTOR_ACTIVE_UL = '> li > .active';\n var SELECTOR_DATA_TOGGLE$4 = '[data-toggle=\"tab\"], [data-toggle=\"pill\"], [data-toggle=\"list\"]';\n var SELECTOR_DROPDOWN_TOGGLE$1 = '.dropdown-toggle';\n var SELECTOR_DROPDOWN_ACTIVE_CHILD = '> .dropdown-menu .active';\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n var Tab = /*#__PURE__*/function () {\n function Tab(element) {\n this._element = element;\n } // Getters\n\n\n var _proto = Tab.prototype;\n\n // Public\n _proto.show = function show() {\n var _this = this;\n\n if (this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE && $__default['default'](this._element).hasClass(CLASS_NAME_ACTIVE$3) || $__default['default'](this._element).hasClass(CLASS_NAME_DISABLED$1)) {\n return;\n }\n\n var target;\n var previous;\n var listElement = $__default['default'](this._element).closest(SELECTOR_NAV_LIST_GROUP$1)[0];\n var selector = Util.getSelectorFromElement(this._element);\n\n if (listElement) {\n var itemSelector = listElement.nodeName === 'UL' || listElement.nodeName === 'OL' ? SELECTOR_ACTIVE_UL : SELECTOR_ACTIVE$2;\n previous = $__default['default'].makeArray($__default['default'](listElement).find(itemSelector));\n previous = previous[previous.length - 1];\n }\n\n var hideEvent = $__default['default'].Event(EVENT_HIDE$3, {\n relatedTarget: this._element\n });\n var showEvent = $__default['default'].Event(EVENT_SHOW$3, {\n relatedTarget: previous\n });\n\n if (previous) {\n $__default['default'](previous).trigger(hideEvent);\n }\n\n $__default['default'](this._element).trigger(showEvent);\n\n if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) {\n return;\n }\n\n if (selector) {\n target = document.querySelector(selector);\n }\n\n this._activate(this._element, listElement);\n\n var complete = function complete() {\n var hiddenEvent = $__default['default'].Event(EVENT_HIDDEN$3, {\n relatedTarget: _this._element\n });\n var shownEvent = $__default['default'].Event(EVENT_SHOWN$3, {\n relatedTarget: previous\n });\n $__default['default'](previous).trigger(hiddenEvent);\n $__default['default'](_this._element).trigger(shownEvent);\n };\n\n if (target) {\n this._activate(target, target.parentNode, complete);\n } else {\n complete();\n }\n };\n\n _proto.dispose = function dispose() {\n $__default['default'].removeData(this._element, DATA_KEY$9);\n this._element = null;\n } // Private\n ;\n\n _proto._activate = function _activate(element, container, callback) {\n var _this2 = this;\n\n var activeElements = container && (container.nodeName === 'UL' || container.nodeName === 'OL') ? $__default['default'](container).find(SELECTOR_ACTIVE_UL) : $__default['default'](container).children(SELECTOR_ACTIVE$2);\n var active = activeElements[0];\n var isTransitioning = callback && active && $__default['default'](active).hasClass(CLASS_NAME_FADE$4);\n\n var complete = function complete() {\n return _this2._transitionComplete(element, active, callback);\n };\n\n if (active && isTransitioning) {\n var transitionDuration = Util.getTransitionDurationFromElement(active);\n $__default['default'](active).removeClass(CLASS_NAME_SHOW$6).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n } else {\n complete();\n }\n };\n\n _proto._transitionComplete = function _transitionComplete(element, active, callback) {\n if (active) {\n $__default['default'](active).removeClass(CLASS_NAME_ACTIVE$3);\n var dropdownChild = $__default['default'](active.parentNode).find(SELECTOR_DROPDOWN_ACTIVE_CHILD)[0];\n\n if (dropdownChild) {\n $__default['default'](dropdownChild).removeClass(CLASS_NAME_ACTIVE$3);\n }\n\n if (active.getAttribute('role') === 'tab') {\n active.setAttribute('aria-selected', false);\n }\n }\n\n $__default['default'](element).addClass(CLASS_NAME_ACTIVE$3);\n\n if (element.getAttribute('role') === 'tab') {\n element.setAttribute('aria-selected', true);\n }\n\n Util.reflow(element);\n\n if (element.classList.contains(CLASS_NAME_FADE$4)) {\n element.classList.add(CLASS_NAME_SHOW$6);\n }\n\n if (element.parentNode && $__default['default'](element.parentNode).hasClass(CLASS_NAME_DROPDOWN_MENU)) {\n var dropdownElement = $__default['default'](element).closest(SELECTOR_DROPDOWN$1)[0];\n\n if (dropdownElement) {\n var dropdownToggleList = [].slice.call(dropdownElement.querySelectorAll(SELECTOR_DROPDOWN_TOGGLE$1));\n $__default['default'](dropdownToggleList).addClass(CLASS_NAME_ACTIVE$3);\n }\n\n element.setAttribute('aria-expanded', true);\n }\n\n if (callback) {\n callback();\n }\n } // Static\n ;\n\n Tab._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var $this = $__default['default'](this);\n var data = $this.data(DATA_KEY$9);\n\n if (!data) {\n data = new Tab(this);\n $this.data(DATA_KEY$9, data);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n\n data[config]();\n }\n });\n };\n\n _createClass(Tab, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$9;\n }\n }]);\n\n return Tab;\n }();\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n\n $__default['default'](document).on(EVENT_CLICK_DATA_API$6, SELECTOR_DATA_TOGGLE$4, function (event) {\n event.preventDefault();\n\n Tab._jQueryInterface.call($__default['default'](this), 'show');\n });\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $__default['default'].fn[NAME$9] = Tab._jQueryInterface;\n $__default['default'].fn[NAME$9].Constructor = Tab;\n\n $__default['default'].fn[NAME$9].noConflict = function () {\n $__default['default'].fn[NAME$9] = JQUERY_NO_CONFLICT$9;\n return Tab._jQueryInterface;\n };\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n var NAME$a = 'toast';\n var VERSION$a = '4.6.0';\n var DATA_KEY$a = 'bs.toast';\n var EVENT_KEY$a = \".\" + DATA_KEY$a;\n var JQUERY_NO_CONFLICT$a = $__default['default'].fn[NAME$a];\n var EVENT_CLICK_DISMISS$1 = \"click.dismiss\" + EVENT_KEY$a;\n var EVENT_HIDE$4 = \"hide\" + EVENT_KEY$a;\n var EVENT_HIDDEN$4 = \"hidden\" + EVENT_KEY$a;\n var EVENT_SHOW$4 = \"show\" + EVENT_KEY$a;\n var EVENT_SHOWN$4 = \"shown\" + EVENT_KEY$a;\n var CLASS_NAME_FADE$5 = 'fade';\n var CLASS_NAME_HIDE = 'hide';\n var CLASS_NAME_SHOW$7 = 'show';\n var CLASS_NAME_SHOWING = 'showing';\n var DefaultType$7 = {\n animation: 'boolean',\n autohide: 'boolean',\n delay: 'number'\n };\n var Default$7 = {\n animation: true,\n autohide: true,\n delay: 500\n };\n var SELECTOR_DATA_DISMISS$1 = '[data-dismiss=\"toast\"]';\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n var Toast = /*#__PURE__*/function () {\n function Toast(element, config) {\n this._element = element;\n this._config = this._getConfig(config);\n this._timeout = null;\n\n this._setListeners();\n } // Getters\n\n\n var _proto = Toast.prototype;\n\n // Public\n _proto.show = function show() {\n var _this = this;\n\n var showEvent = $__default['default'].Event(EVENT_SHOW$4);\n $__default['default'](this._element).trigger(showEvent);\n\n if (showEvent.isDefaultPrevented()) {\n return;\n }\n\n this._clearTimeout();\n\n if (this._config.animation) {\n this._element.classList.add(CLASS_NAME_FADE$5);\n }\n\n var complete = function complete() {\n _this._element.classList.remove(CLASS_NAME_SHOWING);\n\n _this._element.classList.add(CLASS_NAME_SHOW$7);\n\n $__default['default'](_this._element).trigger(EVENT_SHOWN$4);\n\n if (_this._config.autohide) {\n _this._timeout = setTimeout(function () {\n _this.hide();\n }, _this._config.delay);\n }\n };\n\n this._element.classList.remove(CLASS_NAME_HIDE);\n\n Util.reflow(this._element);\n\n this._element.classList.add(CLASS_NAME_SHOWING);\n\n if (this._config.animation) {\n var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n $__default['default'](this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n } else {\n complete();\n }\n };\n\n _proto.hide = function hide() {\n if (!this._element.classList.contains(CLASS_NAME_SHOW$7)) {\n return;\n }\n\n var hideEvent = $__default['default'].Event(EVENT_HIDE$4);\n $__default['default'](this._element).trigger(hideEvent);\n\n if (hideEvent.isDefaultPrevented()) {\n return;\n }\n\n this._close();\n };\n\n _proto.dispose = function dispose() {\n this._clearTimeout();\n\n if (this._element.classList.contains(CLASS_NAME_SHOW$7)) {\n this._element.classList.remove(CLASS_NAME_SHOW$7);\n }\n\n $__default['default'](this._element).off(EVENT_CLICK_DISMISS$1);\n $__default['default'].removeData(this._element, DATA_KEY$a);\n this._element = null;\n this._config = null;\n } // Private\n ;\n\n _proto._getConfig = function _getConfig(config) {\n config = _extends({}, Default$7, $__default['default'](this._element).data(), typeof config === 'object' && config ? config : {});\n Util.typeCheckConfig(NAME$a, config, this.constructor.DefaultType);\n return config;\n };\n\n _proto._setListeners = function _setListeners() {\n var _this2 = this;\n\n $__default['default'](this._element).on(EVENT_CLICK_DISMISS$1, SELECTOR_DATA_DISMISS$1, function () {\n return _this2.hide();\n });\n };\n\n _proto._close = function _close() {\n var _this3 = this;\n\n var complete = function complete() {\n _this3._element.classList.add(CLASS_NAME_HIDE);\n\n $__default['default'](_this3._element).trigger(EVENT_HIDDEN$4);\n };\n\n this._element.classList.remove(CLASS_NAME_SHOW$7);\n\n if (this._config.animation) {\n var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n $__default['default'](this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n } else {\n complete();\n }\n };\n\n _proto._clearTimeout = function _clearTimeout() {\n clearTimeout(this._timeout);\n this._timeout = null;\n } // Static\n ;\n\n Toast._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var $element = $__default['default'](this);\n var data = $element.data(DATA_KEY$a);\n\n var _config = typeof config === 'object' && config;\n\n if (!data) {\n data = new Toast(this, _config);\n $element.data(DATA_KEY$a, data);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n\n data[config](this);\n }\n });\n };\n\n _createClass(Toast, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$a;\n }\n }, {\n key: \"DefaultType\",\n get: function get() {\n return DefaultType$7;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default$7;\n }\n }]);\n\n return Toast;\n }();\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n\n $__default['default'].fn[NAME$a] = Toast._jQueryInterface;\n $__default['default'].fn[NAME$a].Constructor = Toast;\n\n $__default['default'].fn[NAME$a].noConflict = function () {\n $__default['default'].fn[NAME$a] = JQUERY_NO_CONFLICT$a;\n return Toast._jQueryInterface;\n };\n\n exports.Alert = Alert;\n exports.Button = Button;\n exports.Carousel = Carousel;\n exports.Collapse = Collapse;\n exports.Dropdown = Dropdown;\n exports.Modal = Modal;\n exports.Popover = Popover;\n exports.Scrollspy = ScrollSpy;\n exports.Tab = Tab;\n exports.Toast = Toast;\n exports.Tooltip = Tooltip;\n exports.Util = Util;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n})));\n//# sourceMappingURL=bootstrap.js.map\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n/* eslint-disable no-param-reassign */\n\nvar setJWPlayerDefaults = function setJWPlayerDefaults(_ref) {\n var context = _ref.context,\n playerId = _ref.playerId;\n\n var playerConfigs = context.__JW_PLAYER_CONFIGS__ = context.__JW_PLAYER_CONFIGS__ || {};\n var existingConfig = playerConfigs[playerId];\n\n if (existingConfig) {\n context.jwplayer.defaults = existingConfig;\n } else {\n playerConfigs[playerId] = context.jwplayer.defaults;\n }\n};\n\nexports.default = setJWPlayerDefaults;","// Menu\n$(function() {\n // Submenu hide/show on scroll\n const body = document.body;\n const scrollUp = \"scroll-up\";\n const scrollDown = \"scroll-down\";\n let lastScroll = 0;\n const searchForm = document.querySelector('.blogmenu__submenu__search');\n window.addEventListener('scroll', () => {\n const currentScroll = window.pageYOffset;\n\n if (currentScroll <= 0) {\n body.classList.remove(scrollUp);\n return;\n }\n \n if (currentScroll > lastScroll && !body.classList.contains(scrollDown)) {\n // Down\n body.classList.remove(scrollUp);\n body.classList.add(scrollDown);\n } else if (currentScroll < lastScroll && body.classList.contains(scrollDown)) {\n // Up\n body.classList.remove(scrollDown);\n body.classList.add(scrollUp);\n }\n\n lastScroll = currentScroll;\n });\n\n if (searchForm) {\n searchForm.addEventListener('submit', (e) => {\n e.preventDefault();\n const input = searchForm.querySelector('input.blogmenu__submenu__search__input');\n if (input.value.length > 0) {\n window.location = `/search/${input.value}`;\n }\n });\n }\n\n // Menu toggle\n function toggleMenu() {\n const overlay = $(\"#menu_overlay\");\n const burgerIcon = $(\".menu__burger__wrapper\");\n const doc = $(\"body\");\n const menu = $(\"#menu\");\n const windowpos = $(window).scrollTop();\n \n if (overlay.attr('aria-expanded') == \"true\") {\n doc.css(\"margin-top\", -{windowpos}).removeClass('scroll-lock');\n burgerIcon.removeClass('menu__burger__wrapper--active');\n overlay.attr('aria-expanded', false).removeClass('menu__overlay--active');\n menu.removeClass('menu--open');\n } else {\n doc.css(\"margin-top\", \"\").addClass('scroll-lock');\n burgerIcon.addClass('menu__burger__wrapper--active');\n overlay.attr('aria-expanded', true).addClass('menu__overlay--active');\n menu.addClass('menu--open');\n }\n }\n $('.menu__burger__wrapper').on('click', function() {\n toggleSubMenu(false);\n toggleMenu();\n });\n\n // Submenu toggle\n function toggleSubMenu(state = null) {\n const overlay = $(\"#blogmenu_overlay\");\n const burgerIcon = $(\".blogmenu__button\");\n const doc = $(\"body\");\n const windowpos = $(window).scrollTop();\n const open = state != null ? !state : overlay.attr('aria-expanded') == \"true\";\n \n if (open) {\n doc.css(\"margin-top\", -{windowpos}).removeClass('scroll-lock');\n burgerIcon.removeClass('blogmenu__button--active');\n overlay.attr('aria-expanded', false).removeClass('blogmenu__overlay--active');\n } else {\n doc.css(\"margin-top\", \"\").addClass('scroll-lock');\n burgerIcon.addClass('blogmenu__button--active');\n overlay.attr('aria-expanded', true).addClass('blogmenu__overlay--active');\n }\n }\n $('.blogmenu__button').on('click', function(e) {\n toggleSubMenu();\n });\n $('#blogmenu_overlay').on('click', function(e) {\n if ($(e.target).is('#blogmenu_overlay')) {\n toggleSubMenu();\n }\n });\n\n function toggleMobileChildMenuCollapse(target) {\n const toggleElement = target;\n const childMenu = target.parentNode.getElementsByClassName('menu_submenu__subitems')[0];\n \n if (toggleElement.classList.contains('menu_submenu__item__toggle--active')) {\n toggleElement.classList.remove('menu_submenu__item__toggle--active');\n childMenu.classList.remove('menu_submenu__subitems--visible');\n } else {\n toggleElement.classList.add('menu_submenu__item__toggle--active');\n childMenu.classList.add('menu_submenu__subitems--visible');\n }\n }\n $('.menu_submenu__item__toggle').on('click', function(e) {\n toggleMobileChildMenuCollapse(e.currentTarget);\n });\n});","import React from 'react';\n\nclass TermFilter extends React.Component {\n constructor(props) {\n super(props);\n\n this.state = {\n showAll: false,\n filterOpen: false,\n };\n\n this.onTermChange = this.onTermChange.bind(this);\n this.onShowToggle = this.onShowToggle.bind(this);\n this.onMenuToggle = this.onMenuToggle.bind(this);\n this.onFilterMenuToggle = this.onFilterMenuToggle.bind(this);\n }\n\n componentDidUpdate() {\n if (this.props.pagetype == 'category') {\n if (!this.categoryIsVisible() && !this.state.showAll && this.props.categorySlug != 'kategorier') {\n this.setState(() => ({\n showAll: !this.categoryIsVisible(),\n }));\n }\n }\n }\n\n categoryIsVisible() {\n const firstCategories = this.props.categories.slice(0, 10);\n return firstCategories.some(cat => cat.slug === this.props.categorySlug);\n }\n\n onTermChange(event) {\n window.location = event.target.value;\n }\n\n onShowToggle() {\n this.setState(() => ({\n showAll: !this.state.showAll,\n }));\n }\n\n onMenuToggle(event) {\n const menuItem = event.currentTarget.parentElement;\n menuItem.classList.toggle('open');\n }\n\n onFilterMenuToggle(e) {\n e.preventDefault();\n\n this.setState(() => ({\n filterOpen: !this.state.filterOpen,\n }));\n }\n\n render() {\n const archiveIndex = window.archive?.index || [];\n\n const currentCategory = this.props.categories.filter((c) => c.slug == this.props.categorySlug);\n const filterTermText = currentCategory[0]?.name ?? 'Alla kategorier';\n\n const monthNames = {\n 1: 'Januari',\n 2: 'Februari',\n 3: 'Mars',\n 4: 'April',\n 5: 'Maj',\n 6: 'Juni',\n 7: 'Juli',\n 8: 'Augusti',\n 9: 'September',\n 10: 'Oktober',\n 11: 'November',\n 12: 'December',\n };\n\n return (\n <React.Fragment>\n <div className=\"filter__ordering filter__ordering--desktop col-auto d-none d-lg-flex align-items-center pr-0\">\n <select className=\"form-control\" onChange={this.props.onOrderingChange} value={this.props.ordering}>\n <option value=\"DESC\">Nyast först</option>\n <option value=\"ASC\">Äldsta först</option>\n </select>\n </div>\n <div className=\"filter__mobile col-12 d-lg-none\">\n <div className=\"row\">\n <div className=\"filter__ordering col-auto d-flex pr-0\">\n <select className=\"form-control\" onChange={this.props.onOrderingChange} value={this.props.ordering}>\n <option value=\"DESC\">Nyast först</option>\n <option value=\"ASC\">Äldsta först</option>\n </select>\n <span className='select-arrow'></span>\n </div>\n { this.props.pagetype == 'category' && \n <div className=\"filter__terms col-auto d-flex d-lg-none pl-0\">\n <a href=\"#\" onClick={this.onFilterMenuToggle}>{filterTermText.charAt(0).toUpperCase() + filterTermText.slice(1)}</a>\n </div>\n }\n { this.props.pagetype == 'archive' && \n <div className=\"filter__terms col-auto d-flex d-lg-none pl-0\">\n <a href=\"#\" className={this.state.filterOpen ? 'open' : ''} onClick={this.onFilterMenuToggle}>{`${monthNames[parseInt(window.archive.month)]} ${window.archive.year}`}</a>\n </div>\n }\n </div>\n </div>\n <div className=\"filter__wrapper col-12 col-lg-3\">\n <div className={`filter ${this.state.filterOpen ? 'filter--open' : ''} d-none d-lg-block`}>\n <div className=\"filter__items\">\n { this.props.pagetype == 'category' && \n <React.Fragment>\n <ul>\n <li key={-1}><a href={`/kategorier/`} className={this.props.categorySlug === 'kategorier' ? `active` : ''}>Alla</a></li>\n {this.props.categories.map((child, index) => {\n return <li key={index} style={!this.state.showAll && index > 9 ? {display: 'none'} : []}><a href={`/${child.slug}/`} className={this.props.categorySlug === child.slug ? `active` : ''}>{child.name.charAt(0).toUpperCase() + child.name.slice(1)}</a></li>;\n })}\n </ul>\n {this.props.categories.length > 9 &&\n <button className={`filter__button ${(this.state.showAll ? 'filter__button--less' : '')}`} onClick={this.onShowToggle}>\n { this.state.showAll ? 'Färre kategorier' : 'Fler kategorier' }\n </button>\n }\n </React.Fragment>\n }\n { this.props.pagetype == 'archive' && \n <React.Fragment>\n <ul className='filter__menu'>\n {archiveIndex.map((year, index) => {\n return (\n <li key={index} className={year.year == window.archive.year ? 'open' : ''}>\n <span onClick={this.onMenuToggle}>{year.year}</span>\n <ul>\n {year.months.map((month, childindex) => {\n return <li key={childindex}><a href={`/${year.year}/${month.number}/`} className={year.year == window.archive.year && month.number == window.archive.month ? `active` : ''}>{month.name} <span>({month.total})</span></a></li>;\n })}\n </ul>\n </li>\n );\n })}\n </ul>\n </React.Fragment>\n }\n </div>\n </div>\n </div>\n <div className={`filter__overlay ${this.state.filterOpen ? 'filter__overlay--show' : ''}`} onClick={this.onFilterMenuToggle}></div>\n </React.Fragment>\n );\n }\n}\n\nexport default TermFilter;","'use strict';\n\nvar isArray = Array.isArray;\nvar keyList = Object.keys;\nvar hasProp = Object.prototype.hasOwnProperty;\nvar hasElementType = typeof Element !== 'undefined';\n\nfunction equal(a, b) {\n // fast-deep-equal index.js 2.0.1\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n var arrA = isArray(a)\n , arrB = isArray(b)\n , i\n , length\n , key;\n\n if (arrA && arrB) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n if (arrA != arrB) return false;\n\n var dateA = a instanceof Date\n , dateB = b instanceof Date;\n if (dateA != dateB) return false;\n if (dateA && dateB) return a.getTime() == b.getTime();\n\n var regexpA = a instanceof RegExp\n , regexpB = b instanceof RegExp;\n if (regexpA != regexpB) return false;\n if (regexpA && regexpB) return a.toString() == b.toString();\n\n var keys = keyList(a);\n length = keys.length;\n\n if (length !== keyList(b).length)\n return false;\n\n for (i = length; i-- !== 0;)\n if (!hasProp.call(b, keys[i])) return false;\n // end fast-deep-equal\n\n // start react-fast-compare\n // custom handling for DOM elements\n if (hasElementType && a instanceof Element && b instanceof Element)\n return a === b;\n\n // custom handling for React\n for (i = length; i-- !== 0;) {\n key = keys[i];\n if (key === '_owner' && a.$$typeof) {\n // React-specific: avoid traversing React elements' _owner.\n // _owner contains circular references\n // and is not needed when comparing the actual elements (and not their owners)\n // .$$typeof and ._store on just reasonable markers of a react element\n continue;\n } else {\n // all other properties should be traversed as usual\n if (!equal(a[key], b[key])) return false;\n }\n }\n // end react-fast-compare\n\n // fast-deep-equal index.js 2.0.1\n return true;\n }\n\n return a !== a && b !== b;\n}\n// end fast-deep-equal\n\nmodule.exports = function exportedEqual(a, b) {\n try {\n return equal(a, b);\n } catch (error) {\n if ((error.message && error.message.match(/stack|recursion/i)) || (error.number === -2146828260)) {\n // warn on circular references, don't crash\n // browsers give this different errors name and messages:\n // chrome/safari: \"RangeError\", \"Maximum call stack size exceeded\"\n // firefox: \"InternalError\", too much recursion\"\n // edge: \"Error\", \"Out of stack space\"\n console.warn('Warning: react-fast-compare does not handle circular references.', error.name, error.message);\n return false;\n }\n // some other error. we should definitely know about these\n throw error;\n }\n};\n","var map = {\n\t\"./sv.json\": \"XIKR\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"bsTh\";","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar propTypes = {\n aspectRatio: _propTypes2.default.oneOf(['inherit', '1:1', '16:9']),\n className: _propTypes2.default.string,\n customProps: _propTypes2.default.object,\n file: _propTypes2.default.string,\n generatePrerollUrl: _propTypes2.default.func,\n image: _propTypes2.default.string,\n isAutoPlay: _propTypes2.default.bool,\n isMuted: _propTypes2.default.bool,\n licenseKey: _propTypes2.default.string,\n onAdPause: _propTypes2.default.func,\n onAdPlay: _propTypes2.default.func,\n onAdResume: _propTypes2.default.func,\n onAdSkipped: _propTypes2.default.func,\n onAdComplete: _propTypes2.default.func,\n onAutoStart: _propTypes2.default.func,\n onEnterFullScreen: _propTypes2.default.func,\n onError: _propTypes2.default.func,\n onExitFullScreen: _propTypes2.default.func,\n onFiftyPercent: _propTypes2.default.func,\n onMute: _propTypes2.default.func,\n onNinetyFivePercent: _propTypes2.default.func,\n onOneHundredPercent: _propTypes2.default.func,\n onPause: _propTypes2.default.func,\n onPlay: _propTypes2.default.func,\n onReady: _propTypes2.default.func,\n onResume: _propTypes2.default.func,\n onSeventyFivePercent: _propTypes2.default.func,\n onTenSeconds: _propTypes2.default.func,\n onThirtySeconds: _propTypes2.default.func,\n onThreeSeconds: _propTypes2.default.func,\n onTwentyFivePercent: _propTypes2.default.func,\n onUnmute: _propTypes2.default.func,\n onVideoLoad: _propTypes2.default.func,\n onBuffer: _propTypes2.default.func,\n onBufferChange: _propTypes2.default.func,\n playerId: _propTypes2.default.string.isRequired,\n playerScript: _propTypes2.default.string.isRequired,\n playlist: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.array]),\n useMultiplePlayerScripts: _propTypes2.default.bool\n};\n\nexports.default = propTypes;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction getPlayerOpts(opts) {\n var aspectRatio = opts.aspectRatio,\n _opts$customProps = opts.customProps,\n customProps = _opts$customProps === undefined ? {} : _opts$customProps,\n file = opts.file,\n generatePrerollUrl = opts.generatePrerollUrl,\n image = opts.image,\n isAutoPlay = opts.isAutoPlay,\n isMuted = opts.isMuted,\n licenseKey = opts.licenseKey,\n playlist = opts.playlist;\n\n\n var hasAdvertising = !!generatePrerollUrl;\n\n var playerOpts = {};\n\n if (licenseKey) {\n playerOpts.key = licenseKey;\n }\n\n if (playlist) {\n playerOpts.playlist = playlist;\n } else if (file) {\n playerOpts.file = file;\n }\n\n if (aspectRatio && aspectRatio !== 'inherit') {\n playerOpts.aspectratio = aspectRatio;\n }\n\n if (hasAdvertising) {\n playerOpts.advertising = {\n client: 'googima',\n admessage: 'Ad — xxs left',\n autoplayadsmuted: true\n };\n }\n\n if (typeof isAutoPlay !== 'undefined') {\n playerOpts.autostart = !!isAutoPlay;\n }\n\n if (typeof isMuted !== 'undefined') {\n playerOpts.mute = !!isMuted;\n }\n\n if (image) {\n playerOpts.image = image;\n }\n\n return _extends(playerOpts, customProps);\n}\n\nexports.default = getPlayerOpts;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nfunction onTime(event) {\n var hasFired = this.state.hasFired;\n var position = event.position,\n duration = event.duration;\n\n var hasChanged = false;\n\n this.props.onTime(event);\n\n if (!hasFired.threeSeconds && position > 3) {\n this.props.onThreeSeconds();\n hasFired.threeSeconds = true;\n hasChanged = true;\n }\n\n if (!hasFired.tenSeconds && position > 10) {\n this.props.onTenSeconds();\n hasFired.tenSeconds = true;\n hasChanged = true;\n }\n\n if (!hasFired.thirtySeconds && position > 30) {\n this.props.onThirtySeconds();\n hasFired.thirtySeconds = true;\n hasChanged = true;\n }\n\n if (!hasFired.twentyFivePercent && position / duration * 100 > 25) {\n this.props.onTwentyFivePercent();\n hasFired.twentyFivePercent = true;\n hasChanged = true;\n }\n\n if (!hasFired.fiftyPercent && position / duration * 100 > 50) {\n this.props.onFiftyPercent();\n hasFired.fiftyPercent = true;\n hasChanged = true;\n }\n\n if (!hasFired.seventyFivePercent && position / duration * 100 > 75) {\n this.props.onSeventyFivePercent();\n hasFired.seventyFivePercent = true;\n hasChanged = true;\n }\n\n if (!hasFired.ninetyFivePercent && position / duration * 100 > 95) {\n this.props.onNinetyFivePercent();\n hasFired.ninetyFivePercent = true;\n hasChanged = true;\n }\n\n if (hasChanged) {\n this.setState({\n hasFired: hasFired\n });\n }\n}\n\nexports.default = onTime;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nfunction installPlayerScript(_ref) {\n var context = _ref.context,\n onLoadCallback = _ref.onLoadCallback,\n scriptSrc = _ref.scriptSrc,\n uniqueScriptId = _ref.uniqueScriptId;\n\n var jwPlayerScript = context.createElement('script');\n jwPlayerScript.id = uniqueScriptId;\n jwPlayerScript.src = scriptSrc;\n jwPlayerScript.onload = onLoadCallback;\n\n context.head.appendChild(jwPlayerScript);\n}\n\nexports.default = installPlayerScript;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _onAdPlay = require('./on-ad-play');\n\nvar _onAdPlay2 = _interopRequireDefault(_onAdPlay);\n\nvar _onBeforePlay = require('./on-before-play');\n\nvar _onBeforePlay2 = _interopRequireDefault(_onBeforePlay);\n\nvar _onFullScreen = require('./on-full-screen');\n\nvar _onFullScreen2 = _interopRequireDefault(_onFullScreen);\n\nvar _onMute = require('./on-mute');\n\nvar _onMute2 = _interopRequireDefault(_onMute);\n\nvar _onPlay = require('./on-play');\n\nvar _onPlay2 = _interopRequireDefault(_onPlay);\n\nvar _onTime = require('./on-time');\n\nvar _onTime2 = _interopRequireDefault(_onTime);\n\nvar _onVideoLoad = require('./on-video-load');\n\nvar _onVideoLoad2 = _interopRequireDefault(_onVideoLoad);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction createEventHandlers(component) {\n return {\n onAdPlay: _onAdPlay2.default.bind(component),\n onBeforePlay: _onBeforePlay2.default.bind(component),\n onFullScreen: _onFullScreen2.default.bind(component),\n onMute: _onMute2.default.bind(component),\n onPlay: _onPlay2.default.bind(component),\n onTime: _onTime2.default.bind(component),\n onVideoLoad: _onVideoLoad2.default.bind(component)\n };\n}\n\nexports.default = createEventHandlers;","import React from 'react';\n\nclass Emoji extends React.Component {\n constructor(props) {\n super(props);\n }\n\n fetchType() {\n let svg = false;\n switch (this.props.type) {\n case 'comment':\n svg =\n <svg className={this.props.className} width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\">\n <polygon points=\"8.42105263 15.7894737 11.5789474 15.7894737 10 18.9473684\"></polygon>\n <rect x=\"0\" y=\"0\" width=\"20\" height=\"15.7894737\" rx=\"2\"></rect>\n </svg>;\n break;\n case 'reply':\n svg =\n <svg className={this.props.className} width=\"16\" height=\"16\" viewBox=\"3 3 10 12\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M6.66666667,6 L6.66666667,3.33333333 L2,8 L6.66666667,12.6666667 L6.66666667,9.93333333 C10,9.93333333 \n 12.3333333,11 14,13.3333333 C13.3333333,10 11.3333333,6.66666667 6.66666667,6 Z\" />\n </svg>;\n break;\n case 'check_circle':\n svg =\n <svg className={this.props.className} width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle id=\"check_mark\" r=\"6\" cx=\"8\" cy=\"8\" />\n <path id=\"check_circle\" d=\"M8,1 C11.8659932,1 15,4.13400675 15,8 C15,11.8659932 11.8659932,15 8,15 C4.13400675,15 1,11.8659932 1,8 \n C1,4.13400675 4.13400675,1 8,1 Z M11.1850357,4.61533737 L6.75,9.02524471 L5.01085567,7.28334999 L3.70821857,8.58886433 \n L6.75,11.6192169 L12.4768734,5.91628551 L11.1850357,4.61533737 Z\" />\n </svg>;\n break;\n case 'avatar':\n svg =\n <svg className={this.props.className} version=\"1.1\" id=\"avatar_background\" xmlns=\"http://www.w3.org/2000/svg\" x=\"0\" y=\"0\"\n viewBox=\"-7 -7 40 40\" width=\"120\" height=\"120\">\n <circle fill=\"#cccccc\" r=\"20\" cx=\"13\" cy=\"13\" />\n <path id=\"avatar_user\" fill=\"#b1b1b1\" d=\"M16.428,15.744c-0.159-0.052-1.164-0.505-0.536-2.414h-0.009c1.637-1.686,2.888-4.399,2.888-7.07\n c0-4.107-2.731-6.26-5.905-6.26C9.69,0,6.974,2.152,6.974,6.26c0,2.682,1.244,5.406,2.891,7.088\n c0.642,1.684-0.506,2.309-0.746,2.396c-3.324,1.203-7.224,3.394-7.224,5.557c0,0.584,0,0.23,0,0.811\n c0,2.947,5.714,3.617,11.002,3.617c5.296,0,10.938-0.67,10.938-3.617c0-0.58,0-0.227,0-0.811\n C23.835,19.073,19.916,16.899,16.428,15.744z\"/>\n </svg>;\n break;\n case 'thumbs_up':\n svg =\n <svg className={this.props.className} width=\"14\" height=\"12\" viewBox=\"2 1 12 12\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M13,7 C13,6.54166667 12.625,6.16666667 12.1666667,6.16666667 L7.85,6.16666667 L8.4,3.51666667 \n L8.41666667,3.325 C8.41666667,3.06666667 8.30833333,2.83333333 8.14166667,2.65833333 L7.48333333,2 \n L3.36666667,6.11666667 C3.14166667,6.34166667 3,6.65833333 3,7 L3,12.4166667 C3,13.1083333 3.55833333,13.6666667 \n 4.25,13.6666667 L9.875,13.6666667 C10.3916667,13.6666667 10.8333333,13.35 11.025,12.9083333 L12.9083333,8.5 \n C12.9666667,8.35833333 13,8.2 13,8.04166667 L13,7 Z\" />\n </svg>;\n break;\n case 'heart':\n svg =\n <svg className={this.props.className} width=\"22\" height=\"22\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M23.9984899,8.27323782 C23.9984899,8.25590843 24,8.23899165 24,8.22166226 C24,4.97364016 21.4066646,2 \n 17.5075391,2 C14.4091919,2 12.6131344,4.01722308 12.0000243,5.90488837 C11.3869141,4.01722308 9.59040116,2 \n 6.49205398,2 C2.59338397,2 0,4.97364016 0,8.22166226 C0,8.23899165 0.00155870702,8.25590843 0.00155870702,8.27323782 \n C-0.0193945376,8.97961661 0,16.1700741 11.9963802,22.0302949 L11.9963802,22.0319453 L11.9982023,22.0311201 \n L12.0000243,22.0319453 L12.0018463,22.0311201 L12.0036683,22.0319453 L12.0036683,22.0302949 C24,16.1700741 \n 24.0189876,8.97961661 23.9984899,8.27323782\" fill=\"#E62728\" />\n </svg>;\n break;\n case 'wow':\n svg =\n <svg className={this.props.className} width=\"22\" height=\"22\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n <g>\n <path d=\"M24,12 C24,18.6274362 18.6274362,24 12,24 C5.37256376,24 0,18.6274362 0,12 C0,5.37256376 5.37256376,0 \n 12,0 C18.6274362,0 24,5.37256376 24,12\" id=\"Fill-1\" fill=\"#FBC245\" />\n <path d=\"M16.1152859,17.6218523 C16.7555544,17.2190067 23.4715812,12.8755973 22.314051,7.82904698 C21.3385879,3.57621477 \n 15.5013799,2.00649664 15.0785611,1.89868456 C12.8686819,1.3353557 10.9828832,1.63366443 10.3359034,1.7569396 \n C9.92511141,1.83522148 7.99909799,2.21927517 5.99195705,3.60783893 C5.4457557,3.98566443 3.48844027,5.37154362 \n 2.29015839,7.76289933 C0.812252349,10.7122685 0.187232215,15.7929664 3.04559463,18.6039732 C6.5731651,22.0730738 \n 13.1175409,19.5079732 16.1152859,17.6218523\" id=\"Fill-3\" fill=\"#FED154\" />\n <path d=\"M1.90901477,17.1454228 C1.49349799,16.1504161 0.30794094,12.956698 1.38402148,9.10365101 C1.69913557,7.97532886 \n 2.72855839,4.50053691 6.20431678,2.39820134 C10.1748403,-0.0033557047 14.3087463,1.21812081 15.1528805,1.46757047 \n C19.2901154,2.69006711 21.3914846,5.79283221 21.9299007,6.64577181 C18.2682094,1.91744966 11.6777664,0.695812081 \n 6.80088054,3.6390604 C2.33489396,6.33430872 0.242437584,11.9568591 1.90901477,17.1454228\" id=\"Fill-5\" fill=\"#FEDA73\" />\n <path d=\"M14.2653262,15.6286443 C14.2653262,17.7537987 13.2717691,19.4764832 12.0461047,19.4764832 C10.8204403,19.4764832 \n 9.82682953,17.7537987 9.82682953,15.6286443 C9.82682953,13.5034899 10.8204403,11.7807517 12.0461047,11.7807517 \n C13.2717691,11.7807517 14.2653262,13.5034899 14.2653262,15.6286443\" id=\"Fill-7\" fill=\"#6F4F3E\" />\n <path d=\"M13.8485208,17.8136 C13.4208698,17.3260832 12.7937557,17.0178953 12.0942658,17.0178953 C11.3402792,17.0178953 \n 10.6702121,17.3759087 10.2436349,17.9308081 C10.6483597,18.8691168 11.2943195,19.4765262 12.022051,19.4765262 \n C12.7795812,19.4765262 13.4480913,18.8180027 13.8485208,17.8136\" id=\"Fill-9\" fill=\"#EB6466\" />\n <path d=\"M8.48604027,9.31228993 C8.48604027,10.2611758 8.06134228,11.0304107 7.53747651,11.0304107 C7.01361074,11.0304107 \n 6.58896644,10.2611758 6.58896644,9.31228993 C6.58896644,8.36340403 7.01361074,7.59416913 7.53747651,7.59416913 \n C8.06134228,7.59416913 8.48604027,8.36340403 8.48604027,9.31228993\" id=\"Fill-11\" fill=\"#020203\" />\n <path d=\"M8.48604027,9.31228993 C8.48604027,10.2611758 8.06134228,11.0304107 7.53747651,11.0304107 C7.01361074,11.0304107 \n 6.58896644,10.2611758 6.58896644,9.31228993 C6.58896644,8.36340403 7.01361074,7.59416913 7.53747651,7.59416913 \n C8.06134228,7.59416913 8.48604027,8.36340403 8.48604027,9.31228993 Z\" id=\"Stroke-13\" stroke=\"#020203\" />\n <path d=\"M17.4110497,9.25765369 C17.4110497,10.2065396 16.9863517,10.9757745 16.4624859,10.9757745 C15.9386201,10.9757745 \n 15.5139758,10.2065396 15.5139758,9.25765369 C15.5139758,8.30876779 15.9386201,7.53953289 16.4624859,7.53953289 \n C16.9863517,7.53953289 17.4110497,8.30876779 17.4110497,9.25765369\" id=\"Fill-15\" fill=\"#020203\" />\n <path d=\"M17.4110497,9.25765369 C17.4110497,10.2065396 16.9863517,10.9757745 16.4624859,10.9757745 C15.9386201,10.9757745 \n 15.5139758,10.2065396 15.5139758,9.25765369 C15.5139758,8.30876779 15.9386201,7.53953289 16.4624859,7.53953289 \n C16.9863517,7.53953289 17.4110497,8.30876779 17.4110497,9.25765369 Z\" id=\"Stroke-17\" stroke=\"#020203\" />\n </g>\n </svg>;\n break;\n case 'sad':\n svg =\n <svg className={this.props.className} width=\"22\" height=\"22\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n <defs>\n <polygon id=\"path-1\" points=\"1.0738255e-05 5.36912752e-06 24 5.36912752e-06 24 24 1.0738255e-05 24\"></polygon>\n </defs>\n <g id=\"Emoji_sad\" stroke=\"none\" strokeWidth=\"1\" fill=\"none\" fillRule=\"evenodd\">\n <g id=\"Group-24\">\n <g id=\"Group-3\">\n <mask id=\"mask-2\" fill=\"white\">\n <use xlinkHref=\"#path-1\"></use>\n </mask>\n <g id=\"Clip-2\"></g>\n <path d=\"M24.0000107,12.0000054 C24.0000107,18.6274416 18.6273933,24.0000054 12.0000107,24.0000054 C5.3725745,24.0000054 \n 1.0738255e-05,18.6274416 1.0738255e-05,12.0000054 C1.0738255e-05,5.37256913 5.3725745,5.36912752e-06 \n 12.0000107,5.36912752e-06 C18.6273933,5.36912752e-06 24.0000107,5.37256913 \n 24.0000107,12.0000054\" id=\"Fill-1\" fill=\"#FBC245\" mask=\"url(#mask-2)\" />\n </g>\n <path d=\"M16.1152859,17.6218577 C16.7555544,17.2190121 23.4716349,12.8756027 22.3141047,7.82905235 C21.3385879,3.57622013 \n 15.5013799,2.00650201 15.0785611,1.89868993 C12.8686819,1.33536107 10.9828832,1.6336698 10.3359034,1.75694497 \n C9.92511141,1.83522685 7.99909799,2.21928054 5.99195705,3.6078443 C5.4457557,3.9856698 3.48844027,5.37154899 \n 2.29015839,7.7629047 C0.812252349,10.7122738 0.187232215,15.7929718 3.04559463,18.6039785 C6.5731651,22.0730792 \n 13.1175409,19.5079248 16.1152859,17.6218577\" id=\"Fill-4\" fill=\"#FED154\" />\n <path d=\"M1.90901477,17.1454013 C1.49349799,16.1503946 0.30794094,12.9567302 1.38402148,9.10362953 C1.69913557,7.97536107 \n 2.72855839,4.50051544 6.20431678,2.39817987 C10.1748403,-0.00337718121 14.3087463,1.21809933 15.1528805,1.46754899 \n C19.2901154,2.69009933 21.3914846,5.79281074 21.9299007,6.64575034 C18.2682094,1.91742819 11.6777664,0.695844295 \n 6.80088054,3.63903893 C2.33489396,6.33428725 0.242437584,11.9568376 1.90901477,17.1454013\" id=\"Fill-6\" fill=\"#FEDA73\" />\n <path d=\"M8.31227383,8.72271141 C8.31227383,9.67159732 7.88757584,10.4408322 7.36371007,10.4408322 C6.8398443,10.4408322 \n 6.4152,9.67159732 6.4152,8.72271141 C6.4152,7.7738255 6.8398443,7.0045906 7.36371007,7.0045906 C7.88757584,7.0045906 \n 8.31227383,7.7738255 8.31227383,8.72271141\" id=\"Fill-8\" fill=\"#020203\" />\n <path d=\"M8.31227383,8.72271141 C8.31227383,9.67159732 7.88757584,10.4408322 7.36371007,10.4408322 C6.8398443,10.4408322 \n 6.4152,9.67159732 6.4152,8.72271141 C6.4152,7.7738255 6.8398443,7.0045906 7.36371007,7.0045906 C7.88757584,7.0045906 \n 8.31227383,7.7738255 8.31227383,8.72271141 Z\" id=\"Stroke-10\" stroke=\"#020203\" />\n <path d=\"M17.0818577,8.72271141 C17.0818577,9.67159732 16.6651597,10.4408322 16.1512268,10.4408322 C15.6372403,10.4408322 \n 15.2205423,9.67159732 15.2205423,8.72271141 C15.2205423,7.7738255 15.6372403,7.0045906 16.1512268,7.0045906 \n C16.6651597,7.0045906 17.0818577,7.7738255 17.0818577,8.72271141\" id=\"Fill-12\" fill=\"#020203\" />\n <path d=\"M17.0818577,8.72271141 C17.0818577,9.67159732 16.6651597,10.4408322 16.1512268,10.4408322 C15.6372403,10.4408322 \n 15.2205423,9.67159732 15.2205423,8.72271141 C15.2205423,7.7738255 15.6372403,7.0045906 16.1512268,7.0045906 \n C16.6651597,7.0045906 17.0818577,7.7738255 17.0818577,8.72271141 Z\" id=\"Stroke-14\" stroke=\"#020203\" />\n <path d=\"M5.2914094,6.40192752 C5.20861745,6.35446443 5.20791946,6.25712215 5.26434899,6.19902819 C5.30241611,6.15988725 \n 5.36571812,6.1392698 5.42499329,6.14254497 C5.74365101,6.16031678 6.2402953,6.11972617 6.4409396,6.10528322 \n C6.90671141,6.07177987 7.29855034,5.85271946 7.42837584,5.78018255 C7.65377181,5.65422282 7.82005369,5.51843758 \n 7.92695302,5.42104161 C8.05387919,5.27741745 8.19868456,5.09400805 8.33463087,4.87382013 C8.45516779,4.67849128 \n 8.53994631,4.50093423 8.60013423,4.35210201 C8.60679195,4.34007517 8.68110067,4.20826309 8.77565101,4.19360537 \n C8.86408054,4.17991409 8.93897987,4.2685047 8.93807537,4.32321611 C8.93500671,4.52165906 8.89404027,4.9325047 \n 8.58096644,5.38823624 C8.11272483,6.06990067 7.24727517,6.54399463 6.45157047,6.61765906 C5.87358389,6.67118926 \n 5.47551678,6.50018255 5.2914094,6.40192752\" id=\"Fill-16\" fill=\"#29182D\" />\n <path d=\"M18.9573315,6.40192752 C19.0401235,6.35446443 19.0407678,6.25712215 18.9843383,6.19902819 C18.9463248,6.15988725 \n 18.8830228,6.1392698 18.823694,6.14254497 C18.5050899,6.16031678 18.0084456,6.11972617 17.8077477,6.10528322 \n C17.3420295,6.07177987 16.9501906,5.85271946 16.8203651,5.78018255 C16.5949691,5.65422282 16.4286872,5.51843758 \n 16.3217879,5.42104161 C16.1948617,5.27741745 16.0500564,5.09400805 15.9141101,4.87382013 C15.7935732,4.67849128 \n 15.7087946,4.50093423 15.6486067,4.35210201 C15.641949,4.34007517 15.5676403,4.20826309 15.4730899,4.19360537 \n C15.3846604,4.17991409 15.3097611,4.2685047 15.3106128,4.32321611 C15.3137342,4.52165906 15.3547007,4.9325047 \n 15.6677745,5.38823624 C16.1360161,6.06990067 17.0014658,6.54399463 17.7971705,6.61765906 C18.375157,6.67118926 \n 18.7731705,6.50018255 18.9573315,6.40192752\" id=\"Fill-18\" fill=\"#29182D\" />\n <path d=\"M7.82076779,15.7247302 C7.72815034,15.9696161 7.82699597,16.2192268 7.98296913,16.2833879 C8.08809664,16.3266631 \n 8.21738523,16.2848913 8.31521074,16.1879248 C8.8410094,15.6670658 9.73051275,15.0294819 10.0879356,14.7668779 \n C10.9175195,14.1572671 11.8113718,14.1319248 12.1075329,14.123549 C12.6216805,14.1089987 13.0449826,14.2076832 \n 13.327506,14.2969181 C13.691694,14.4744215 14.1272913,14.7268242 14.5855463,15.0865557 C14.9918819,15.4055356 \n 15.3189691,15.7326765 15.574647,16.0229852 C15.5982711,16.0438174 15.8606067,16.2696966 16.0369826,16.1659651 \n C16.2019758,16.0689987 16.2389154,15.730851 16.181251,15.5924886 C15.9720698,15.0900456 15.4802577,14.1015893 \n 14.4777342,13.4045691 C12.9782443,12.3620456 11.0138953,12.4425826 9.57985503,13.4419919 C8.53808322,14.1679517 \n 8.0342443,15.1989852 7.82076779,15.7247302\" id=\"Fill-20\" fill=\"#604738\" />\n <path d=\"M17.8383356,11.2723651 C17.7975302,11.2484188 17.6767785,11.1847409 17.5158658,11.2022443 C17.313396,11.2242577 \n 17.1947919,11.3588081 17.1692886,11.3891436 C16.0826309,12.3619221 15.5104966,13.3370094 15.214443,13.9479624 \n C14.9983893,14.3938148 14.8738255,14.7605262 14.7980671,14.9858148 C14.4935302,15.8920698 14.2148725,16.7210631 \n 14.3706846,17.7376537 C14.4184698,18.0496537 14.5108188,18.6108349 14.9121611,19.194298 C15.4533691,19.9811436 \n 16.1915168,20.2780027 16.3407785,20.3352376 C17.1882416,20.6603383 17.9226846,20.4997477 18.1857181,20.4383785 \n C18.4642685,20.3734121 19.408698,20.1531705 20.0081074,19.2930362 C20.5128054,18.5686872 20.4897181,17.7969826 \n 20.4697987,17.1327141 C20.4471409,16.3764188 20.2699597,15.7503248 20.0055302,15.0650631 C19.6598658,14.1693315 \n 19.0248591,12.808902 17.8383356,11.2723651\" id=\"Fill-22\" fill=\"#4DC0E4\" />\n </g>\n </g>\n </svg>;\n break;\n case 'happy':\n svg =\n <svg className={this.props.className} width=\"22\" height=\"22\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n <defs>\n <polygon id=\"path-1\" points=\"0 5.36912752e-06 23.9999946 5.36912752e-06 23.9999946 24 0 24\"></polygon>\n </defs>\n <g id=\"Emoji_happy\">\n <g id=\"Group-20\">\n <g id=\"Group-3\">\n <mask id=\"mask-2\" fill=\"white\">\n <use xlinkHref=\"#path-1\"></use>\n </mask>\n <g id=\"Clip-2\"></g>\n <path d=\"M23.9999946,12.0000054 C23.9999946,18.6274416 18.6274309,24.0000054 11.9999946,24.0000054 C5.37255839,24.0000054 \n -5.36912752e-06,18.6274416 -5.36912752e-06,12.0000054 C-5.36912752e-06,5.37256913 5.37255839,5.36912752e-06 \n 11.9999946,5.36912752e-06 C18.6274309,5.36912752e-06 23.9999946,5.37256913 23.9999946,12.0000054\" id=\"Fill-1\" fill=\"#FBC245\" mask=\"url(#mask-2)\" />\n </g>\n <path d=\"M16.1152966,17.6218577 C16.7555651,17.2190121 23.4715919,12.8756027 22.3140617,7.82905235 C21.3385987,3.57622013 \n 15.5013906,2.00650201 15.0785718,1.89868993 C12.8686926,1.33536107 10.982894,1.6336698 10.3359141,1.75694497 \n C9.92512215,1.83522685 7.99910872,2.21928054 5.99196779,3.6078443 C5.44576644,3.9856698 3.48845101,5.37154899 \n 2.29016913,7.7629047 C0.812263087,10.7122738 0.187242953,15.7929718 3.04560537,18.6039785 C6.57317584,22.0730792 \n 13.1175517,19.5079248 16.1152966,17.6218577\" id=\"Fill-4\" fill=\"#FED154\" />\n <path d=\"M1.9090094,17.1454013 C1.49349262,16.1503946 0.30793557,12.9567302 1.38401611,9.10362953 C1.6991302,7.97536107 \n 2.72855302,4.50051544 6.20431141,2.39817987 C10.1748349,-0.00337718121 14.3087409,1.21809933 15.1528752,1.46754899 \n C19.2901101,2.69009933 21.3915329,5.79281074 21.9298953,6.64575034 C18.268204,1.91742819 11.6777611,0.695844295 \n 6.80087517,3.63903893 C2.33488859,6.33428725 0.242432215,11.9568376 1.9090094,17.1454013\" id=\"Fill-6\" fill=\"#FEDA73\" />\n <path d=\"M8.45474899,8.89516242 C8.45474899,9.84404832 8.03005101,10.6132832 7.50618523,10.6132832 C6.98231946,10.6132832 \n 6.55767517,9.84404832 6.55767517,8.89516242 C6.55767517,7.94627651 6.98231946,7.17704161 7.50618523,7.17704161 \n C8.03005101,7.17704161 8.45474899,7.94627651 8.45474899,8.89516242\" id=\"Fill-8\" fill=\"#020203\" />\n <path d=\"M8.45474899,8.89516242 C8.45474899,9.84404832 8.03005101,10.6132832 7.50618523,10.6132832 C6.98231946,10.6132832 \n 6.55767517,9.84404832 6.55767517,8.89516242 C6.55767517,7.94627651 6.98231946,7.17704161 7.50618523,7.17704161 \n C8.03005101,7.17704161 8.45474899,7.94627651 8.45474899,8.89516242 Z\" id=\"Stroke-10\" stroke=\"#020203\" />\n <path d=\"M17.6001557,8.89516242 C17.6001557,9.84404832 17.1835114,10.6132832 16.6695248,10.6132832 C16.1555383,10.6132832 \n 15.7388403,9.84404832 15.7388403,8.89516242 C15.7388403,7.94627651 16.1555383,7.17704161 16.6695248,7.17704161 \n C17.1835114,7.17704161 17.6001557,7.94627651 17.6001557,8.89516242\" id=\"Fill-12\" fill=\"#020203\" />\n <path d=\"M17.6001557,8.89516242 C17.6001557,9.84404832 17.1835114,10.6132832 16.6695248,10.6132832 C16.1555383,10.6132832 \n 15.7388403,9.84404832 15.7388403,8.89516242 C15.7388403,7.94627651 16.1555383,7.17704161 16.6695248,7.17704161 \n C17.1835114,7.17704161 17.6001557,7.94627651 17.6001557,8.89516242 Z\" id=\"Stroke-14\" stroke=\"#020203\" />\n <path d=\"M4.1958604,13.0144215 C4.18496107,13.1552537 4.17884027,13.2972134 4.17884027,13.4403544 C4.17884027,17.047549 \n 7.69288054,19.9718443 12.0276993,19.9718443 C16.3625181,19.9718443 19.8766121,17.047549 19.8766121,13.4403544 \n C19.8766121,13.2972134 19.8704376,13.1552537 19.8595383,13.0144215 L4.1958604,13.0144215 Z\" id=\"Fill-16\" fill=\"#6F513F\" />\n <path d=\"M18.1631409,17.550706 C16.5304966,17.0148671 14.5802685,16.7030819 12.4849128,16.7030819 C10.1178792,16.7030819 \n 7.93597315,17.1008805 6.18810738,17.7702497 C7.62601342,19.1204779 9.7252349,19.9718067 12.0637584,19.9718067 \n C14.5265772,19.9718067 16.7241611,19.0275919 18.1631409,17.550706\" id=\"Fill-18\" fill=\"#EB666D\" />\n </g>\n </g>\n </svg>;\n break;\n case 'angry':\n svg =\n <svg className={this.props.className} width=\"22\" height=\"22\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\">\n <defs>\n <polygon id=\"path-1\" points=\"1.0738255e-05 5.36912752e-06 24 5.36912752e-06 24 24 1.0738255e-05 24\"></polygon>\n </defs>\n <g id=\"Emoji_angry\" stroke=\"none\" strokeWidth=\"1\" fill=\"none\" fillRule=\"evenodd\">\n <g id=\"Group-26\">\n <g id=\"Group-3\">\n <mask id=\"mask-2\" fill=\"white\">\n <use xlinkHref=\"#path-1\"></use>\n </mask>\n <g id=\"Clip-2\"></g>\n <path d=\"M24.0000107,12.0000054 C24.0000107,18.6274416 18.6273933,24.0000054 12.0000107,24.0000054 C5.3725745,24.0000054 \n 1.0738255e-05,18.6274416 1.0738255e-05,12.0000054 C1.0738255e-05,5.37256913 5.3725745,5.36912752e-06 12.0000107,5.36912752e-06 \n C18.6273933,5.36912752e-06 24.0000107,5.37256913 24.0000107,12.0000054\" id=\"Fill-1\" fill=\"#EB6423\" mask=\"url(#mask-2)\" />\n </g>\n <path d=\"M16.1152859,17.6218631 C16.7555544,17.2190174 23.4716349,12.8756617 22.3141047,7.82905772 C21.3385879,3.5762255 \n 15.5013799,2.00650738 15.0785611,1.8986953 C12.8686819,1.33536644 10.9828832,1.63367517 10.3359034,1.75695034 \n C9.92511141,1.83523221 7.99909799,2.2193396 5.99195705,3.60779597 C5.4457557,3.98567517 3.48844027,5.37160805 \n 2.29015839,7.76296376 C0.812252349,10.7123329 0.187232215,15.7929772 3.04559463,18.6039839 C6.5731651,22.0730309 \n 13.1175409,19.5079839 16.1152859,17.6218631\" id=\"Fill-4\" fill=\"#EC6C24\" />\n <path d=\"M1.90901477,17.1454013 C1.49349799,16.1503946 0.30794094,12.9566765 1.38402148,9.10368322 C1.69913557,7.97530738 \n 2.72855839,4.50051544 6.20431678,2.39817987 C10.1748403,-0.00337718121 14.3087463,1.21809933 15.1528805,1.46754899 \n C19.2901154,2.69009933 21.3914846,5.79286443 21.9299007,6.64575034 C18.2682094,1.91742819 11.6777664,0.695844295 \n 6.80088054,3.63903893 C2.33494765,6.33434094 0.242437584,11.9568376 1.90901477,17.1454013\" id=\"Fill-6\" fill=\"#EF804B\" />\n <path d=\"M8.8605906,10.8750604 C8.8605906,11.824 8.43589262,12.5931812 7.91202685,12.5931812 C7.38816107,12.5931812 \n 6.96351678,11.824 6.96351678,10.8750604 C6.96351678,9.9261745 7.38816107,9.1569396 7.91202685,9.1569396 \n C8.43589262,9.1569396 8.8605906,9.9261745 8.8605906,10.8750604\" id=\"Fill-8\" fill=\"#020203\" />\n <path d=\"M8.8605906,10.8750604 C8.8605906,11.824 8.43589262,12.5931812 7.91202685,12.5931812 C7.38816107,12.5931812 \n 6.96351678,11.824 6.96351678,10.8750604 C6.96351678,9.9261745 7.38816107,9.1569396 7.91202685,9.1569396 \n C8.43589262,9.1569396 8.8605906,9.9261745 8.8605906,10.8750604 Z\" id=\"Stroke-10\" stroke=\"#020203\" />\n <path d=\"M17.7273611,10.6602953 C17.7273611,11.6092349 17.3026631,12.3784161 16.7787973,12.3784161 C16.2549315,12.3784161 \n 15.8302872,11.6092349 15.8302872,10.6602953 C15.8302872,9.7114094 16.2549315,8.9421745 16.7787973,8.9421745 \n C17.3026631,8.9421745 17.7273611,9.7114094 17.7273611,10.6602953\" id=\"Fill-12\" fill=\"#020203\" />\n <path d=\"M17.7273611,10.6602953 C17.7273611,11.6092349 17.3026631,12.3784161 16.7787973,12.3784161 C16.2549315,12.3784161 \n 15.8302872,11.6092349 15.8302872,10.6602953 C15.8302872,9.7114094 16.2549315,8.9421745 16.7787973,8.9421745 \n C17.3026631,8.9421745 17.7273611,9.7114094 17.7273611,10.6602953 Z\" id=\"Stroke-14\" stroke=\"#020203\" />\n <line x1=\"10.2143034\" y1=\"8.88900403\" x2=\"7.07631678\" y2=\"6.04605101\" id=\"Fill-16\" fill=\"#FEFEFE\"></line>\n <polygon id=\"Fill-18\" fill=\"#020203\" points=\"9.91690738 9.1569396 6.77892081 6.31404027 7.37371275 5.77809396 10.5116993 8.62104698\"></polygon>\n <line x1=\"14.2612832\" y1=\"8.88900403\" x2=\"17.3992698\" y2=\"6.04605101\" id=\"Fill-20\" fill=\"#FEFEFE\"></line>\n <polygon id=\"Fill-22\" fill=\"#020203\" points=\"14.5586577 9.1569396 17.6966443 6.31404027 17.1018523 5.77809396 13.9638658 8.62104698\"></polygon>\n <path d=\"M6.32412349,17.5114899 C6.19649933,17.8012617 6.32202953,18.1003221 6.52691544,18.1796242 C6.66506309,18.2331007 \n 6.83692886,18.1858523 6.96841879,18.0722416 C7.67467383,17.4620403 8.86452617,16.7197584 9.34275436,16.4138255 C10.4527141,15.7037047 \n 11.6354255,15.6903893 12.0273181,15.6859866 C12.7075866,15.6783087 13.2654389,15.8037315 13.6373047,15.9153557 C14.1152107,16.133557 \n 14.6860027,16.4422282 15.2846067,16.8791678 C15.815345,17.2665503 16.2411705,17.6622013 16.5731973,18.0125906 C16.6040161,18.0378792 \n 16.9461906,18.3117047 17.1816805,18.1915973 C17.4019221,18.0791678 17.4578148,17.677396 17.3845262,17.5114899 C17.1183785,16.909396 \n 16.4885262,15.723302 15.1772242,14.8746577 C13.2158282,13.6052886 10.6160966,13.6641342 8.69845906,14.8269262 C7.30543893,15.6715436 \n 6.61743893,16.8895839 6.32412349,17.5114899\" id=\"Fill-24\" fill=\"#63483A\" />\n </g>\n </g>\n </svg>;\n break;\n default:\n break;\n }\n\n return svg;\n }\n\n render() {\n return this.fetchType();\n }\n}\n\nexport default Emoji;","import React from 'react';\nimport axios from 'axios';\nimport Comment from './Comment';\nimport Emoji from './../Partials/Emoji';\n\nclass CommentsForm extends React.Component {\n constructor(props) {\n super(props);\n\n this.id = `${props.post.id}_${props.replyTo?.id ?? 'first'}`;\n\n this.remember = this.getRememberCookie();\n\n this.state = {\n author_name: this.remember.author_name || '',\n author_email: this.remember.author_email || '',\n author_url: this.remember.author_url || '',\n comment_body: '',\n isSubmitted: false,\n isLoading: false,\n newComment: false,\n }\n\n this.onChangeValue = this.onChangeValue.bind(this);\n this.onRememberChange = this.onRememberChange.bind(this);\n this.onSubmit = this.onSubmit.bind(this);\n\n this.postStatusEnum = {\n publish: 'publish',\n spam: 'spam',\n approval: 'in_approval'\n };\n\n this.postStatusNotApprovedEnum = [\n this.postStatusEnum.approval,\n this.postStatusEnum.spam\n ];\n }\n\n onChangeValue(e) {\n const type = e.target.type;\n\n // Reset validation error\n e.target.classList.remove('is-invalid');\n\n switch (type) {\n case 'checkbox':\n this.setState({\n [e.target.name]: e.target.checked\n });\n break;\n case 'textarea':\n this.setState({\n commentBodyLength: e.target.value.length,\n [e.target.name]: e.target.value\n });\n break;\n \n default:\n this.setState({\n [e.target.name]: e.target.value\n });\n break;\n }\n }\n\n getRememberCookie() {\n let rememberJSON = window.Cookie.get('comment_remember');\n if (typeof rememberJSON == 'undefined') {\n return false;\n }\n return JSON.parse(rememberJSON);\n }\n\n onRememberChange(e) {\n if (e.target.checked) {\n this.updateRemember();\n } else {\n window.Cookie.remove('comment_remember');\n }\n }\n\n updateRemember() {\n window.Cookie.set('comment_remember', JSON.stringify({\n author_name: this.state.author_name, \n author_email: this.state.author_email, \n author_url: this.state.author_url, \n }), { expires: (365 * 10) });\n }\n\n onSubmit(e) {\n e.preventDefault();\n\n if (this.remember) {\n this.updateRemember();\n }\n\n // Validate\n if (this.validate()) {\n // Post the comment\n this.postComment();\n }\n\n }\n\n validate() {\n let errors = [];\n\n if (this.state.comment_body.length < 1) {\n errors.push('comment_body');\n }\n\n // If not logged in\n if (!window.isLoggedIn) {\n if (this.state.author_name.length < 1) {\n errors.push('author_name');\n }\n \n if (this.state.author_email.length < 1 || !/^\\w+([\\.-]?\\w+)*@\\w+([\\.-]?\\w+)*(\\.\\w{2,3})+$/.test(String(this.state.author_email).toLowerCase())) {\n errors.push('author_email');\n }\n\n if (this.state.author_url.length > 0 && !/^(\\@\\w+|(https?:\\/\\/)?([\\w\\-\\/]+\\.)+[\\w\\-\\/]+$)/.test(this.state.author_url)) {\n errors.push('author_url');\n }\n }\n\n // Mark error inputs\n errors.forEach((name) => {\n const input = document.querySelector(`#comment_form_${this.id} [name=\"${name}\"]`);\n input.classList.add('is-invalid');\n });\n\n return !errors.length > 0;\n }\n\n postComment() {\n this.loggedIn = window.Cookie.get('aller_blogger_platform_session') != null;\n\n this.setState({\n isLoading: true,\n });\n\n axios.post('/api/comment/store/', {\n post_id: this.props.post.id,\n comment_id: this.props.replyTo ? this.props.replyTo.id : null,\n author_name: this.state.author_name,\n author_email: this.state.author_email,\n author_url: this.state.author_url,\n comment_body: this.state.comment_body,\n })\n .then((response) => {\n this.setState({\n isSubmitted: true,\n isLoading: false,\n author_name: '',\n author_email: '',\n author_url: '',\n comment_body: '',\n newComment: response.data.comment,\n });\n\n if(response.data.comment.status == this.postStatusEnum.publish) {\n this.props.onFetchComments(); // Save for later, as we might need this again here\n }\n\n setTimeout(() => {\n this.setState({\n isSubmitted: false\n });\n }, 10000);\n })\n .catch((error) => {\n const errorBag = error?.response?.data?.errors ?? null;\n \n if (errorBag !== null) {\n // Show first error.\n this.setState({\n error: Object.values(errorBag)[0][0],\n isLoading: false\n }); \n\n setTimeout(() => {\n this.setState({\n isSubmitted: false,\n error: false\n });\n }, 10000);\n }\n });\n }\n\n render() {\n const commentOnText = this.props.replyTo ? this.props.replyTo.author_name : this.props.post.title;\n\n return (\n <React.Fragment>\n\n { this.state.error && (\n <p className=\"mb-0 comment--approval-message fadeout-5-5\">{this.state.error}</p>\n )}\n { this.state.isSubmitted && this.postStatusNotApprovedEnum.indexOf(this.state.newComment.status) !== -1 && (\n <p className=\"mb-0 comment--approval-message fadeout-5-5\">{trans('Your comment has been submitted! Pending approval.')}</p>\n )} \n {!this.state.newComment && (\n <form id={`comment_form_${this.id}`} className={\"comments__form\" + (this.props.replyTo ? \" comments__form--reply\" : '')} onSubmit={this.onSubmit}>\n <h4 className=\"comments__form__title\">\n Kommentera: {commentOnText}\n </h4>\n\n <div className=\"form-group\">\n <textarea name=\"comment_body\" cols=\"10\" rows=\"4\" className=\"form-control\" placeholder=\"Vad tycker du?\" value={this.state.comment_body} onChange={this.onChangeValue} />\n <div className=\"invalid-feedback\">Skriv in en kommentar</div>\n <p className='comments-body--count'>{this.state.commentBodyLength ?? 0}/5000</p>\n </div>\n\n { !window.isLoggedIn && \n <React.Fragment>\n <div className=\"form-group\">\n <input type=\"text\" name=\"author_name\" className=\"form-control\" placeholder=\"Namn\" value={this.state.author_name} onChange={this.onChangeValue} />\n <div className=\"invalid-feedback\">Du måste ange ett namn</div>\n </div>\n\n <div className=\"form-group\">\n <input type=\"text\" name=\"author_email\" className=\"form-control\" placeholder=\"E-post\" value={this.state.author_email} onChange={this.onChangeValue} />\n <div className=\"invalid-feedback\">Ange en giltig e-postadress</div>\n </div>\n\n <div className=\"form-group\">\n <input type=\"text\" name=\"author_url\" className=\"form-control\" placeholder=\"Blogg/Instagram\" value={this.state.author_url} onChange={this.onChangeValue} />\n <div className=\"invalid-feedback\">Ange en giltig URL eller instagram tag (@konto)</div>\n </div>\n </React.Fragment>\n }\n\n <div className=\"form-group\">\n { !window.isLoggedIn && \n <div className=\"form-check\">\n <input type=\"checkbox\" id={`comment_form_${this.id}_remember`} name=\"remember\" className=\"form-check-input\" onChange={this.onRememberChange} defaultChecked={this.remember} />\n <label className=\"form-check-label\" htmlFor={`comment_form_${this.id}_remember`}>Spara mitt namn och E-post i den här webbläsaren till nästa gång jag kommenterar.</label>\n </div>\n }\n\n {/* <div className=\"form-check\">\n <input type=\"checkbox\" id={`comment_form_${this.id}_notify`} name=\"notify\" className=\"form-check-input\" />\n <label className=\"form-check-label\" htmlFor={`comment_form_${this.id}_notify`}>Notifiera mig när jag får svar</label>\n </div> */}\n </div>\n\n <div className=\"form-group clearfix\">\n <input type=\"submit\" \n className=\"btn btn-primary\" \n value={this.state.isLoading ? \"Loading\" : \"Skicka kommentar\"} \n disabled={(this.state.isLoading) ? 'disabled' : ''} />\n { !this.state.isLoading && this.props.replyTo && \n <a rel=\"nofollow\"\n id={`cancel-comment-reply-link-${this.id}`}\n href={`https://${window.location.host}${this.props.post.url}#respond`}\n className=\"btn btn-light ml-4\" \n value={\"Avbryt\"}\n onClick={this.props.onToggleForm}>{\"Avbryt\"}</a>\n }\n </div>\n </form>\n )}\n </React.Fragment>\n )\n }\n}\n\nexport default CommentsForm;","import React from 'react';\nimport DOMPurify from 'dompurify';\nimport Emoji from './../Partials/Emoji';\nimport CommentsForm from './CommentsForm';\n\nclass Comment extends React.Component {\n constructor(props) {\n super(props);\n\n this.cookieName = window.btoa(`comments_liked`);\n\n this.state = {\n likes: this.props.comment.likes,\n liked: this.getLiked(),\n showForm: props.showForm,\n running: false,\n }\n\n this.onLike = this.onLike.bind(this);\n this.toggleReplyForm = this.toggleReplyForm.bind(this);\n }\n\n toggleReplyForm(e) {\n e.preventDefault();\n this.setState({\n showForm: !this.state.showForm,\n });\n }\n\n getLiked() {\n let likes = this.getCookieLikes();\n return likes[this.props.comment.id] ?? false;\n }\n\n getCookieLikes() {\n let likesJSON = window.Cookie.get(this.cookieName);\n if (typeof likesJSON == 'undefined') {\n return false;\n }\n return JSON.parse(likesJSON);\n }\n\n onLike() {\n let likes = this.getCookieLikes() || {};\n\n // Stop if we are awaiting a call already\n if (this.state.running) {\n return;\n }\n\n // Set running state to avoid spam clicking\n this.setState({\n running: true,\n });\n\n if (likes[this.props.comment.id]) {\n // Dislike\n delete likes[this.props.comment.id];\n this.doLike(likes, false);\n } else {\n // Like\n likes[this.props.comment.id] = true;\n this.doLike(likes);\n }\n }\n \n doLike(likes, like = true) {\n this.setState({\n likes: like ? this.state.likes + 1 : this.state.likes - 1,\n liked: like,\n });\n\n axios.post('/api/comment/like/', {\n comment_id: this.props.comment.id,\n like: like,\n })\n .then((response) => {\n window.Cookie.set(this.cookieName, JSON.stringify(likes), { expires: (365 * 10) });\n })\n .catch((error) => {\n console.error(error);\n this.setState({\n likes: ike ? this.state.likes - 1 : this.state.likes + 1,\n liked: !like,\n });\n })\n .finally(() => {\n this.setState({\n running: false,\n });\n });\n }\n\n // Idea from https://codepen.io/peterbartha/pen/BKxGPK\n calculateColor(email) {\n // Pastel rainbow\n const colors = [\n '#ffc1c2',\n '#ffcfc2',\n '#ffe5c3',\n '#fff1c1',\n '#f1fec2',\n '#d8fec2',\n '#c2ffc4',\n '#c3ffdd',\n '#c3feff',\n '#c2e7ff',\n '#c0d7ff',\n '#c3caff',\n '#d6c3ff',\n '#eac2ff',\n '#fcc3ff',\n ];\n\n let sum = 0;\n email.split('').forEach(\n character => sum += email.charCodeAt(character)\n );\n\n return colors[sum % colors.length];\n }\n\n render() {\n const postId = this.props.post.id;\n\n const replies = this.props.comment.replies && this.props.comment.replies.map((comment) => (\n <Comment key={comment.id} post={this.props.post} comment={comment} replyTo={this.props.comment} onFetchComments={this.props.onFetchComments} />\n )) || {};\n\n const verified = this.props.comment.by_user != 0;\n\n let authorUrlLink = '';\n if (this.props.comment.author_url) {\n // Create link for author URL\n authorUrlLink = this.props.comment.author_url;\n\n // Instagram link\n if (authorUrlLink.substring(0, 1) == '@') {\n authorUrlLink = `https://www.instagram.com/${authorUrlLink.substring(1)}/`;\n }\n\n // Prepend protocol to URL if not present\n if (!/^https?:\\/\\//i.test(authorUrlLink)) {\n authorUrlLink = 'https://' + authorUrlLink;\n }\n }\n\n // Wrap links in a tag (if verified user)\n if (verified) {\n this.props.comment.body = this.props.comment.body.replace(/([^\">])(https?:\\/\\/[^\\s]+)/, '$1<a href=\"$2\" rel=\"nofollow ugc\" target=\"_blank\">$2</a>');\n }\n\n const sanitizeConfig = { ONLY_TAGS: ['a'], ADD_ATTR: ['target'] };\n\n return (\n <div className={`comment ${this.props.className ?? ''}${verified ? ' comment--verified' : ''}`}>\n <span id={`comment-${this.props.comment.id}`} className=\"anchor\" />\n { this.props.comment.gravatar ? (\n <img src={this.props.comment.gravatar} alt={`${this.props.comment.author_name} Gravatar`} className=\"comment__avatar\" />\n ) : (\n <svg className=\"comment__avatar comment__avatar--svg\" width=\"30\" height=\"30\" viewBox=\"-50 -50 100 100\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle fill={this.calculateColor(this.props.comment.author_email)} r=\"50\" />\n <text fill=\"#ffffff\" className=\"letter\" textAnchor=\"middle\" dominantBaseline=\"central\">{this.props.comment.author_name.charAt(0)}</text>\n </svg>\n )}\n <div className=\"comment__body\">\n <div className=\"comment__name\">\n { this.props.comment.author_name }\n\n { verified && \n <Emoji type=\"check_circle\" className=\"comment__verified\" />\n }\n\n { this.props.replyTo && \n <span className=\"comment__reply-to\">\n <Emoji type=\"reply\" />\n { this.props.replyTo.author_name }\n </span>\n }\n </div>\n { this.props.comment.author_url && \n <div className=\"comment__url\">\n <a href={authorUrlLink} rel=\"nofollow ugc\" target=\"_blank\">{ this.props.comment.author_url }</a>\n </div>\n }\n { verified ?\n <div className=\"comment__text\" dangerouslySetInnerHTML={{__html: DOMPurify.sanitize(this.props.comment.body, sanitizeConfig)}}>\n </div>\n :\n <div className=\"comment__text\">\n { this.props.comment.body }\n </div>\n }\n </div>\n <div className=\"comment__bottom\">\n <a \n href={`https://${window.location.host}${this.props.post.url}?replytocom=${this.props.comment.id}#respond`} \n className=\"btn btn-primary btn-sm\" onClick={this.toggleReplyForm}\n rel=\"nofollow\"\n >\n Svara\n </a>\n {\n this.props.post.meta_data.hide_comment_likes != \"1\" &&\n <button className={'btn btn-primary btn-sm' + (this.state.liked ? ' liked' : '')} onClick={this.onLike}>\n <Emoji type=\"thumbs_up\" />\n { this.state.likes }\n </button>\n }\n </div>\n <div className=\"comment__details\">\n { this.props.comment.created_at }\n </div>\n { this.state.showForm && \n <div id={`reply-form-${this.props.comment.id}`} className=\"comments__form_area w-100\">\n <CommentsForm post={this.props.post} replyTo={this.props.comment} onFetchComments={this.props.onFetchComments} onToggleForm={this.toggleReplyForm} />\n </div>\n }\n \n { replies.length > 0 &&\n <div className={\"comment__replies\" + (this.props.replyTo ? ' comment__replies--deep' : '')}>\n { replies }\n </div>\n }\n </div>\n )\n }\n}\n\nexport default Comment;","import React from 'react';\nimport Emoji from './../Partials/Emoji';\n\nclass Reactions extends React.Component {\n constructor(props) {\n super(props);\n\n this.cookieName = window.btoa(`post_reactions`);\n\n this.state = {\n choosenReaction: this.getReaction(),\n count: this.props.post.reactions,\n running: false,\n single: this.props.post.meta_data.single_reaction,\n }\n\n this.doReaction = this.doReaction.bind(this);\n }\n\n getReaction() {\n let reactions = this.getCookieReactions();\n return reactions[this.props.post.id] ?? false;\n }\n\n getCookieReactions() {\n let reactionsJSON = window.Cookie.get(this.cookieName);\n if (typeof reactionsJSON == 'undefined') {\n return false;\n }\n return JSON.parse(reactionsJSON);\n }\n\n doReaction(e) {\n const button = e.currentTarget;\n const clickedReaction = button.getAttribute('aria-label');\n\n let reactions = this.getCookieReactions() || {};\n\n // Stop if we are awaiting a call already\n if (this.state.running) {\n return;\n }\n\n // Set running state to avoid spam clicking\n this.setState({\n running: true,\n });\n\n // Temporarily changing value on clicked reaction (maybe find a better solution?)\n button.parentElement.querySelector('span').textContent = (reactions[this.props.post.id] !== clickedReaction) ? this.state.count[clickedReaction] + 1 : this.state.count[clickedReaction] - 1;\n\n if (reactions[this.props.post.id] == clickedReaction) {\n // Remove reaction\n delete reactions[this.props.post.id];\n this.updateReaction(false, clickedReaction);\n } else if (reactions[this.props.post.id]) {\n // Change reaction\n reactions[this.props.post.id] = clickedReaction;\n this.updateReaction(clickedReaction, this.state.choosenReaction);\n } else {\n // Add reaction\n reactions[this.props.post.id] = clickedReaction;\n this.updateReaction(clickedReaction, false);\n }\n\n this.setReactions(reactions, clickedReaction);\n }\n\n updateReaction(add, remove) {\n let data = {};\n data.post_id = this.props.post.id;\n\n if (add) {\n data.add_reaction = add;\n }\n if (remove) {\n data.remove_reaction = remove;\n }\n axios.post('/api/reaction/', data)\n .then((response) => {\n if (response.data.success) {\n this.setState({\n count: response.data.reactions,\n });\n }\n })\n .catch((error) => {\n console.error(error);\n })\n .finally(() => {\n this.setState({\n running: false,\n });\n });\n }\n\n setReactions(reactions, newReaction) {\n this.setState({\n choosenReaction: this.state.choosenReaction !== newReaction ? newReaction : false,\n });\n\n window.Cookie.set(this.cookieName, JSON.stringify(reactions), { expires: (365 * 10) });\n }\n\n render() {\n if (this.state.single == 1) {\n return (\n <div className={`reactions reactions--single ${this.props.className || ''}`}>\n <div className={`reaction` + (this.state.choosenReaction == `heart` ? ` reaction--active` : ``)}>\n <button role=\"img\" aria-label=\"heart\" onClick={this.doReaction}>\n <Emoji type=\"heart\" />\n <span>{ this.state.count.heart }</span>\n </button>\n </div>\n </div>\n );\n }\n\n return (\n <div className={`reactions ${this.props.className || ''}`}>\n <div className={`reaction` + (this.state.choosenReaction == `heart` ? ` reaction--active` : ``)}>\n <button role=\"img\" aria-label=\"heart\" onClick={this.doReaction}>\n <Emoji type=\"heart\" />\n Älskar\n </button>\n <span>{ this.state.count.heart }</span>\n </div>\n <div className={`reaction` + (this.state.choosenReaction == `wow` ? ` reaction--active` : ``)}>\n <button role=\"img\" aria-label=\"wow\" onClick={this.doReaction}>\n <Emoji type=\"wow\" />\n Wow!\n </button>\n <span>{ this.state.count.wow }</span>\n </div>\n <div className={`reaction` + (this.state.choosenReaction == `sad` ? ` reaction--active` : ``)}>\n <button role=\"img\" aria-label=\"sad\" onClick={this.doReaction}>\n <Emoji type=\"sad\" />\n Ledsen\n </button>\n <span>{ this.state.count.sad }</span>\n </div>\n <div className={`reaction` + (this.state.choosenReaction == `happy` ? ` reaction--active` : ``)}>\n <button role=\"img\" aria-label=\"happy\" onClick={this.doReaction}>\n <Emoji type=\"happy\" />\n Kul!\n </button>\n <span>{ this.state.count.happy }</span>\n </div>\n <div className={`reaction` + (this.state.choosenReaction == `angry` ? ` reaction--active` : ``)}>\n <button role=\"img\" aria-label=\"angry\" onClick={this.doReaction}>\n <Emoji type=\"angry\" />\n Dumt!\n </button>\n <span>{ this.state.count.angry }</span>\n </div>\n </div>\n );\n }\n}\n\nexport default Reactions;","import React from 'react';\nimport Emoji from './../Partials/Emoji';\n\nconst CommentDummy = (props) => (\n <div className=\"comment comment--dummy\">\n <Emoji type=\"avatar\" className=\"comment__avatar comment__avatar--svg rounded-circle\" />\n <div className=\"comment__body\">\n </div>\n { props.children &&\n <div className=\"comment__replies\">\n { props.children }\n </div>\n }\n </div>\n);\n\nexport default CommentDummy;","import React from 'react';\n\nclass Icon extends React.Component {\n constructor(props) {\n super(props);\n }\n\n fetchType() {\n let svg = false;\n switch (this.props.type) {\n case 'star_on':\n svg =\n <svg width=\"100\" height=\"100\" viewBox=\"0 0 100 100\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\">\n <g id=\"Page-1\" stroke=\"none\" strokeWidth=\"1\" fill=\"none\" fillRule=\"evenodd\">\n <polygon id=\"Star\" fill=\"#7DBCA4\" points=\"50 82.9179607 19.0983006 100 25 63.8196601 1.73194792e-14 38.1966011 34.5491503 32.9179607 50 0 65.4508497 32.9179607 100 38.1966011 75 63.8196601 80.9016994 100\"></polygon>\n </g>\n </svg>;\n break;\n case 'mail_circle':\n svg =\n <svg width=\"36\" height=\"36\" viewBox=\"0 0 36 36\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle id=\"icon\" r=\"14\" cx=\"18\" cy=\"18\" fill=\"#fff\" />\n <path d=\"M18,0 C27.9411255,0 36,8.0588745 36,18 C36,27.9411255 27.9411255,36 18,36 C8.0588745,36 \n 0,27.9411255 0,18 C0,8.0588745 8.0588745,0 18,0 Z M26.1818182,14.7272727 L18.1994318,18.2916826 \n C18.1360227,18.3208018 18.0675,18.3348222 18,18.3348222 C17.9325,18.3348222 17.8639773,18.3208018 \n 17.8005682,18.2916826 L9.81818182,14.7272727 L9.81818182,22.6487826 C9.81818182,23.2441092 \n 10.2763636,23.7272727 10.8409091,23.7272727 L25.1590909,23.7272727 C25.7236364,23.7272727 \n 26.1818182,23.2441092 26.1818182,22.6487826 L26.1818182,14.7272727 Z M25.1590909,12.2727273 \n L10.8409091,12.2727273 C10.2763636,12.2727273 9.81818182,12.7163974 9.81818182,13.2630623 \n L9.81818182,13.826563 L18,17.1818182 L26.1818182,13.8255727 L26.1818182,13.2630623 \n C26.1818182,12.7163974 25.7236364,12.2727273 25.1590909,12.2727273 Z\" />\n </svg>;\n break;\n case 'pinterest_circle':\n svg =\n <svg data-pin-nopin=\"true\" width=\"36\" height=\"36\" viewBox=\"0 0 36 36\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle id=\"icon\" r=\"14\" cx=\"18\" cy=\"18\" fill=\"#fff\" />\n <path d=\"M18,0 C27.9411255,0 36,8.0588745 36,18 C36,27.9411255 27.9411255,36 18,36 C8.0588745,36 \n 0,27.9411255 0,18 C0,8.0588745 8.0588745,0 18,0 Z M18.4756591,9.63636364 C13.7734325,9.63636364 \n 11.2727273,12.574224 11.2727273,15.7776419 C11.2727273,17.2633001 12.1241681,19.1159295 \n 13.4871168,19.7035016 C13.6940791,19.7944603 13.8066751,19.7557767 13.8527859,19.5686318 \n C13.893535,19.4264436 14.0726164,18.7416398 14.1594762,18.4185797 C14.1862848,18.315075 \n 14.1723443,18.2251619 14.0865568,18.1279302 C13.6340278,17.6177253 13.2747927,16.6882741 \n 13.2747927,15.8163255 C13.2747927,13.5820879 15.0967045,11.4126714 18.1968498,11.4126714 \n C20.8777087,11.4126714 22.7532376,13.1105665 22.7532376,15.5392675 C22.7532376,18.28371 \n 21.2637524,20.1823415 19.3281722,20.1823415 C18.256901,20.1823415 17.4590774,19.362668 \n 17.7121505,18.3485311 C18.0177684,17.1409764 18.6172084,15.842463 18.6172084,14.9715599 \n C18.6172084,14.19057 18.1646794,13.5444498 17.2403193,13.5444498 C16.1497459,13.5444498 \n 15.2650624,14.5972702 15.2650624,16.0107888 C15.2650624,16.908875 15.5910549,17.5152661 \n 15.5910549,17.5152661 C15.5910549,17.5152661 14.5122772,21.7641859 14.311749,22.5577218 \n C13.9728884,23.9011918 14.3578597,26.0768813 14.3911024,26.2640261 C14.4114769,26.3675308 \n 14.5305071,26.3999414 14.5969924,26.3152557 C14.7031544,26.1793405 16.0071242,24.3653946 \n 16.3727933,23.0543352 C16.5057639,22.5765409 17.0515868,20.6392258 17.0515868,20.6392258 \n C17.4108219,21.2717545 18.4477782,21.8018239 19.552292,21.8018239 C22.8379528,21.8018239 \n 25.2121214,18.9862873 25.2121214,15.4922199 C25.2003257,12.1424317 22.2599596,9.63636364 \n 18.4756591,9.63636364 Z\" />\n </svg>;\n break;\n case 'x_circle':\n svg =\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"36\" height=\"36\" viewBox=\"0 0 963 963\">\n <g transform=\"translate(-353.3,-129)\">\n <circle cx=\"834.28\" cy=\"610.6\" r=\"481.33\" stroke=\"#fff\" strokeMiterlimit=\"10\" />\n <path fill=\"#fff\" d=\"M485.39,356.79l230.07,307.62L483.94,914.52h52.11l202.7-218.98l163.77,218.98h177.32L836.82,589.6l215.5-232.81h-52.11L813.54,558.46L662.71,356.79H485.39z M562.02,395.17h81.46l359.72,480.97h-81.46L562.02,395.17z\" transform=\"translate(52.39 -25.059)\" />\n </g>\n </svg>\n break;\n case 'bloglovin_square':\n svg =\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"36\" height=\"36\" viewBox=\"0 0 36 36\">\n <g fill=\"none\" fillRule=\"evenodd\" stroke=\"none\" strokeWidth=\"1\">\n <g fill=\"#000\">\n <path d=\"M18 0c9.941 0 18 8.059 18 18s-8.059 18-18 18S0 27.941 0 18 8.059 0 18 0zm-1.291 11H9v14.87h7.95c2.812 0 4.262-1.785 4.262-4.035-.006-1.849-1.234-3.387-2.818-3.633 1.38-.29 2.525-1.558 2.525-3.413 0-1.985-1.424-3.789-4.21-3.789zm-.554 8.695c1.209 0 1.864.757 1.864 1.694.006 1.067-.7 1.694-1.864 1.694h-4.038v-3.388h4.038zm8.892-8.67c-.941 0-1.736.803-1.736 1.76 0 .956.661 1.603 1.495 1.603.178 0 .35-.02.42-.065-.179.802-.986 1.74-1.692 2.12l1.208 1.003c1.355-.977 2.258-2.47 2.258-4.144 0-1.449-.922-2.276-1.953-2.276zm-9.025 2.761c1.056 0 1.71.647 1.71 1.558 0 .957-.66 1.559-1.71 1.559h-3.905v-3.117h3.905z\"></path>\n </g>\n </g>\n </svg>;\n break;\n case 'facebook_circle':\n svg =\n <svg width=\"36\" height=\"36\" viewBox=\"0 0 36 36\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle id=\"icon\" r=\"14\" cx=\"18\" cy=\"18\" fill=\"#fff\" />\n <path d=\"M18,0 C27.9411255,0 36,8.0588745 36,18 C36,27.9411255 27.9411255,36 18,36 C8.0588745,36 \n 0,27.9411255 0,18 C0,8.0588745 8.0588745,0 18,0 Z M20.2333784,8.63636364 C17.9002205,8.63636364 \n 16.3019446,10.1040341 16.3019446,12.8015342 L16.3019446,15.284091 L13.7272727,15.284091 \n L13.7272727,18.4351138 L16.3019446,18.4351138 L16.3019446,26.3636366 L19.4586134,26.3636366 \n L19.4586134,18.4358524 L21.9291462,18.4358524 L22.3213294,15.2848296 L19.4578748,15.2848296 \n L19.4578748,13.1139773 C19.4586134,12.2032387 19.7038202,11.5798296 20.9726918,11.5798296 \n L22.5909092,11.5798296 L22.5909092,8.76119318 C22.3117279,8.72278409 21.3515807,8.63636364 \n 20.2333784,8.63636364 Z\" />\n </svg>;\n break;\n case 'comment_circle':\n svg =\n <svg width=\"36\" height=\"36\" viewBox=\"0 0 36 36\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle id=\"icon\" r=\"14\" cx=\"18\" cy=\"18\" fill=\"#fff\" />\n <path d=\"M18,0 C27.9411255,0 36,8.0588745 36,18 C36,27.9411255 27.9411255,36 18,36 C8.0588745,36 0,27.9411255 0,18 C0,8.0588745 8.0588745,0 18,0 Z M26,10 L10,10 C8.8954305,10 8,10.8954305 8,12 L8,12 L8,23.7894737 C8,24.8940432 8.8954305,25.7894737 10,25.7894737 L10,25.7894737 L16.4210526,25.7894737 L18,28.9473684 L19.5789474,25.7894737 L26,25.7894737 C27.1045695,25.7894737 28,24.8940432 28,23.7894737 L28,23.7894737 L28,12 C28,10.8954305 27.1045695,10 26,10 L26,10 Z\" />\n </svg>;\n break;\n case 'share_circle':\n svg =\n <svg width=\"48\" height=\"48\" viewBox=\"0 0 48 48\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle id=\"icon\" r=\"15\" cx=\"24\" cy=\"24\" fill=\"#000000\" />\n <g id=\"circle\" fill=\"#FFFFFF\">\n <path d=\"M24,0 C37.254834,0 48,10.745166 48,24 C48,37.254834 37.254834,48 24,48 C10.745166,48 0,37.254834 0,24 C0,10.745166 10.745166,0 24,0 Z M30,14 C28.34,14 27,15.34 27,17 C27,17.24 27.04,17.47 27.09,17.7 L20.04,21.81 C19.5,21.31 18.79,21 18,21 C16.34,21 15,22.34 15,24 C15,25.66 16.34,27 18,27 C18.79,27 19.5,26.69 20.04,26.19 L27.16,30.35 C27.11,30.56 27.08,30.78 27.08,31 C27.08,32.61 28.39,33.92 30,33.92 C31.61,33.92 32.92,32.61 32.92,31 C32.92,29.39 31.61,28.08 30,28.08 C29.24,28.08 28.56,28.38 28.04,28.85 L20.91,24.7 C20.96,24.47 21,24.24 21,24 C21,23.76 20.96,23.53 20.91,23.3 L27.96,19.19 C28.5,19.69 29.21,20 30,20 C31.66,20 33,18.66 33,17 C33,15.34 31.66,14 30,14 Z\" />\n </g>\n </svg>;\n break;\n case 'close_circle':\n svg =\n <svg width=\"48\" height=\"48\" viewBox=\"0 0 48 48\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle id=\"icon\" r=\"15\" cx=\"24\" cy=\"24\" fill=\"#000000\" />\n <g id=\"circle\" fill=\"#FFFFFF\">\n <path d=\"M24,0 C37.254834,0 48,10.745166 48,24 C48,37.254834 37.254834,48 24,48 C10.745166,48 0,37.254834 0,24 C0,10.745166 10.745166,0 24,0 Z M30.363961,16.2218254 L23.9998254,22.5858254 L17.636039,16.2218254 L16.2218254,17.636039 L22.5858254,23.9998254 L16.2218254,30.363961 L17.636039,31.7781746 L23.9998254,25.4138254 L30.363961,31.7781746 L31.7781746,30.363961 L25.4138254,23.9998254 L31.7781746,17.636039 L30.363961,16.2218254 Z\" />\n </g>\n </svg>;\n break;\n default:\n break;\n }\n\n return svg;\n }\n\n render() {\n return this.fetchType();\n }\n}\n\nexport default Icon;","import React from 'react';\nimport Icon from '../Partials/Icon';\n\nclass SocialShare extends React.Component {\n constructor(props) {\n super(props);\n }\n\n render() {\n const postUrl = window.location.origin + this.props.post.url;\n const blogName = window.blogTitle ?? 'den här bloggen';\n\n return (\n <div className=\"social_share\">\n\n {/* Facebook */}\n <a title=\"Dela på facebook\" href={`https://www.facebook.com/sharer/sharer.php?u=${encodeURI(postUrl)}`} \n // (TODO:share) Check if we want to use this instead in the future\n // onClick={() => {window.open(this.href, '', 'menubar=no,toolbar=no,resizable=yes,scrollbars=yes,height=300,width=600');return false;}}\n className=\"social_share__item social_share__item--facebook\" target=\"_blank\" rel=\"noreferrer\">\n <Icon type=\"facebook_circle\" />\n </a>\n\n {/* X (Twitter) */}\n <a title=\"Dela på X\" href={`https://x.com/share?url=${encodeURI(postUrl)}`}\n className=\"social_share__item social_share__item--x\" target=\"_blank\" rel=\"noreferrer\">\n <Icon type=\"x_circle\" />\n </a>\n\n {/* Pinterest */}\n <a title=\"Pinna på pinterest\" href={`${window.location.origin}/predirect/?url=${encodeURIComponent(postUrl)}`}\n className=\"social_share__item social_share__item--pin\" target=\"_blank\" rel=\"noreferrer\">\n <Icon type=\"pinterest_circle\" />\n </a>\n\n {/* Mail */}\n <a title={`Maila bloggtips om ${blogName}`} href={`mailto:someone@domain.com?subject=${encodeURIComponent(`Bloggtips från ${blogName}`)}&body=${encodeURIComponent(`Hej,\\nJag vill tipsa dig om ett blogginlägg från ${blogName}:\\n${postUrl}`)}`}\n className=\"social_share__item social_share__item--mail\">\n <Icon type=\"mail_circle\" />\n </a>\n\n {/* Bloglovin */}\n {typeof window.blogLovin !== 'undefined' &&\n <a title=\"Följ på Bloglovin\" href={`${window.blogLovin}`}\n className=\"social_share__item social_share__item-blogLovin\"\n target=\"_blank\" rel=\"noreferrer\">\n <Icon type=\"bloglovin_square\" />\n </a>\n }\n </div>\n )\n }\n}\n\nexport default SocialShare;","import React, { Fragment } from 'react';\nimport axios from 'axios';\nimport Comment from './Comment';\nimport CommentsForm from './CommentsForm';\nimport Reactions from './../Partials/Reactions';\nimport CommentDummy from './../Dummies/CommentDummy';\nimport SocialShare from '../PostComponents/SocialShare';\n\nclass Comments extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n ordering: 'newest',\n comments: [],\n isLoading: false,\n total: 0,\n totalWithReplies: 0,\n currentPage: 1,\n nextPageUrl: '',\n to: 0,\n replyToComment: new URLSearchParams(window.location.search).get(\"replytocom\"),\n showComments: new URLSearchParams(window.location.search).get(\"replytocom\") || props.showComments\n }\n\n this.onChangeValue = this.onChangeValue.bind(this);\n this.fetchComments = this.fetchComments.bind(this);\n this.fetchMoreComments = this.fetchMoreComments.bind(this);\n }\n\n componentDidMount() {\n this.fetchComments();\n }\n\n componentDidUpdate(prevProps) {\n if(prevProps.showComments !== this.props.showComments){\n this.setState({ \n showComments: this.props.showComments\n });\n }\n }\n\n fetchComments(ordering = 'newest') {\n // Set ordering to newest as default\n let orderBy = 'created_at';\n let orderDirection = 'DESC';\n\n switch (ordering) {\n case 'oldest':\n orderBy = 'created_at';\n orderDirection = 'ASC';\n break;\n \n default:\n break;\n }\n\n this.setState({\n isLoading: true,\n comments: [],\n });\n\n axios.get(`/api/comment/?commentable_id=${this.props.post.id}&orderby=${orderBy}&direction=${orderDirection}&count=${this.props.post.meta_data.comment_count}`)\n .then((response) => {\n this.setState(() => ({\n comments: response.data.data,\n isLoading: false,\n total: response.data.total,\n totalWithReplies: response.data.total_with_replies,\n currentPage: response.data.current_page,\n nextPageUrl: response.data.next_page_url,\n to: response.data.to,\n }));\n\n // Scroll to comments area (delay needed for element to be rendered first)\n if (this.state.replyToComment) {\n setTimeout(() => {\n const form = document.getElementById(`comment_form_${this.props.post.id}_${this.state.replyToComment}`);\n form.scrollIntoView({\n behavior: \"smooth\",\n });\n const textArea = form.querySelector('[name=\"comment_body\"]');\n textArea.focus();\n },50);\n }\n })\n .catch((error) => {\n console.log(error);\n });\n }\n\n fetchMoreComments() {\n this.setState({\n isLoading: true,\n });\n\n axios.get(this.state.nextPageUrl)\n .then((response) => {\n this.setState(() => ({\n comments: this.state.comments.concat(response.data.data),\n isLoading: false,\n currentPage: response.data.current_page,\n nextPageUrl: response.data.next_page_url,\n to: response.data.to,\n }));\n })\n .catch((error) => {\n console.log(error);\n });\n }\n\n onChangeValue(e) {\n this.setState({\n [e.target.name]: e.target.value\n });\n \n if (e.target.name == 'ordering') {\n this.fetchComments(e.target.value);\n }\n }\n\n render() {\n const postId = this.props.post.id;\n\n const commentsTitle = this.props.post.meta_data.comments_title || \"Vad tycker du?\";\n\n const comments = this.state.comments.map((comment) => (\n <Comment \n key={comment.id} \n post={this.props.post} \n comment={comment} \n onFetchComments={this.fetchComments} \n showForm={this.state.replyToComment == comment.id} \n />\n ));\n\n const commentsBtnText = comments.length == 0 ? \"Kommentera här\" : `${this.state.totalWithReplies} kommentarer`;\n\n return (\n <div className=\"comments\">\n <div className={`comments__top ${this.props.post.meta_data.single_reaction == 1 ? ` comments__top--stretch` : ``}`}>\n {\n this.props.post.meta_data.hide_comments != \"1\" && \n this.props.post.meta_data.activate_comments_title == \"1\" &&\n <p>{commentsTitle}</p>\n }\n <Reactions post={this.props.post} />\n {this.props.post.meta_data.hide_comments != \"1\" && \n !this.state.showComments && \n <button className=\"btn btn-primary toggle-hide\" onClick={this.props.onShowComments}>{commentsBtnText}</button>\n }\n </div>\n <span id={`post-${this.props.post.id}-comments`} className=\"anchor\" />\n {this.props.post.meta_data.hide_comments != \"1\" && this.state.showComments && \n <div id={`comments_area_${postId}`}>\n <CommentsForm post={this.props.post} onFetchComments={this.fetchComments} />\n <p className=\"comments__legal\">\n Din kommentar inväntar granskning innan den publiceras. Du som kommenterar ansvarar själv för innehållet i kommentaren. Ansvarig utgivare för denna webbplats har inte något ansvar för kommentarerna. Aller media uppmanar kommentatorer att använda vänlig ton, ett civiliserat språk, uppföra sig väl och följa tillämpliga lagar.\n </p>\n <div className=\"comments__list\">\n {comments.length > 0 &&\n <div className=\"comments__list__controls d-flex\">\n <select name=\"ordering\" className=\"form-control\" onChange={this.onChangeValue} value={this.state.ordering}>\n <option value=\"newest\">Nyast först</option>\n <option value=\"oldest\">Äldsta först</option>\n </select>\n </div>\n }\n { comments.length > 0 && comments }\n { this.state.isLoading && \n <React.Fragment>\n <CommentDummy />\n <CommentDummy>\n <CommentDummy />\n </CommentDummy>\n <CommentDummy />\n </React.Fragment>\n }\n { !this.state.isLoading && this.state.to < this.state.total && \n <div className=\"comments__more\">\n <button className=\"btn btn-primary\" onClick={this.fetchMoreComments}>Ladda fler kommentarer</button>\n </div>\n }\n </div>\n </div>\n }\n <SocialShare post={this.props.post} />\n </div>\n )\n }\n}\n\nexport default Comments;","import React from 'react';\nimport Icon from '../Partials/Icon';\n\nclass ShareButton extends React.Component {\n constructor(props) {\n super(props);\n\n this.state = {\n open: false,\n }\n\n this.toggleOpen = this.toggleOpen.bind(this);\n this.handleScroll = this.handleScroll.bind(this);\n }\n\n componentDidMount() {\n window.addEventListener('scroll', this.handleScroll);\n }\n\n handleScroll() {\n // Close the open state\n if (this.state.open) {\n this.setState({\n open: false,\n });\n }\n }\n\n toggleOpen(e) {\n e.preventDefault();\n\n this.setState({\n open: !this.state.open,\n });\n }\n\n render() {\n const postUrl = window.location.origin + this.props.post.url;\n const blogName = window.blogTitle ?? 'den här bloggen';\n\n return (\n <React.Fragment>\n <div className={`post_share_button ${this.props.className ?? ''}${this.state.open ? ' post_share_button--open' : ''}`}>\n <div className=\"post_share_button__wrapper\">\n <a href=\"#\" onClick={this.toggleOpen}>\n { !this.state.open ? (\n <Icon type=\"share_circle\" />\n ) : (\n <Icon type=\"close_circle\" />\n )\n }\n </a>\n { this.state.open && \n <div className=\"post_share_button__menu\">\n {/* Mail */}\n <a href={`mailto:someone@domain.com?subject=${encodeURIComponent(`Bloggtips från ${blogName}`)}&body=${encodeURIComponent(`Hej,\\nJag vill tipsa dig om ett blogginlägg från ${blogName}:\\n${postUrl}`)}`} className=\"share_button share_button--mail\">\n <span>Maila</span>\n <Icon type=\"mail_circle\" />\n </a>\n\n {/* Pinterest */}\n <a href={`${window.location.origin}/predirect/?url=${encodeURIComponent(postUrl)}`} \n className=\"share_button share_button--pin\" target=\"_blank\">\n <span>Pinterest</span>\n <Icon type=\"pinterest_circle\" />\n </a>\n\n {/* X (Twitter) */}\n <a href={`https://x.com/share?url=${encodeURI(postUrl)}`} \n className=\"share_button share_button--x\" target=\"_blank\">\n <span>X</span>\n <Icon type=\"x_circle\" />\n </a>\n\n {/* Facebook */}\n <a href={`https://www.facebook.com/sharer/sharer.php?u=${encodeURI(postUrl)}`} \n // (TODO:share) Check if we want to use this instead in the future\n // onClick={() => {window.open(this.href, '', 'menubar=no,toolbar=no,resizable=yes,scrollbars=yes,height=300,width=600');return false;}}\n className=\"share_button share_button--facebook\" target=\"_blank\">\n <span>Facebook</span>\n <Icon type=\"facebook_circle\" />\n </a>\n\n {/* Bloglovin */}\n {typeof window.blogLovin !== 'undefined' &&\n <a title=\"Följ på Bloglovin\" href={`${window.blogLovin}`}\n className=\"social_share__item social_share__item-blogLovin\" target=\"_blank\">\n <Icon type=\"bloglovin_square\" />\n </a>\n }\n\n {this.props.post.meta_data.hide_comments != \"1\" && \n <a href=\"#\" className=\"share_button share_button--comment\" onClick={this.props.showComments}>\n <span>Kommentera</span>\n <Icon type=\"comment_circle\" />\n </a>\n }\n </div>\n }\n </div>\n </div>\n { this.state.open && \n <div className=\"post_share_button__overlay\" onClick={this.toggleOpen}></div>\n }\n </React.Fragment>\n );\n }\n}\n\nexport default ShareButton;","import React from 'react';\n\nconst PostDummy = (props) => (\n <div className=\"col-12 mb-4\">\n <div className=\"post post--dummy d-flex flex-column align-items-center\">\n <span className=\"title mt-3\"></span>\n <div className=\"post_head mt-4\">\n <span></span>\n <span></span>\n </div>\n <div className=\"post_content mt-3\">\n {Array(35).fill(0).map((_, i) => <span key={i}></span>)}\n </div>\n <div className=\"post_tags text-center mt-4\">\n <span></span>\n <span></span>\n <span></span>\n </div>\n </div>\n </div>\n);\n\nexport default PostDummy;","import React from 'react';\n\nclass ShoppingCarouselItem extends React.Component {\n constructor(props) {\n super(props);\n }\n\n render() {\n return (\n <a\n className=\"shop_carousel__item cts-tracking-object\" \n data-cts-object-category=\"affiliate_carousel\"\n data-cts-object-name={this.props.data.title}\n data-cts-object-url={this.props.data.link}\n data-cts-object-extra-info={JSON.stringify([{ type: 'product' }])}\n data-cts-object-placement={`${this.props.index + 1}`}\n id={`shop-car-product-${this.props.data.id}`} \n data-product-title={this.props.data.title} \n target=\"_blank\" \n rel=\"noopener noreferrer nofollow\"\n href={this.props.data.link} >\n <span>\n <img \n data-pin-nopin\n loading=\"lazy\"\n src={this.props.data.image_link} \n alt={this.props.data.title} \n height=\"300\" \n width=\"300\"/>\n </span>\n <span className=\"shop_carousel__item__title\">{this.props.data.title}</span>\n <span className=\"shop_carousel__item__price\">{this.props.data.price}</span>\n </a>\n );\n }\n}\nexport default ShoppingCarouselItem;","/**\n * SSR Window 4.0.2\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: December 13, 2021\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n return (obj !== null &&\n typeof obj === 'object' &&\n 'constructor' in obj &&\n obj.constructor === Object);\n}\nfunction extend(target = {}, src = {}) {\n Object.keys(src).forEach((key) => {\n if (typeof target[key] === 'undefined')\n target[key] = src[key];\n else if (isObject(src[key]) &&\n isObject(target[key]) &&\n Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\n });\n}\n\nconst ssrDocument = {\n body: {},\n addEventListener() { },\n removeEventListener() { },\n activeElement: {\n blur() { },\n nodeName: '',\n },\n querySelector() {\n return null;\n },\n querySelectorAll() {\n return [];\n },\n getElementById() {\n return null;\n },\n createEvent() {\n return {\n initEvent() { },\n };\n },\n createElement() {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute() { },\n getElementsByTagName() {\n return [];\n },\n };\n },\n createElementNS() {\n return {};\n },\n importNode() {\n return null;\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n};\nfunction getDocument() {\n const doc = typeof document !== 'undefined' ? document : {};\n extend(doc, ssrDocument);\n return doc;\n}\n\nconst ssrWindow = {\n document: ssrDocument,\n navigator: {\n userAgent: '',\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n history: {\n replaceState() { },\n pushState() { },\n go() { },\n back() { },\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener() { },\n removeEventListener() { },\n getComputedStyle() {\n return {\n getPropertyValue() {\n return '';\n },\n };\n },\n Image() { },\n Date() { },\n screen: {},\n setTimeout() { },\n clearTimeout() { },\n matchMedia() {\n return {};\n },\n requestAnimationFrame(callback) {\n if (typeof setTimeout === 'undefined') {\n callback();\n return null;\n }\n return setTimeout(callback, 0);\n },\n cancelAnimationFrame(id) {\n if (typeof setTimeout === 'undefined') {\n return;\n }\n clearTimeout(id);\n },\n};\nfunction getWindow() {\n const win = typeof window !== 'undefined' ? window : {};\n extend(win, ssrWindow);\n return win;\n}\n\nexport { extend, getDocument, getWindow, ssrDocument, ssrWindow };\n","/**\n * Dom7 4.0.4\n * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API\n * https://framework7.io/docs/dom7.html\n *\n * Copyright 2022, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: January 11, 2022\n */\nimport { getWindow, getDocument } from 'ssr-window';\n\n/* eslint-disable no-proto */\nfunction makeReactive(obj) {\n const proto = obj.__proto__;\n Object.defineProperty(obj, '__proto__', {\n get() {\n return proto;\n },\n\n set(value) {\n proto.__proto__ = value;\n }\n\n });\n}\n\nclass Dom7 extends Array {\n constructor(items) {\n if (typeof items === 'number') {\n super(items);\n } else {\n super(...(items || []));\n makeReactive(this);\n }\n }\n\n}\n\nfunction arrayFlat(arr = []) {\n const res = [];\n arr.forEach(el => {\n if (Array.isArray(el)) {\n res.push(...arrayFlat(el));\n } else {\n res.push(el);\n }\n });\n return res;\n}\nfunction arrayFilter(arr, callback) {\n return Array.prototype.filter.call(arr, callback);\n}\nfunction arrayUnique(arr) {\n const uniqueArray = [];\n\n for (let i = 0; i < arr.length; i += 1) {\n if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]);\n }\n\n return uniqueArray;\n}\nfunction toCamelCase(string) {\n return string.toLowerCase().replace(/-(.)/g, (match, group) => group.toUpperCase());\n}\n\n// eslint-disable-next-line\n\nfunction qsa(selector, context) {\n if (typeof selector !== 'string') {\n return [selector];\n }\n\n const a = [];\n const res = context.querySelectorAll(selector);\n\n for (let i = 0; i < res.length; i += 1) {\n a.push(res[i]);\n }\n\n return a;\n}\n\nfunction $(selector, context) {\n const window = getWindow();\n const document = getDocument();\n let arr = [];\n\n if (!context && selector instanceof Dom7) {\n return selector;\n }\n\n if (!selector) {\n return new Dom7(arr);\n }\n\n if (typeof selector === 'string') {\n const html = selector.trim();\n\n if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {\n let toCreate = 'div';\n if (html.indexOf('<li') === 0) toCreate = 'ul';\n if (html.indexOf('<tr') === 0) toCreate = 'tbody';\n if (html.indexOf('<td') === 0 || html.indexOf('<th') === 0) toCreate = 'tr';\n if (html.indexOf('<tbody') === 0) toCreate = 'table';\n if (html.indexOf('<option') === 0) toCreate = 'select';\n const tempParent = document.createElement(toCreate);\n tempParent.innerHTML = html;\n\n for (let i = 0; i < tempParent.childNodes.length; i += 1) {\n arr.push(tempParent.childNodes[i]);\n }\n } else {\n arr = qsa(selector.trim(), context || document);\n } // arr = qsa(selector, document);\n\n } else if (selector.nodeType || selector === window || selector === document) {\n arr.push(selector);\n } else if (Array.isArray(selector)) {\n if (selector instanceof Dom7) return selector;\n arr = selector;\n }\n\n return new Dom7(arrayUnique(arr));\n}\n\n$.fn = Dom7.prototype;\n\n// eslint-disable-next-line\n\nfunction addClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n this.forEach(el => {\n el.classList.add(...classNames);\n });\n return this;\n}\n\nfunction removeClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n this.forEach(el => {\n el.classList.remove(...classNames);\n });\n return this;\n}\n\nfunction toggleClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n this.forEach(el => {\n classNames.forEach(className => {\n el.classList.toggle(className);\n });\n });\n}\n\nfunction hasClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n return arrayFilter(this, el => {\n return classNames.filter(className => el.classList.contains(className)).length > 0;\n }).length > 0;\n}\n\nfunction attr(attrs, value) {\n if (arguments.length === 1 && typeof attrs === 'string') {\n // Get attr\n if (this[0]) return this[0].getAttribute(attrs);\n return undefined;\n } // Set attrs\n\n\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i].setAttribute(attrs, value);\n } else {\n // Object\n for (const attrName in attrs) {\n this[i][attrName] = attrs[attrName];\n this[i].setAttribute(attrName, attrs[attrName]);\n }\n }\n }\n\n return this;\n}\n\nfunction removeAttr(attr) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].removeAttribute(attr);\n }\n\n return this;\n}\n\nfunction prop(props, value) {\n if (arguments.length === 1 && typeof props === 'string') {\n // Get prop\n if (this[0]) return this[0][props];\n } else {\n // Set props\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i][props] = value;\n } else {\n // Object\n for (const propName in props) {\n this[i][propName] = props[propName];\n }\n }\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction data(key, value) {\n let el;\n\n if (typeof value === 'undefined') {\n el = this[0];\n if (!el) return undefined; // Get value\n\n if (el.dom7ElementDataStorage && key in el.dom7ElementDataStorage) {\n return el.dom7ElementDataStorage[key];\n }\n\n const dataKey = el.getAttribute(`data-${key}`);\n\n if (dataKey) {\n return dataKey;\n }\n\n return undefined;\n } // Set value\n\n\n for (let i = 0; i < this.length; i += 1) {\n el = this[i];\n if (!el.dom7ElementDataStorage) el.dom7ElementDataStorage = {};\n el.dom7ElementDataStorage[key] = value;\n }\n\n return this;\n}\n\nfunction removeData(key) {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.dom7ElementDataStorage && el.dom7ElementDataStorage[key]) {\n el.dom7ElementDataStorage[key] = null;\n delete el.dom7ElementDataStorage[key];\n }\n }\n}\n\nfunction dataset() {\n const el = this[0];\n if (!el) return undefined;\n const dataset = {}; // eslint-disable-line\n\n if (el.dataset) {\n for (const dataKey in el.dataset) {\n dataset[dataKey] = el.dataset[dataKey];\n }\n } else {\n for (let i = 0; i < el.attributes.length; i += 1) {\n const attr = el.attributes[i];\n\n if (attr.name.indexOf('data-') >= 0) {\n dataset[toCamelCase(attr.name.split('data-')[1])] = attr.value;\n }\n }\n }\n\n for (const key in dataset) {\n if (dataset[key] === 'false') dataset[key] = false;else if (dataset[key] === 'true') dataset[key] = true;else if (parseFloat(dataset[key]) === dataset[key] * 1) dataset[key] *= 1;\n }\n\n return dataset;\n}\n\nfunction val(value) {\n if (typeof value === 'undefined') {\n // get value\n const el = this[0];\n if (!el) return undefined;\n\n if (el.multiple && el.nodeName.toLowerCase() === 'select') {\n const values = [];\n\n for (let i = 0; i < el.selectedOptions.length; i += 1) {\n values.push(el.selectedOptions[i].value);\n }\n\n return values;\n }\n\n return el.value;\n } // set value\n\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (Array.isArray(value) && el.multiple && el.nodeName.toLowerCase() === 'select') {\n for (let j = 0; j < el.options.length; j += 1) {\n el.options[j].selected = value.indexOf(el.options[j].value) >= 0;\n }\n } else {\n el.value = value;\n }\n }\n\n return this;\n}\n\nfunction value(value) {\n return this.val(value);\n}\n\nfunction transform(transform) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transform = transform;\n }\n\n return this;\n}\n\nfunction transition(duration) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transitionDuration = typeof duration !== 'string' ? `${duration}ms` : duration;\n }\n\n return this;\n}\n\nfunction on(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n\n function handleLiveEvent(e) {\n const target = e.target;\n if (!target) return;\n const eventData = e.target.dom7EventData || [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n if ($(target).is(targetSelector)) listener.apply(target, eventData);else {\n const parents = $(target).parents(); // eslint-disable-line\n\n for (let k = 0; k < parents.length; k += 1) {\n if ($(parents[k]).is(targetSelector)) listener.apply(parents[k], eventData);\n }\n }\n }\n\n function handleEvent(e) {\n const eventData = e && e.target ? e.target.dom7EventData || [] : [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n listener.apply(this, eventData);\n }\n\n const events = eventType.split(' ');\n let j;\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (!targetSelector) {\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7Listeners) el.dom7Listeners = {};\n if (!el.dom7Listeners[event]) el.dom7Listeners[event] = [];\n el.dom7Listeners[event].push({\n listener,\n proxyListener: handleEvent\n });\n el.addEventListener(event, handleEvent, capture);\n }\n } else {\n // Live events\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7LiveListeners) el.dom7LiveListeners = {};\n if (!el.dom7LiveListeners[event]) el.dom7LiveListeners[event] = [];\n el.dom7LiveListeners[event].push({\n listener,\n proxyListener: handleLiveEvent\n });\n el.addEventListener(event, handleLiveEvent, capture);\n }\n }\n }\n\n return this;\n}\n\nfunction off(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n const events = eventType.split(' ');\n\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n let handlers;\n\n if (!targetSelector && el.dom7Listeners) {\n handlers = el.dom7Listeners[event];\n } else if (targetSelector && el.dom7LiveListeners) {\n handlers = el.dom7LiveListeners[event];\n }\n\n if (handlers && handlers.length) {\n for (let k = handlers.length - 1; k >= 0; k -= 1) {\n const handler = handlers[k];\n\n if (listener && handler.listener === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (!listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n }\n }\n }\n }\n }\n\n return this;\n}\n\nfunction once(...args) {\n const dom = this;\n let [eventName, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventName, listener, capture] = args;\n targetSelector = undefined;\n }\n\n function onceHandler(...eventArgs) {\n listener.apply(this, eventArgs);\n dom.off(eventName, targetSelector, onceHandler, capture);\n\n if (onceHandler.dom7proxy) {\n delete onceHandler.dom7proxy;\n }\n }\n\n onceHandler.dom7proxy = listener;\n return dom.on(eventName, targetSelector, onceHandler, capture);\n}\n\nfunction trigger(...args) {\n const window = getWindow();\n const events = args[0].split(' ');\n const eventData = args[1];\n\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n\n if (window.CustomEvent) {\n const evt = new window.CustomEvent(event, {\n detail: eventData,\n bubbles: true,\n cancelable: true\n });\n el.dom7EventData = args.filter((data, dataIndex) => dataIndex > 0);\n el.dispatchEvent(evt);\n el.dom7EventData = [];\n delete el.dom7EventData;\n }\n }\n }\n\n return this;\n}\n\nfunction transitionEnd(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('transitionend', fireCallBack);\n }\n\n if (callback) {\n dom.on('transitionend', fireCallBack);\n }\n\n return this;\n}\n\nfunction animationEnd(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('animationend', fireCallBack);\n }\n\n if (callback) {\n dom.on('animationend', fireCallBack);\n }\n\n return this;\n}\n\nfunction width() {\n const window = getWindow();\n\n if (this[0] === window) {\n return window.innerWidth;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('width'));\n }\n\n return null;\n}\n\nfunction outerWidth(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return this[0].offsetWidth + parseFloat(styles.getPropertyValue('margin-right')) + parseFloat(styles.getPropertyValue('margin-left'));\n }\n\n return this[0].offsetWidth;\n }\n\n return null;\n}\n\nfunction height() {\n const window = getWindow();\n\n if (this[0] === window) {\n return window.innerHeight;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('height'));\n }\n\n return null;\n}\n\nfunction outerHeight(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom'));\n }\n\n return this[0].offsetHeight;\n }\n\n return null;\n}\n\nfunction offset() {\n if (this.length > 0) {\n const window = getWindow();\n const document = getDocument();\n const el = this[0];\n const box = el.getBoundingClientRect();\n const body = document.body;\n const clientTop = el.clientTop || body.clientTop || 0;\n const clientLeft = el.clientLeft || body.clientLeft || 0;\n const scrollTop = el === window ? window.scrollY : el.scrollTop;\n const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n return {\n top: box.top + scrollTop - clientTop,\n left: box.left + scrollLeft - clientLeft\n };\n }\n\n return null;\n}\n\nfunction hide() {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.display = 'none';\n }\n\n return this;\n}\n\nfunction show() {\n const window = getWindow();\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.style.display === 'none') {\n el.style.display = '';\n }\n\n if (window.getComputedStyle(el, null).getPropertyValue('display') === 'none') {\n // Still not visible\n el.style.display = 'block';\n }\n }\n\n return this;\n}\n\nfunction styles() {\n const window = getWindow();\n if (this[0]) return window.getComputedStyle(this[0], null);\n return {};\n}\n\nfunction css(props, value) {\n const window = getWindow();\n let i;\n\n if (arguments.length === 1) {\n if (typeof props === 'string') {\n // .css('width')\n if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props);\n } else {\n // .css({ width: '100px' })\n for (i = 0; i < this.length; i += 1) {\n for (const prop in props) {\n this[i].style[prop] = props[prop];\n }\n }\n\n return this;\n }\n }\n\n if (arguments.length === 2 && typeof props === 'string') {\n // .css('width', '100px')\n for (i = 0; i < this.length; i += 1) {\n this[i].style[props] = value;\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction each(callback) {\n if (!callback) return this;\n this.forEach((el, index) => {\n callback.apply(el, [el, index]);\n });\n return this;\n}\n\nfunction filter(callback) {\n const result = arrayFilter(this, callback);\n return $(result);\n}\n\nfunction html(html) {\n if (typeof html === 'undefined') {\n return this[0] ? this[0].innerHTML : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].innerHTML = html;\n }\n\n return this;\n}\n\nfunction text(text) {\n if (typeof text === 'undefined') {\n return this[0] ? this[0].textContent.trim() : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].textContent = text;\n }\n\n return this;\n}\n\nfunction is(selector) {\n const window = getWindow();\n const document = getDocument();\n const el = this[0];\n let compareWith;\n let i;\n if (!el || typeof selector === 'undefined') return false;\n\n if (typeof selector === 'string') {\n if (el.matches) return el.matches(selector);\n if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector);\n if (el.msMatchesSelector) return el.msMatchesSelector(selector);\n compareWith = $(selector);\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n if (selector === document) {\n return el === document;\n }\n\n if (selector === window) {\n return el === window;\n }\n\n if (selector.nodeType || selector instanceof Dom7) {\n compareWith = selector.nodeType ? [selector] : selector;\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n return false;\n}\n\nfunction index() {\n let child = this[0];\n let i;\n\n if (child) {\n i = 0; // eslint-disable-next-line\n\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n\n return i;\n }\n\n return undefined;\n}\n\nfunction eq(index) {\n if (typeof index === 'undefined') return this;\n const length = this.length;\n\n if (index > length - 1) {\n return $([]);\n }\n\n if (index < 0) {\n const returnIndex = length + index;\n if (returnIndex < 0) return $([]);\n return $([this[returnIndex]]);\n }\n\n return $([this[index]]);\n}\n\nfunction append(...els) {\n let newChild;\n const document = getDocument();\n\n for (let k = 0; k < els.length; k += 1) {\n newChild = els[k];\n\n for (let i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\n while (tempDiv.firstChild) {\n this[i].appendChild(tempDiv.firstChild);\n }\n } else if (newChild instanceof Dom7) {\n for (let j = 0; j < newChild.length; j += 1) {\n this[i].appendChild(newChild[j]);\n }\n } else {\n this[i].appendChild(newChild);\n }\n }\n }\n\n return this;\n}\n\nfunction appendTo(parent) {\n $(parent).append(this);\n return this;\n}\n\nfunction prepend(newChild) {\n const document = getDocument();\n let i;\n let j;\n\n for (i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\n for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {\n this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);\n }\n } else if (newChild instanceof Dom7) {\n for (j = 0; j < newChild.length; j += 1) {\n this[i].insertBefore(newChild[j], this[i].childNodes[0]);\n }\n } else {\n this[i].insertBefore(newChild, this[i].childNodes[0]);\n }\n }\n\n return this;\n}\n\nfunction prependTo(parent) {\n $(parent).prepend(this);\n return this;\n}\n\nfunction insertBefore(selector) {\n const before = $(selector);\n\n for (let i = 0; i < this.length; i += 1) {\n if (before.length === 1) {\n before[0].parentNode.insertBefore(this[i], before[0]);\n } else if (before.length > 1) {\n for (let j = 0; j < before.length; j += 1) {\n before[j].parentNode.insertBefore(this[i].cloneNode(true), before[j]);\n }\n }\n }\n}\n\nfunction insertAfter(selector) {\n const after = $(selector);\n\n for (let i = 0; i < this.length; i += 1) {\n if (after.length === 1) {\n after[0].parentNode.insertBefore(this[i], after[0].nextSibling);\n } else if (after.length > 1) {\n for (let j = 0; j < after.length; j += 1) {\n after[j].parentNode.insertBefore(this[i].cloneNode(true), after[j].nextSibling);\n }\n }\n }\n}\n\nfunction next(selector) {\n if (this.length > 0) {\n if (selector) {\n if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) {\n return $([this[0].nextElementSibling]);\n }\n\n return $([]);\n }\n\n if (this[0].nextElementSibling) return $([this[0].nextElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction nextAll(selector) {\n const nextEls = [];\n let el = this[0];\n if (!el) return $([]);\n\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(next).is(selector)) nextEls.push(next);\n } else nextEls.push(next);\n\n el = next;\n }\n\n return $(nextEls);\n}\n\nfunction prev(selector) {\n if (this.length > 0) {\n const el = this[0];\n\n if (selector) {\n if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) {\n return $([el.previousElementSibling]);\n }\n\n return $([]);\n }\n\n if (el.previousElementSibling) return $([el.previousElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction prevAll(selector) {\n const prevEls = [];\n let el = this[0];\n if (!el) return $([]);\n\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(prev).is(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n\n el = prev;\n }\n\n return $(prevEls);\n}\n\nfunction siblings(selector) {\n return this.nextAll(selector).add(this.prevAll(selector));\n}\n\nfunction parent(selector) {\n const parents = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode !== null) {\n if (selector) {\n if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode);\n } else {\n parents.push(this[i].parentNode);\n }\n }\n }\n\n return $(parents);\n}\n\nfunction parents(selector) {\n const parents = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n let parent = this[i].parentNode; // eslint-disable-line\n\n while (parent) {\n if (selector) {\n if ($(parent).is(selector)) parents.push(parent);\n } else {\n parents.push(parent);\n }\n\n parent = parent.parentNode;\n }\n }\n\n return $(parents);\n}\n\nfunction closest(selector) {\n let closest = this; // eslint-disable-line\n\n if (typeof selector === 'undefined') {\n return $([]);\n }\n\n if (!closest.is(selector)) {\n closest = closest.parents(selector).eq(0);\n }\n\n return closest;\n}\n\nfunction find(selector) {\n const foundElements = [];\n\n for (let i = 0; i < this.length; i += 1) {\n const found = this[i].querySelectorAll(selector);\n\n for (let j = 0; j < found.length; j += 1) {\n foundElements.push(found[j]);\n }\n }\n\n return $(foundElements);\n}\n\nfunction children(selector) {\n const children = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n const childNodes = this[i].children;\n\n for (let j = 0; j < childNodes.length; j += 1) {\n if (!selector || $(childNodes[j]).is(selector)) {\n children.push(childNodes[j]);\n }\n }\n }\n\n return $(children);\n}\n\nfunction remove() {\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode) this[i].parentNode.removeChild(this[i]);\n }\n\n return this;\n}\n\nfunction detach() {\n return this.remove();\n}\n\nfunction add(...els) {\n const dom = this;\n let i;\n let j;\n\n for (i = 0; i < els.length; i += 1) {\n const toAdd = $(els[i]);\n\n for (j = 0; j < toAdd.length; j += 1) {\n dom.push(toAdd[j]);\n }\n }\n\n return dom;\n}\n\nfunction empty() {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.nodeType === 1) {\n for (let j = 0; j < el.childNodes.length; j += 1) {\n if (el.childNodes[j].parentNode) {\n el.childNodes[j].parentNode.removeChild(el.childNodes[j]);\n }\n }\n\n el.textContent = '';\n }\n }\n\n return this;\n}\n\n// eslint-disable-next-line\n\nfunction scrollTo(...args) {\n const window = getWindow();\n let [left, top, duration, easing, callback] = args;\n\n if (args.length === 4 && typeof easing === 'function') {\n callback = easing;\n [left, top, duration, callback, easing] = args;\n }\n\n if (typeof easing === 'undefined') easing = 'swing';\n return this.each(function animate() {\n const el = this;\n let currentTop;\n let currentLeft;\n let maxTop;\n let maxLeft;\n let newTop;\n let newLeft;\n let scrollTop; // eslint-disable-line\n\n let scrollLeft; // eslint-disable-line\n\n let animateTop = top > 0 || top === 0;\n let animateLeft = left > 0 || left === 0;\n\n if (typeof easing === 'undefined') {\n easing = 'swing';\n }\n\n if (animateTop) {\n currentTop = el.scrollTop;\n\n if (!duration) {\n el.scrollTop = top;\n }\n }\n\n if (animateLeft) {\n currentLeft = el.scrollLeft;\n\n if (!duration) {\n el.scrollLeft = left;\n }\n }\n\n if (!duration) return;\n\n if (animateTop) {\n maxTop = el.scrollHeight - el.offsetHeight;\n newTop = Math.max(Math.min(top, maxTop), 0);\n }\n\n if (animateLeft) {\n maxLeft = el.scrollWidth - el.offsetWidth;\n newLeft = Math.max(Math.min(left, maxLeft), 0);\n }\n\n let startTime = null;\n if (animateTop && newTop === currentTop) animateTop = false;\n if (animateLeft && newLeft === currentLeft) animateLeft = false;\n\n function render(time = new Date().getTime()) {\n if (startTime === null) {\n startTime = time;\n }\n\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = easing === 'linear' ? progress : 0.5 - Math.cos(progress * Math.PI) / 2;\n let done;\n if (animateTop) scrollTop = currentTop + easeProgress * (newTop - currentTop);\n if (animateLeft) scrollLeft = currentLeft + easeProgress * (newLeft - currentLeft);\n\n if (animateTop && newTop > currentTop && scrollTop >= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateTop && newTop < currentTop && scrollTop <= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateLeft && newLeft > currentLeft && scrollLeft >= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (animateLeft && newLeft < currentLeft && scrollLeft <= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (done) {\n if (callback) callback();\n return;\n }\n\n if (animateTop) el.scrollTop = scrollTop;\n if (animateLeft) el.scrollLeft = scrollLeft;\n window.requestAnimationFrame(render);\n }\n\n window.requestAnimationFrame(render);\n });\n} // scrollTop(top, duration, easing, callback) {\n\n\nfunction scrollTop(...args) {\n let [top, duration, easing, callback] = args;\n\n if (args.length === 3 && typeof easing === 'function') {\n [top, duration, callback, easing] = args;\n }\n\n const dom = this;\n\n if (typeof top === 'undefined') {\n if (dom.length > 0) return dom[0].scrollTop;\n return null;\n }\n\n return dom.scrollTo(undefined, top, duration, easing, callback);\n}\n\nfunction scrollLeft(...args) {\n let [left, duration, easing, callback] = args;\n\n if (args.length === 3 && typeof easing === 'function') {\n [left, duration, callback, easing] = args;\n }\n\n const dom = this;\n\n if (typeof left === 'undefined') {\n if (dom.length > 0) return dom[0].scrollLeft;\n return null;\n }\n\n return dom.scrollTo(left, undefined, duration, easing, callback);\n}\n\n// eslint-disable-next-line\n\nfunction animate(initialProps, initialParams) {\n const window = getWindow();\n const els = this;\n const a = {\n props: Object.assign({}, initialProps),\n params: Object.assign({\n duration: 300,\n easing: 'swing' // or 'linear'\n\n /* Callbacks\n begin(elements)\n complete(elements)\n progress(elements, complete, remaining, start, tweenValue)\n */\n\n }, initialParams),\n elements: els,\n animating: false,\n que: [],\n\n easingProgress(easing, progress) {\n if (easing === 'swing') {\n return 0.5 - Math.cos(progress * Math.PI) / 2;\n }\n\n if (typeof easing === 'function') {\n return easing(progress);\n }\n\n return progress;\n },\n\n stop() {\n if (a.frameId) {\n window.cancelAnimationFrame(a.frameId);\n }\n\n a.animating = false;\n a.elements.each(el => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n a.que = [];\n },\n\n done(complete) {\n a.animating = false;\n a.elements.each(el => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n if (complete) complete(els);\n\n if (a.que.length > 0) {\n const que = a.que.shift();\n a.animate(que[0], que[1]);\n }\n },\n\n animate(props, params) {\n if (a.animating) {\n a.que.push([props, params]);\n return a;\n }\n\n const elements = []; // Define & Cache Initials & Units\n\n a.elements.each((el, index) => {\n let initialFullValue;\n let initialValue;\n let unit;\n let finalValue;\n let finalFullValue;\n if (!el.dom7AnimateInstance) a.elements[index].dom7AnimateInstance = a;\n elements[index] = {\n container: el\n };\n Object.keys(props).forEach(prop => {\n initialFullValue = window.getComputedStyle(el, null).getPropertyValue(prop).replace(',', '.');\n initialValue = parseFloat(initialFullValue);\n unit = initialFullValue.replace(initialValue, '');\n finalValue = parseFloat(props[prop]);\n finalFullValue = props[prop] + unit;\n elements[index][prop] = {\n initialFullValue,\n initialValue,\n unit,\n finalValue,\n finalFullValue,\n currentValue: initialValue\n };\n });\n });\n let startTime = null;\n let time;\n let elementsDone = 0;\n let propsDone = 0;\n let done;\n let began = false;\n a.animating = true;\n\n function render() {\n time = new Date().getTime();\n let progress;\n let easeProgress; // let el;\n\n if (!began) {\n began = true;\n if (params.begin) params.begin(els);\n }\n\n if (startTime === null) {\n startTime = time;\n }\n\n if (params.progress) {\n // eslint-disable-next-line\n params.progress(els, Math.max(Math.min((time - startTime) / params.duration, 1), 0), startTime + params.duration - time < 0 ? 0 : startTime + params.duration - time, startTime);\n }\n\n elements.forEach(element => {\n const el = element;\n if (done || el.done) return;\n Object.keys(props).forEach(prop => {\n if (done || el.done) return;\n progress = Math.max(Math.min((time - startTime) / params.duration, 1), 0);\n easeProgress = a.easingProgress(params.easing, progress);\n const {\n initialValue,\n finalValue,\n unit\n } = el[prop];\n el[prop].currentValue = initialValue + easeProgress * (finalValue - initialValue);\n const currentValue = el[prop].currentValue;\n\n if (finalValue > initialValue && currentValue >= finalValue || finalValue < initialValue && currentValue <= finalValue) {\n el.container.style[prop] = finalValue + unit;\n propsDone += 1;\n\n if (propsDone === Object.keys(props).length) {\n el.done = true;\n elementsDone += 1;\n }\n\n if (elementsDone === elements.length) {\n done = true;\n }\n }\n\n if (done) {\n a.done(params.complete);\n return;\n }\n\n el.container.style[prop] = currentValue + unit;\n });\n });\n if (done) return; // Then call\n\n a.frameId = window.requestAnimationFrame(render);\n }\n\n a.frameId = window.requestAnimationFrame(render);\n return a;\n }\n\n };\n\n if (a.elements.length === 0) {\n return els;\n }\n\n let animateInstance;\n\n for (let i = 0; i < a.elements.length; i += 1) {\n if (a.elements[i].dom7AnimateInstance) {\n animateInstance = a.elements[i].dom7AnimateInstance;\n } else a.elements[i].dom7AnimateInstance = a;\n }\n\n if (!animateInstance) {\n animateInstance = a;\n }\n\n if (initialProps === 'stop') {\n animateInstance.stop();\n } else {\n animateInstance.animate(a.props, a.params);\n }\n\n return els;\n}\n\nfunction stop() {\n const els = this;\n\n for (let i = 0; i < els.length; i += 1) {\n if (els[i].dom7AnimateInstance) {\n els[i].dom7AnimateInstance.stop();\n }\n }\n}\n\nconst noTrigger = 'resize scroll'.split(' ');\n\nfunction shortcut(name) {\n function eventHandler(...args) {\n if (typeof args[0] === 'undefined') {\n for (let i = 0; i < this.length; i += 1) {\n if (noTrigger.indexOf(name) < 0) {\n if (name in this[i]) this[i][name]();else {\n $(this[i]).trigger(name);\n }\n }\n }\n\n return this;\n }\n\n return this.on(name, ...args);\n }\n\n return eventHandler;\n}\n\nconst click = shortcut('click');\nconst blur = shortcut('blur');\nconst focus = shortcut('focus');\nconst focusin = shortcut('focusin');\nconst focusout = shortcut('focusout');\nconst keyup = shortcut('keyup');\nconst keydown = shortcut('keydown');\nconst keypress = shortcut('keypress');\nconst submit = shortcut('submit');\nconst change = shortcut('change');\nconst mousedown = shortcut('mousedown');\nconst mousemove = shortcut('mousemove');\nconst mouseup = shortcut('mouseup');\nconst mouseenter = shortcut('mouseenter');\nconst mouseleave = shortcut('mouseleave');\nconst mouseout = shortcut('mouseout');\nconst mouseover = shortcut('mouseover');\nconst touchstart = shortcut('touchstart');\nconst touchend = shortcut('touchend');\nconst touchmove = shortcut('touchmove');\nconst resize = shortcut('resize');\nconst scroll = shortcut('scroll');\n\nexport default $;\nexport { $, add, addClass, animate, animationEnd, append, appendTo, attr, blur, change, children, click, closest, css, data, dataset, detach, each, empty, eq, filter, find, focus, focusin, focusout, hasClass, height, hide, html, index, insertAfter, insertBefore, is, keydown, keypress, keyup, mousedown, mouseenter, mouseleave, mousemove, mouseout, mouseover, mouseup, next, nextAll, off, offset, on, once, outerHeight, outerWidth, parent, parents, prepend, prependTo, prev, prevAll, prop, remove, removeAttr, removeClass, removeData, resize, scroll, scrollLeft, scrollTo, scrollTop, show, siblings, stop, styles, submit, text, toggleClass, touchend, touchmove, touchstart, transform, transition, transitionEnd, trigger, val, value, width };\n","import { $, addClass, removeClass, hasClass, toggleClass, attr, removeAttr, transform, transition, on, off, trigger, transitionEnd, outerWidth, outerHeight, styles, offset, css, each, html, text, is, index, eq, append, prepend, next, nextAll, prev, prevAll, parent, parents, closest, find, children, filter, remove } from 'dom7';\nconst Methods = {\n addClass,\n removeClass,\n hasClass,\n toggleClass,\n attr,\n removeAttr,\n transform,\n transition,\n on,\n off,\n trigger,\n transitionEnd,\n outerWidth,\n outerHeight,\n styles,\n offset,\n css,\n each,\n html,\n text,\n is,\n index,\n eq,\n append,\n prepend,\n next,\n nextAll,\n prev,\n prevAll,\n parent,\n parents,\n closest,\n find,\n children,\n filter,\n remove\n};\nObject.keys(Methods).forEach(methodName => {\n Object.defineProperty($.fn, methodName, {\n value: Methods[methodName],\n writable: true\n });\n});\nexport default $;","import { getWindow } from 'ssr-window';\n\nfunction deleteProps(obj) {\n const object = obj;\n Object.keys(object).forEach(key => {\n try {\n object[key] = null;\n } catch (e) {// no getter for object\n }\n\n try {\n delete object[key];\n } catch (e) {// something got wrong\n }\n });\n}\n\nfunction nextTick(callback, delay = 0) {\n return setTimeout(callback, delay);\n}\n\nfunction now() {\n return Date.now();\n}\n\nfunction getComputedStyle(el) {\n const window = getWindow();\n let style;\n\n if (window.getComputedStyle) {\n style = window.getComputedStyle(el, null);\n }\n\n if (!style && el.currentStyle) {\n style = el.currentStyle;\n }\n\n if (!style) {\n style = el.style;\n }\n\n return style;\n}\n\nfunction getTranslate(el, axis = 'x') {\n const window = getWindow();\n let matrix;\n let curTransform;\n let transformMatrix;\n const curStyle = getComputedStyle(el, null);\n\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', ');\n } // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n\n\n transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n } else {\n transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41; // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]); // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42; // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]); // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n\n return curTransform || 0;\n}\n\nfunction isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';\n}\n\nfunction isNode(node) {\n // eslint-disable-next-line\n if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') {\n return node instanceof HTMLElement;\n }\n\n return node && (node.nodeType === 1 || node.nodeType === 11);\n}\n\nfunction extend(...args) {\n const to = Object(args[0]);\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n\n for (let i = 1; i < args.length; i += 1) {\n const nextSource = args[i];\n\n if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {\n const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0);\n\n for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n const nextKey = keysArray[nextIndex];\n const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n\n if (desc !== undefined && desc.enumerable) {\n if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n\n return to;\n}\n\nfunction setCSSProperty(el, varName, varValue) {\n el.style.setProperty(varName, varValue);\n}\n\nfunction animateCSSModeScroll({\n swiper,\n targetPosition,\n side\n}) {\n const window = getWindow();\n const startPosition = -swiper.translate;\n let startTime = null;\n let time;\n const duration = swiper.params.speed;\n swiper.wrapperEl.style.scrollSnapType = 'none';\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n const dir = targetPosition > startPosition ? 'next' : 'prev';\n\n const isOutOfBound = (current, target) => {\n return dir === 'next' && current >= target || dir === 'prev' && current <= target;\n };\n\n const animate = () => {\n time = new Date().getTime();\n\n if (startTime === null) {\n startTime = time;\n }\n\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;\n let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);\n\n if (isOutOfBound(currentPosition, targetPosition)) {\n currentPosition = targetPosition;\n }\n\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n\n if (isOutOfBound(currentPosition, targetPosition)) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.scrollSnapType = '';\n setTimeout(() => {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n });\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n return;\n }\n\n swiper.cssModeFrameID = window.requestAnimationFrame(animate);\n };\n\n animate();\n}\n\nexport { animateCSSModeScroll, deleteProps, nextTick, now, getTranslate, isObject, extend, getComputedStyle, setCSSProperty };","import { getWindow, getDocument } from 'ssr-window';\nlet support;\n\nfunction calcSupport() {\n const window = getWindow();\n const document = getDocument();\n return {\n smoothScroll: document.documentElement && 'scrollBehavior' in document.documentElement.style,\n touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch),\n passiveListener: function checkPassiveListener() {\n let supportsPassive = false;\n\n try {\n const opts = Object.defineProperty({}, 'passive', {\n // eslint-disable-next-line\n get() {\n supportsPassive = true;\n }\n\n });\n window.addEventListener('testPassiveListener', null, opts);\n } catch (e) {// No support\n }\n\n return supportsPassive;\n }(),\n gestures: function checkGestures() {\n return 'ongesturestart' in window;\n }()\n };\n}\n\nfunction getSupport() {\n if (!support) {\n support = calcSupport();\n }\n\n return support;\n}\n\nexport { getSupport };","import { getWindow } from 'ssr-window';\nimport { getSupport } from './get-support.js';\nlet deviceCached;\n\nfunction calcDevice({\n userAgent\n} = {}) {\n const support = getSupport();\n const window = getWindow();\n const platform = window.navigator.platform;\n const ua = userAgent || window.navigator.userAgent;\n const device = {\n ios: false,\n android: false\n };\n const screenWidth = window.screen.width;\n const screenHeight = window.screen.height;\n const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n\n let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n const windows = platform === 'Win32';\n let macos = platform === 'MacIntel'; // iPadOs 13 fix\n\n const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];\n\n if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) {\n ipad = ua.match(/(Version)\\/([\\d.]+)/);\n if (!ipad) ipad = [0, 1, '13_0_0'];\n macos = false;\n } // Android\n\n\n if (android && !windows) {\n device.os = 'android';\n device.android = true;\n }\n\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n } // Export object\n\n\n return device;\n}\n\nfunction getDevice(overrides = {}) {\n if (!deviceCached) {\n deviceCached = calcDevice(overrides);\n }\n\n return deviceCached;\n}\n\nexport { getDevice };","import { getWindow } from 'ssr-window';\nlet browser;\n\nfunction calcBrowser() {\n const window = getWindow();\n\n function isSafari() {\n const ua = window.navigator.userAgent.toLowerCase();\n return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;\n }\n\n return {\n isSafari: isSafari(),\n isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent)\n };\n}\n\nfunction getBrowser() {\n if (!browser) {\n browser = calcBrowser();\n }\n\n return browser;\n}\n\nexport { getBrowser };","export default function transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step\n}) {\n const {\n activeIndex,\n previousIndex\n } = swiper;\n let dir = direction;\n\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';\n }\n\n swiper.emit(`transition${step}`);\n\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit(`slideResetTransition${step}`);\n return;\n }\n\n swiper.emit(`slideChangeTransition${step}`);\n\n if (dir === 'next') {\n swiper.emit(`slideNextTransition${step}`);\n } else {\n swiper.emit(`slidePrevTransition${step}`);\n }\n }\n}","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now } from '../../shared/utils.js'; // Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\n\nfunction closestElement(selector, base = this) {\n function __closestFrom(el) {\n if (!el || el === getDocument() || el === getWindow()) return null;\n if (el.assignedSlot) el = el.assignedSlot;\n const found = el.closest(selector);\n\n if (!found && !el.getRootNode) {\n return null;\n }\n\n return found || __closestFrom(el.getRootNode().host);\n }\n\n return __closestFrom(base);\n}\n\nexport default function onTouchStart(event) {\n const swiper = this;\n const document = getDocument();\n const window = getWindow();\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n enabled\n } = swiper;\n if (!enabled) return;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n\n if (!swiper.animating && params.cssMode && params.loop) {\n swiper.loopFix();\n }\n\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n let $targetEl = $(e.target);\n\n if (params.touchEventsTarget === 'wrapper') {\n if (!$targetEl.closest(swiper.wrapperEl).length) return;\n }\n\n data.isTouchEvent = e.type === 'touchstart';\n if (!data.isTouchEvent && 'which' in e && e.which === 3) return;\n if (!data.isTouchEvent && 'button' in e && e.button > 0) return;\n if (data.isTouched && data.isMoved) return; // change target el for shadow root component\n\n const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== ''; // eslint-disable-next-line\n\n const eventPath = event.composedPath ? event.composedPath() : event.path;\n\n if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) {\n $targetEl = $(eventPath[0]);\n }\n\n const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`;\n const isTargetShadow = !!(e.target && e.target.shadowRoot); // use closestElement for shadow root element to get the actual closest for nested shadow root element\n\n if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, $targetEl[0]) : $targetEl.closest(noSwipingSelector)[0])) {\n swiper.allowClick = true;\n return;\n }\n\n if (params.swipeHandler) {\n if (!$targetEl.closest(params.swipeHandler)[0]) return;\n }\n\n touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n const startX = touches.currentX;\n const startY = touches.currentY; // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n\n const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;\n const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;\n\n if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) {\n if (edgeSwipeDetection === 'prevent') {\n event.preventDefault();\n } else {\n return;\n }\n }\n\n Object.assign(data, {\n isTouched: true,\n isMoved: false,\n allowTouchCallbacks: true,\n isScrolling: undefined,\n startMoving: undefined\n });\n touches.startX = startX;\n touches.startY = startY;\n data.touchStartTime = now();\n swiper.allowClick = true;\n swiper.updateSize();\n swiper.swipeDirection = undefined;\n if (params.threshold > 0) data.allowThresholdMove = false;\n\n if (e.type !== 'touchstart') {\n let preventDefault = true;\n\n if ($targetEl.is(data.focusableElements)) {\n preventDefault = false;\n\n if ($targetEl[0].nodeName === 'SELECT') {\n data.isTouched = false;\n }\n }\n\n if (document.activeElement && $(document.activeElement).is(data.focusableElements) && document.activeElement !== $targetEl[0]) {\n document.activeElement.blur();\n }\n\n const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n\n if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !$targetEl[0].isContentEditable) {\n e.preventDefault();\n }\n }\n\n if (swiper.params.freeMode && swiper.params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) {\n swiper.freeMode.onTouchStart();\n }\n\n swiper.emit('touchStart', e);\n}","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now } from '../../shared/utils.js';\nexport default function onTouchMove(event) {\n const document = getDocument();\n const swiper = this;\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n enabled\n } = swiper;\n if (!enabled) return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n\n return;\n }\n\n if (data.isTouchEvent && e.type !== 'touchmove') return;\n const targetTouch = e.type === 'touchmove' && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]);\n const pageX = e.type === 'touchmove' ? targetTouch.pageX : e.pageX;\n const pageY = e.type === 'touchmove' ? targetTouch.pageY : e.pageY;\n\n if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n\n if (!swiper.allowTouchMove) {\n if (!$(e.target).is(data.focusableElements)) {\n swiper.allowClick = false;\n }\n\n if (data.isTouched) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY\n });\n data.touchStartTime = now();\n }\n\n return;\n }\n\n if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) {\n if (swiper.isVertical()) {\n // Vertical\n if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) {\n data.isTouched = false;\n data.isMoved = false;\n return;\n }\n } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) {\n return;\n }\n }\n\n if (data.isTouchEvent && document.activeElement) {\n if (e.target === document.activeElement && $(e.target).is(data.focusableElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n\n if (e.targetTouches && e.targetTouches.length > 1) return;\n touches.currentX = pageX;\n touches.currentY = pageY;\n const diffX = touches.currentX - touches.startX;\n const diffY = touches.currentY - touches.startY;\n if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return;\n\n if (typeof data.isScrolling === 'undefined') {\n let touchAngle;\n\n if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) {\n data.isScrolling = false;\n } else {\n // eslint-disable-next-line\n if (diffX * diffX + diffY * diffY >= 25) {\n touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI;\n data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle;\n }\n }\n }\n\n if (data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n\n if (typeof data.startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data.startMoving = true;\n }\n }\n\n if (data.isScrolling) {\n data.isTouched = false;\n return;\n }\n\n if (!data.startMoving) {\n return;\n }\n\n swiper.allowClick = false;\n\n if (!params.cssMode && e.cancelable) {\n e.preventDefault();\n }\n\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n\n if (!data.isMoved) {\n if (params.loop && !params.cssMode) {\n swiper.loopFix();\n }\n\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n\n if (swiper.animating) {\n swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend');\n }\n\n data.allowMomentumBounce = false; // Grab Cursor\n\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n\n swiper.emit('sliderFirstMove', e);\n }\n\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n let diff = swiper.isHorizontal() ? diffX : diffY;\n touches.diff = diff;\n diff *= params.touchRatio;\n if (rtl) diff = -diff;\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n data.currentTranslate = diff + data.startTranslate;\n let disableParentSwiper = true;\n let resistanceRatio = params.resistanceRatio;\n\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n\n if (diff > 0 && data.currentTranslate > swiper.minTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;\n } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;\n }\n\n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n } // Directions locks\n\n\n if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n\n if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n\n if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {\n data.currentTranslate = data.startTranslate;\n } // Threshold\n\n\n if (params.threshold > 0) {\n if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n if (!data.allowThresholdMove) {\n data.allowThresholdMove = true;\n touches.startX = touches.currentX;\n touches.startY = touches.currentY;\n data.currentTranslate = data.startTranslate;\n touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n return;\n }\n } else {\n data.currentTranslate = data.startTranslate;\n return;\n }\n }\n\n if (!params.followFinger || params.cssMode) return; // Update active index in free mode\n\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n if (swiper.params.freeMode && params.freeMode.enabled && swiper.freeMode) {\n swiper.freeMode.onTouchMove();\n } // Update progress\n\n\n swiper.updateProgress(data.currentTranslate); // Update translate\n\n swiper.setTranslate(data.currentTranslate);\n}","import { now, nextTick } from '../../shared/utils.js';\nexport default function onTouchEnd(event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n slidesGrid,\n enabled\n } = swiper;\n if (!enabled) return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n\n if (data.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n\n data.allowTouchCallbacks = false;\n\n if (!data.isTouched) {\n if (data.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n\n data.isMoved = false;\n data.startMoving = false;\n return;\n } // Return Grab Cursor\n\n\n if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(false);\n } // Time diff\n\n\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime; // Tap, doubleTap, Click\n\n if (swiper.allowClick) {\n const pathTree = e.path || e.composedPath && e.composedPath();\n swiper.updateClickedSlide(pathTree && pathTree[0] || e.target);\n swiper.emit('tap click', e);\n\n if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\n swiper.emit('doubleTap doubleClick', e);\n }\n }\n\n data.lastClickTime = now();\n nextTick(() => {\n if (!swiper.destroyed) swiper.allowClick = true;\n });\n\n if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) {\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n let currentPos;\n\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data.currentTranslate;\n }\n\n if (params.cssMode) {\n return;\n }\n\n if (swiper.params.freeMode && params.freeMode.enabled) {\n swiper.freeMode.onTouchEnd({\n currentPos\n });\n return;\n } // Find current slide\n\n\n let stopIndex = 0;\n let groupSize = swiper.slidesSizesGrid[0];\n\n for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) {\n const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n\n if (typeof slidesGrid[i + increment] !== 'undefined') {\n if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n stopIndex = i;\n groupSize = slidesGrid[i + increment] - slidesGrid[i];\n }\n } else if (currentPos >= slidesGrid[i]) {\n stopIndex = i;\n groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n }\n }\n\n let rewindFirstIndex = null;\n let rewindLastIndex = null;\n\n if (params.rewind) {\n if (swiper.isBeginning) {\n rewindLastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n } else if (swiper.isEnd) {\n rewindFirstIndex = 0;\n }\n } // Find current slide size\n\n\n const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n\n if (timeDiff > params.longSwipesMs) {\n // Long touches\n if (!params.longSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n\n if (swiper.swipeDirection === 'next') {\n if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex);\n }\n\n if (swiper.swipeDirection === 'prev') {\n if (ratio > 1 - params.longSwipesRatio) {\n swiper.slideTo(stopIndex + increment);\n } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) {\n swiper.slideTo(rewindLastIndex);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n } else {\n // Short swipes\n if (!params.shortSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n\n const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n\n if (!isNavButtonTarget) {\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment);\n }\n\n if (swiper.swipeDirection === 'prev') {\n swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex);\n }\n } else if (e.target === swiper.navigation.nextEl) {\n swiper.slideTo(stopIndex + increment);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n}","export default function onResize() {\n const swiper = this;\n const {\n params,\n el\n } = swiper;\n if (el && el.offsetWidth === 0) return; // Breakpoints\n\n if (params.breakpoints) {\n swiper.setBreakpoint();\n } // Save locks\n\n\n const {\n allowSlideNext,\n allowSlidePrev,\n snapGrid\n } = swiper; // Disable locks on resize\n\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateSlidesClasses();\n\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides) {\n swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n swiper.autoplay.run();\n } // Return locks after resize\n\n\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n}","export default function onClick(e) {\n const swiper = this;\n if (!swiper.enabled) return;\n\n if (!swiper.allowClick) {\n if (swiper.params.preventClicks) e.preventDefault();\n\n if (swiper.params.preventClicksPropagation && swiper.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n}","export default function onScroll() {\n const swiper = this;\n const {\n wrapperEl,\n rtlTranslate,\n enabled\n } = swiper;\n if (!enabled) return;\n swiper.previousTranslate = swiper.translate;\n\n if (swiper.isHorizontal()) {\n swiper.translate = -wrapperEl.scrollLeft;\n } else {\n swiper.translate = -wrapperEl.scrollTop;\n } // eslint-disable-next-line\n\n\n if (swiper.translate === 0) swiper.translate = 0;\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;\n }\n\n if (newProgress !== swiper.progress) {\n swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, false);\n}","import { getDocument } from 'ssr-window';\nimport onTouchStart from './onTouchStart.js';\nimport onTouchMove from './onTouchMove.js';\nimport onTouchEnd from './onTouchEnd.js';\nimport onResize from './onResize.js';\nimport onClick from './onClick.js';\nimport onScroll from './onScroll.js';\nlet dummyEventAttached = false;\n\nfunction dummyEventListener() {}\n\nconst events = (swiper, method) => {\n const document = getDocument();\n const {\n params,\n touchEvents,\n el,\n wrapperEl,\n device,\n support\n } = swiper;\n const capture = !!params.nested;\n const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n const swiperMethod = method; // Touch Events\n\n if (!support.touch) {\n el[domMethod](touchEvents.start, swiper.onTouchStart, false);\n document[domMethod](touchEvents.move, swiper.onTouchMove, capture);\n document[domMethod](touchEvents.end, swiper.onTouchEnd, false);\n } else {\n const passiveListener = touchEvents.start === 'touchstart' && support.passiveListener && params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n el[domMethod](touchEvents.start, swiper.onTouchStart, passiveListener);\n el[domMethod](touchEvents.move, swiper.onTouchMove, support.passiveListener ? {\n passive: false,\n capture\n } : capture);\n el[domMethod](touchEvents.end, swiper.onTouchEnd, passiveListener);\n\n if (touchEvents.cancel) {\n el[domMethod](touchEvents.cancel, swiper.onTouchEnd, passiveListener);\n }\n } // Prevent Links Clicks\n\n\n if (params.preventClicks || params.preventClicksPropagation) {\n el[domMethod]('click', swiper.onClick, true);\n }\n\n if (params.cssMode) {\n wrapperEl[domMethod]('scroll', swiper.onScroll);\n } // Resize handler\n\n\n if (params.updateOnWindowResize) {\n swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true);\n } else {\n swiper[swiperMethod]('observerUpdate', onResize, true);\n }\n};\n\nfunction attachEvents() {\n const swiper = this;\n const document = getDocument();\n const {\n params,\n support\n } = swiper;\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n\n if (params.cssMode) {\n swiper.onScroll = onScroll.bind(swiper);\n }\n\n swiper.onClick = onClick.bind(swiper);\n\n if (support.touch && !dummyEventAttached) {\n document.addEventListener('touchstart', dummyEventListener);\n dummyEventAttached = true;\n }\n\n events(swiper, 'on');\n}\n\nfunction detachEvents() {\n const swiper = this;\n events(swiper, 'off');\n}\n\nexport default {\n attachEvents,\n detachEvents\n};","import { extend } from '../../shared/utils.js';\n\nconst isGridEnabled = (swiper, params) => {\n return swiper.grid && params.grid && params.grid.rows > 1;\n};\n\nexport default function setBreakpoint() {\n const swiper = this;\n const {\n activeIndex,\n initialized,\n loopedSlides = 0,\n params,\n $el\n } = swiper;\n const breakpoints = params.breakpoints;\n if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return; // Get breakpoint for window width and update parameters\n\n const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el);\n if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;\n const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n const wasMultiRow = isGridEnabled(swiper, params);\n const isMultiRow = isGridEnabled(swiper, breakpointParams);\n const wasEnabled = params.enabled;\n\n if (wasMultiRow && !isMultiRow) {\n $el.removeClass(`${params.containerModifierClass}grid ${params.containerModifierClass}grid-column`);\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n $el.addClass(`${params.containerModifierClass}grid`);\n\n if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') {\n $el.addClass(`${params.containerModifierClass}grid-column`);\n }\n\n swiper.emitContainerClasses();\n } // Toggle navigation, pagination, scrollbar\n\n\n ['navigation', 'pagination', 'scrollbar'].forEach(prop => {\n const wasModuleEnabled = params[prop] && params[prop].enabled;\n const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled;\n\n if (wasModuleEnabled && !isModuleEnabled) {\n swiper[prop].disable();\n }\n\n if (!wasModuleEnabled && isModuleEnabled) {\n swiper[prop].enable();\n }\n });\n const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n\n if (directionChanged && initialized) {\n swiper.changeDirection();\n }\n\n extend(swiper.params, breakpointParams);\n const isEnabled = swiper.params.enabled;\n Object.assign(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev\n });\n\n if (wasEnabled && !isEnabled) {\n swiper.disable();\n } else if (!wasEnabled && isEnabled) {\n swiper.enable();\n }\n\n swiper.currentBreakpoint = breakpoint;\n swiper.emit('_beforeBreakpoint', breakpointParams);\n\n if (needsReLoop && initialized) {\n swiper.loopDestroy();\n swiper.loopCreate();\n swiper.updateSlides();\n swiper.slideTo(activeIndex - loopedSlides + swiper.loopedSlides, 0, false);\n }\n\n swiper.emit('breakpoint', breakpointParams);\n}","function checkOverflow() {\n const swiper = this;\n const {\n isLocked: wasLocked,\n params\n } = swiper;\n const {\n slidesOffsetBefore\n } = params;\n\n if (slidesOffsetBefore) {\n const lastSlideIndex = swiper.slides.length - 1;\n const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2;\n swiper.isLocked = swiper.size > lastSlideRightEdge;\n } else {\n swiper.isLocked = swiper.snapGrid.length === 1;\n }\n\n if (params.allowSlideNext === true) {\n swiper.allowSlideNext = !swiper.isLocked;\n }\n\n if (params.allowSlidePrev === true) {\n swiper.allowSlidePrev = !swiper.isLocked;\n }\n\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n }\n\n if (wasLocked !== swiper.isLocked) {\n swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n }\n}\n\nexport default {\n checkOverflow\n};","export default {\n init: true,\n direction: 'horizontal',\n touchEventsTarget: 'wrapper',\n initialSlide: 0,\n speed: 300,\n cssMode: false,\n updateOnWindowResize: true,\n resizeObserver: true,\n nested: false,\n createElements: false,\n enabled: true,\n focusableElements: 'input, select, option, textarea, button, video, label',\n // Overrides\n width: null,\n height: null,\n //\n preventInteractionOnTransition: false,\n // ssr\n userAgent: null,\n url: null,\n // To support iOS's swipe-to-go-back gesture (when being used in-app).\n edgeSwipeDetection: false,\n edgeSwipeThreshold: 20,\n // Autoheight\n autoHeight: false,\n // Set wrapper width\n setWrapperSize: false,\n // Virtual Translate\n virtualTranslate: false,\n // Effects\n effect: 'slide',\n // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n // Breakpoints\n breakpoints: undefined,\n breakpointsBase: 'window',\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerGroup: 1,\n slidesPerGroupSkip: 0,\n slidesPerGroupAuto: false,\n centeredSlides: false,\n centeredSlidesBounds: false,\n slidesOffsetBefore: 0,\n // in px\n slidesOffsetAfter: 0,\n // in px\n normalizeSlideIndex: true,\n centerInsufficientSlides: false,\n // Disable swiper and hide navigation when container not overflow\n watchOverflow: true,\n // Round length\n roundLengths: false,\n // Touches\n touchRatio: 1,\n touchAngle: 45,\n simulateTouch: true,\n shortSwipes: true,\n longSwipes: true,\n longSwipesRatio: 0.5,\n longSwipesMs: 300,\n followFinger: true,\n allowTouchMove: true,\n threshold: 0,\n touchMoveStopPropagation: false,\n touchStartPreventDefault: true,\n touchStartForcePreventDefault: false,\n touchReleaseOnEdges: false,\n // Unique Navigation Elements\n uniqueNavElements: true,\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n // Progress\n watchSlidesProgress: false,\n // Cursor\n grabCursor: false,\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n // Images\n preloadImages: true,\n updateOnImagesReady: true,\n // loop\n loop: false,\n loopAdditionalSlides: 0,\n loopedSlides: null,\n loopedSlidesLimit: true,\n loopFillGroupWithBlank: false,\n loopPreventsSlide: true,\n // rewind\n rewind: false,\n // Swiping/no swiping\n allowSlidePrev: true,\n allowSlideNext: true,\n swipeHandler: null,\n // '.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n noSwipingSelector: null,\n // Passive Listeners\n passiveListeners: true,\n maxBackfaceHiddenSlides: 10,\n // NS\n containerModifierClass: 'swiper-',\n // NEW\n slideClass: 'swiper-slide',\n slideBlankClass: 'swiper-slide-invisible-blank',\n slideActiveClass: 'swiper-slide-active',\n slideDuplicateActiveClass: 'swiper-slide-duplicate-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideDuplicateClass: 'swiper-slide-duplicate',\n slideNextClass: 'swiper-slide-next',\n slideDuplicateNextClass: 'swiper-slide-duplicate-next',\n slidePrevClass: 'swiper-slide-prev',\n slideDuplicatePrevClass: 'swiper-slide-duplicate-prev',\n wrapperClass: 'swiper-wrapper',\n // Callbacks\n runCallbacksOnInit: true,\n // Internals\n _emitClasses: false\n};","import { extend } from '../shared/utils.js';\nexport default function moduleExtendParams(params, allModulesParams) {\n return function extendParams(obj = {}) {\n const moduleParamName = Object.keys(obj)[0];\n const moduleParams = obj[moduleParamName];\n\n if (typeof moduleParams !== 'object' || moduleParams === null) {\n extend(allModulesParams, obj);\n return;\n }\n\n if (['navigation', 'pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] === true) {\n params[moduleParamName] = {\n auto: true\n };\n }\n\n if (!(moduleParamName in params && 'enabled' in moduleParams)) {\n extend(allModulesParams, obj);\n return;\n }\n\n if (params[moduleParamName] === true) {\n params[moduleParamName] = {\n enabled: true\n };\n }\n\n if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {\n params[moduleParamName].enabled = true;\n }\n\n if (!params[moduleParamName]) params[moduleParamName] = {\n enabled: false\n };\n extend(allModulesParams, obj);\n };\n}","/* eslint no-param-reassign: \"off\" */\nimport { getDocument } from 'ssr-window';\nimport $ from '../shared/dom.js';\nimport { extend, now, deleteProps } from '../shared/utils.js';\nimport { getSupport } from '../shared/get-support.js';\nimport { getDevice } from '../shared/get-device.js';\nimport { getBrowser } from '../shared/get-browser.js';\nimport Resize from './modules/resize/resize.js';\nimport Observer from './modules/observer/observer.js';\nimport eventsEmitter from './events-emitter.js';\nimport update from './update/index.js';\nimport translate from './translate/index.js';\nimport transition from './transition/index.js';\nimport slide from './slide/index.js';\nimport loop from './loop/index.js';\nimport grabCursor from './grab-cursor/index.js';\nimport events from './events/index.js';\nimport breakpoints from './breakpoints/index.js';\nimport classes from './classes/index.js';\nimport images from './images/index.js';\nimport checkOverflow from './check-overflow/index.js';\nimport defaults from './defaults.js';\nimport moduleExtendParams from './moduleExtendParams.js';\nconst prototypes = {\n eventsEmitter,\n update,\n translate,\n transition,\n slide,\n loop,\n grabCursor,\n events,\n breakpoints,\n checkOverflow,\n classes,\n images\n};\nconst extendedDefaults = {};\n\nclass Swiper {\n constructor(...args) {\n let el;\n let params;\n\n if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') {\n params = args[0];\n } else {\n [el, params] = args;\n }\n\n if (!params) params = {};\n params = extend({}, params);\n if (el && !params.el) params.el = el;\n\n if (params.el && $(params.el).length > 1) {\n const swipers = [];\n $(params.el).each(containerEl => {\n const newParams = extend({}, params, {\n el: containerEl\n });\n swipers.push(new Swiper(newParams));\n }); // eslint-disable-next-line no-constructor-return\n\n return swipers;\n } // Swiper Instance\n\n\n const swiper = this;\n swiper.__swiper__ = true;\n swiper.support = getSupport();\n swiper.device = getDevice({\n userAgent: params.userAgent\n });\n swiper.browser = getBrowser();\n swiper.eventsListeners = {};\n swiper.eventsAnyListeners = [];\n swiper.modules = [...swiper.__modules__];\n\n if (params.modules && Array.isArray(params.modules)) {\n swiper.modules.push(...params.modules);\n }\n\n const allModulesParams = {};\n swiper.modules.forEach(mod => {\n mod({\n swiper,\n extendParams: moduleExtendParams(params, allModulesParams),\n on: swiper.on.bind(swiper),\n once: swiper.once.bind(swiper),\n off: swiper.off.bind(swiper),\n emit: swiper.emit.bind(swiper)\n });\n }); // Extend defaults with modules params\n\n const swiperParams = extend({}, defaults, allModulesParams); // Extend defaults with passed params\n\n swiper.params = extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = extend({}, swiper.params);\n swiper.passedParams = extend({}, params); // add event listeners\n\n if (swiper.params && swiper.params.on) {\n Object.keys(swiper.params.on).forEach(eventName => {\n swiper.on(eventName, swiper.params.on[eventName]);\n });\n }\n\n if (swiper.params && swiper.params.onAny) {\n swiper.onAny(swiper.params.onAny);\n } // Save Dom lib\n\n\n swiper.$ = $; // Extend Swiper\n\n Object.assign(swiper, {\n enabled: swiper.params.enabled,\n el,\n // Classes\n classNames: [],\n // Slides\n slides: $(),\n slidesGrid: [],\n snapGrid: [],\n slidesSizesGrid: [],\n\n // isDirection\n isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n\n isVertical() {\n return swiper.params.direction === 'vertical';\n },\n\n // Indexes\n activeIndex: 0,\n realIndex: 0,\n //\n isBeginning: true,\n isEnd: false,\n // Props\n translate: 0,\n previousTranslate: 0,\n progress: 0,\n velocity: 0,\n animating: false,\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n // Touch Events\n touchEvents: function touchEvents() {\n const touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel'];\n const desktop = ['pointerdown', 'pointermove', 'pointerup'];\n swiper.touchEventsTouch = {\n start: touch[0],\n move: touch[1],\n end: touch[2],\n cancel: touch[3]\n };\n swiper.touchEventsDesktop = {\n start: desktop[0],\n move: desktop[1],\n end: desktop[2]\n };\n return swiper.support.touch || !swiper.params.simulateTouch ? swiper.touchEventsTouch : swiper.touchEventsDesktop;\n }(),\n touchEventsData: {\n isTouched: undefined,\n isMoved: undefined,\n allowTouchCallbacks: undefined,\n touchStartTime: undefined,\n isScrolling: undefined,\n currentTranslate: undefined,\n startTranslate: undefined,\n allowThresholdMove: undefined,\n // Form elements to match\n focusableElements: swiper.params.focusableElements,\n // Last click time\n lastClickTime: now(),\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n isTouchEvent: undefined,\n startMoving: undefined\n },\n // Clicks\n allowClick: true,\n // Touches\n allowTouchMove: swiper.params.allowTouchMove,\n touches: {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0\n },\n // Images\n imagesToLoad: [],\n imagesLoaded: 0\n });\n swiper.emit('_swiper'); // Init\n\n if (swiper.params.init) {\n swiper.init();\n } // Return app instance\n // eslint-disable-next-line no-constructor-return\n\n\n return swiper;\n }\n\n enable() {\n const swiper = this;\n if (swiper.enabled) return;\n swiper.enabled = true;\n\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n\n swiper.emit('enable');\n }\n\n disable() {\n const swiper = this;\n if (!swiper.enabled) return;\n swiper.enabled = false;\n\n if (swiper.params.grabCursor) {\n swiper.unsetGrabCursor();\n }\n\n swiper.emit('disable');\n }\n\n setProgress(progress, speed) {\n const swiper = this;\n progress = Math.min(Math.max(progress, 0), 1);\n const min = swiper.minTranslate();\n const max = swiper.maxTranslate();\n const current = (max - min) * progress + min;\n swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n emitContainerClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const cls = swiper.el.className.split(' ').filter(className => {\n return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;\n });\n swiper.emit('_containerClasses', cls.join(' '));\n }\n\n getSlideClasses(slideEl) {\n const swiper = this;\n if (swiper.destroyed) return '';\n return slideEl.className.split(' ').filter(className => {\n return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0;\n }).join(' ');\n }\n\n emitSlidesClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const updates = [];\n swiper.slides.each(slideEl => {\n const classNames = swiper.getSlideClasses(slideEl);\n updates.push({\n slideEl,\n classNames\n });\n swiper.emit('_slideClass', slideEl, classNames);\n });\n swiper.emit('_slideClasses', updates);\n }\n\n slidesPerViewDynamic(view = 'current', exact = false) {\n const swiper = this;\n const {\n params,\n slides,\n slidesGrid,\n slidesSizesGrid,\n size: swiperSize,\n activeIndex\n } = swiper;\n let spv = 1;\n\n if (params.centeredSlides) {\n let slideSize = slides[activeIndex].swiperSlideSize;\n let breakLoop;\n\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n } else {\n // eslint-disable-next-line\n if (view === 'current') {\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize;\n\n if (slideInView) {\n spv += 1;\n }\n }\n } else {\n // previous\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize;\n\n if (slideInView) {\n spv += 1;\n }\n }\n }\n }\n\n return spv;\n }\n\n update() {\n const swiper = this;\n if (!swiper || swiper.destroyed) return;\n const {\n snapGrid,\n params\n } = swiper; // Breakpoints\n\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n\n function setTranslate() {\n const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n swiper.setTranslate(newTranslate);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n let translated;\n\n if (swiper.params.freeMode && swiper.params.freeMode.enabled) {\n setTranslate();\n\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {\n translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n\n if (!translated) {\n setTranslate();\n }\n }\n\n if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n\n swiper.emit('update');\n }\n\n changeDirection(newDirection, needUpdate = true) {\n const swiper = this;\n const currentDirection = swiper.params.direction;\n\n if (!newDirection) {\n // eslint-disable-next-line\n newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n }\n\n if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') {\n return swiper;\n }\n\n swiper.$el.removeClass(`${swiper.params.containerModifierClass}${currentDirection}`).addClass(`${swiper.params.containerModifierClass}${newDirection}`);\n swiper.emitContainerClasses();\n swiper.params.direction = newDirection;\n swiper.slides.each(slideEl => {\n if (newDirection === 'vertical') {\n slideEl.style.width = '';\n } else {\n slideEl.style.height = '';\n }\n });\n swiper.emit('changeDirection');\n if (needUpdate) swiper.update();\n return swiper;\n }\n\n changeLanguageDirection(direction) {\n const swiper = this;\n if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return;\n swiper.rtl = direction === 'rtl';\n swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl;\n\n if (swiper.rtl) {\n swiper.$el.addClass(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'rtl';\n } else {\n swiper.$el.removeClass(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'ltr';\n }\n\n swiper.update();\n }\n\n mount(el) {\n const swiper = this;\n if (swiper.mounted) return true; // Find el\n\n const $el = $(el || swiper.params.el);\n el = $el[0];\n\n if (!el) {\n return false;\n }\n\n el.swiper = swiper;\n\n const getWrapperSelector = () => {\n return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`;\n };\n\n const getWrapper = () => {\n if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n const res = $(el.shadowRoot.querySelector(getWrapperSelector())); // Children needs to return slot items\n\n res.children = options => $el.children(options);\n\n return res;\n }\n\n if (!$el.children) {\n return $($el).children(getWrapperSelector());\n }\n\n return $el.children(getWrapperSelector());\n }; // Find Wrapper\n\n\n let $wrapperEl = getWrapper();\n\n if ($wrapperEl.length === 0 && swiper.params.createElements) {\n const document = getDocument();\n const wrapper = document.createElement('div');\n $wrapperEl = $(wrapper);\n wrapper.className = swiper.params.wrapperClass;\n $el.append(wrapper);\n $el.children(`.${swiper.params.slideClass}`).each(slideEl => {\n $wrapperEl.append(slideEl);\n });\n }\n\n Object.assign(swiper, {\n $el,\n el,\n $wrapperEl,\n wrapperEl: $wrapperEl[0],\n mounted: true,\n // RTL\n rtl: el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl',\n rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),\n wrongRTL: $wrapperEl.css('display') === '-webkit-box'\n });\n return true;\n }\n\n init(el) {\n const swiper = this;\n if (swiper.initialized) return swiper;\n const mounted = swiper.mount(el);\n if (mounted === false) return swiper;\n swiper.emit('beforeInit'); // Set breakpoint\n\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n } // Add Classes\n\n\n swiper.addClasses(); // Create loop\n\n if (swiper.params.loop) {\n swiper.loopCreate();\n } // Update size\n\n\n swiper.updateSize(); // Update slides\n\n swiper.updateSlides();\n\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n } // Set Grab Cursor\n\n\n if (swiper.params.grabCursor && swiper.enabled) {\n swiper.setGrabCursor();\n }\n\n if (swiper.params.preloadImages) {\n swiper.preloadImages();\n } // Slide To Initial Slide\n\n\n if (swiper.params.loop) {\n swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit, false, true);\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);\n } // Attach events\n\n\n swiper.attachEvents(); // Init Flag\n\n swiper.initialized = true; // Emit\n\n swiper.emit('init');\n swiper.emit('afterInit');\n return swiper;\n }\n\n destroy(deleteInstance = true, cleanStyles = true) {\n const swiper = this;\n const {\n params,\n $el,\n $wrapperEl,\n slides\n } = swiper;\n\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n\n swiper.emit('beforeDestroy'); // Init Flag\n\n swiper.initialized = false; // Detach events\n\n swiper.detachEvents(); // Destroy loop\n\n if (params.loop) {\n swiper.loopDestroy();\n } // Cleanup styles\n\n\n if (cleanStyles) {\n swiper.removeClasses();\n $el.removeAttr('style');\n $wrapperEl.removeAttr('style');\n\n if (slides && slides.length) {\n slides.removeClass([params.slideVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass].join(' ')).removeAttr('style').removeAttr('data-swiper-slide-index');\n }\n }\n\n swiper.emit('destroy'); // Detach emitter events\n\n Object.keys(swiper.eventsListeners).forEach(eventName => {\n swiper.off(eventName);\n });\n\n if (deleteInstance !== false) {\n swiper.$el[0].swiper = null;\n deleteProps(swiper);\n }\n\n swiper.destroyed = true;\n return null;\n }\n\n static extendDefaults(newDefaults) {\n extend(extendedDefaults, newDefaults);\n }\n\n static get extendedDefaults() {\n return extendedDefaults;\n }\n\n static get defaults() {\n return defaults;\n }\n\n static installModule(mod) {\n if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];\n const modules = Swiper.prototype.__modules__;\n\n if (typeof mod === 'function' && modules.indexOf(mod) < 0) {\n modules.push(mod);\n }\n }\n\n static use(module) {\n if (Array.isArray(module)) {\n module.forEach(m => Swiper.installModule(m));\n return Swiper;\n }\n\n Swiper.installModule(module);\n return Swiper;\n }\n\n}\n\nObject.keys(prototypes).forEach(prototypeGroup => {\n Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => {\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n });\n});\nSwiper.use([Resize, Observer]);\nexport default Swiper;","/* eslint-disable no-underscore-dangle */\nexport default {\n on(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n events.split(' ').forEach(event => {\n if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n self.eventsListeners[event][method](handler);\n });\n return self;\n },\n\n once(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n\n function onceHandler(...args) {\n self.off(events, onceHandler);\n\n if (onceHandler.__emitterProxy) {\n delete onceHandler.__emitterProxy;\n }\n\n handler.apply(self, args);\n }\n\n onceHandler.__emitterProxy = handler;\n return self.on(events, onceHandler, priority);\n },\n\n onAny(handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n\n if (self.eventsAnyListeners.indexOf(handler) < 0) {\n self.eventsAnyListeners[method](handler);\n }\n\n return self;\n },\n\n offAny(handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsAnyListeners) return self;\n const index = self.eventsAnyListeners.indexOf(handler);\n\n if (index >= 0) {\n self.eventsAnyListeners.splice(index, 1);\n }\n\n return self;\n },\n\n off(events, handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n events.split(' ').forEach(event => {\n if (typeof handler === 'undefined') {\n self.eventsListeners[event] = [];\n } else if (self.eventsListeners[event]) {\n self.eventsListeners[event].forEach((eventHandler, index) => {\n if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) {\n self.eventsListeners[event].splice(index, 1);\n }\n });\n }\n });\n return self;\n },\n\n emit(...args) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n let events;\n let data;\n let context;\n\n if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n events = args[0];\n data = args.slice(1, args.length);\n context = self;\n } else {\n events = args[0].events;\n data = args[0].data;\n context = args[0].context || self;\n }\n\n data.unshift(context);\n const eventsArray = Array.isArray(events) ? events : events.split(' ');\n eventsArray.forEach(event => {\n if (self.eventsAnyListeners && self.eventsAnyListeners.length) {\n self.eventsAnyListeners.forEach(eventHandler => {\n eventHandler.apply(context, [event, ...data]);\n });\n }\n\n if (self.eventsListeners && self.eventsListeners[event]) {\n self.eventsListeners[event].forEach(eventHandler => {\n eventHandler.apply(context, data);\n });\n }\n });\n return self;\n }\n\n};","import updateSize from './updateSize.js';\nimport updateSlides from './updateSlides.js';\nimport updateAutoHeight from './updateAutoHeight.js';\nimport updateSlidesOffset from './updateSlidesOffset.js';\nimport updateSlidesProgress from './updateSlidesProgress.js';\nimport updateProgress from './updateProgress.js';\nimport updateSlidesClasses from './updateSlidesClasses.js';\nimport updateActiveIndex from './updateActiveIndex.js';\nimport updateClickedSlide from './updateClickedSlide.js';\nexport default {\n updateSize,\n updateSlides,\n updateAutoHeight,\n updateSlidesOffset,\n updateSlidesProgress,\n updateProgress,\n updateSlidesClasses,\n updateActiveIndex,\n updateClickedSlide\n};","export default function updateSize() {\n const swiper = this;\n let width;\n let height;\n const $el = swiper.$el;\n\n if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {\n width = swiper.params.width;\n } else {\n width = $el[0].clientWidth;\n }\n\n if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {\n height = swiper.params.height;\n } else {\n height = $el[0].clientHeight;\n }\n\n if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {\n return;\n } // Subtract paddings\n\n\n width = width - parseInt($el.css('padding-left') || 0, 10) - parseInt($el.css('padding-right') || 0, 10);\n height = height - parseInt($el.css('padding-top') || 0, 10) - parseInt($el.css('padding-bottom') || 0, 10);\n if (Number.isNaN(width)) width = 0;\n if (Number.isNaN(height)) height = 0;\n Object.assign(swiper, {\n width,\n height,\n size: swiper.isHorizontal() ? width : height\n });\n}","import { setCSSProperty } from '../../shared/utils.js';\nexport default function updateSlides() {\n const swiper = this;\n\n function getDirectionLabel(property) {\n if (swiper.isHorizontal()) {\n return property;\n } // prettier-ignore\n\n\n return {\n 'width': 'height',\n 'margin-top': 'margin-left',\n 'margin-bottom ': 'margin-right',\n 'margin-left': 'margin-top',\n 'margin-right': 'margin-bottom',\n 'padding-left': 'padding-top',\n 'padding-right': 'padding-bottom',\n 'marginRight': 'marginBottom'\n }[property];\n }\n\n function getDirectionPropertyValue(node, label) {\n return parseFloat(node.getPropertyValue(getDirectionLabel(label)) || 0);\n }\n\n const params = swiper.params;\n const {\n $wrapperEl,\n size: swiperSize,\n rtlTranslate: rtl,\n wrongRTL\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n const slides = $wrapperEl.children(`.${swiper.params.slideClass}`);\n const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n let snapGrid = [];\n const slidesGrid = [];\n const slidesSizesGrid = [];\n let offsetBefore = params.slidesOffsetBefore;\n\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n\n let offsetAfter = params.slidesOffsetAfter;\n\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\n\n const previousSnapGridLength = swiper.snapGrid.length;\n const previousSlidesGridLength = swiper.slidesGrid.length;\n let spaceBetween = params.spaceBetween;\n let slidePosition = -offsetBefore;\n let prevSlideSize = 0;\n let index = 0;\n\n if (typeof swiperSize === 'undefined') {\n return;\n }\n\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;\n }\n\n swiper.virtualSize = -spaceBetween; // reset margins\n\n if (rtl) slides.css({\n marginLeft: '',\n marginBottom: '',\n marginTop: ''\n });else slides.css({\n marginRight: '',\n marginBottom: '',\n marginTop: ''\n }); // reset cssMode offsets\n\n if (params.centeredSlides && params.cssMode) {\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-before', '');\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-after', '');\n }\n\n const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;\n\n if (gridEnabled) {\n swiper.grid.initSlides(slidesLength);\n } // Calc slides\n\n\n let slideSize;\n const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => {\n return typeof params.breakpoints[key].slidesPerView !== 'undefined';\n }).length > 0;\n\n for (let i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n const slide = slides.eq(i);\n\n if (gridEnabled) {\n swiper.grid.updateSlide(i, slide, slidesLength, getDirectionLabel);\n }\n\n if (slide.css('display') === 'none') continue; // eslint-disable-line\n\n if (params.slidesPerView === 'auto') {\n if (shouldResetSlideSize) {\n slides[i].style[getDirectionLabel('width')] = ``;\n }\n\n const slideStyles = getComputedStyle(slide[0]);\n const currentTransform = slide[0].style.transform;\n const currentWebKitTransform = slide[0].style.webkitTransform;\n\n if (currentTransform) {\n slide[0].style.transform = 'none';\n }\n\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = 'none';\n }\n\n if (params.roundLengths) {\n slideSize = swiper.isHorizontal() ? slide.outerWidth(true) : slide.outerHeight(true);\n } else {\n // eslint-disable-next-line\n const width = getDirectionPropertyValue(slideStyles, 'width');\n const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');\n const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');\n const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');\n const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');\n const boxSizing = slideStyles.getPropertyValue('box-sizing');\n\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = width + marginLeft + marginRight;\n } else {\n const {\n clientWidth,\n offsetWidth\n } = slide[0];\n slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);\n }\n }\n\n if (currentTransform) {\n slide[0].style.transform = currentTransform;\n }\n\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = currentWebKitTransform;\n }\n\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n } else {\n slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n\n if (slides[i]) {\n slides[i].style[getDirectionLabel('width')] = `${slideSize}px`;\n }\n }\n\n if (slides[i]) {\n slides[i].swiperSlideSize = slideSize;\n }\n\n slidesSizesGrid.push(slideSize);\n\n if (params.centeredSlides) {\n slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;\n if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n } else {\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n slidePosition = slidePosition + slideSize + spaceBetween;\n }\n\n swiper.virtualSize += slideSize + spaceBetween;\n prevSlideSize = slideSize;\n index += 1;\n }\n\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n\n if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n $wrapperEl.css({\n width: `${swiper.virtualSize + params.spaceBetween}px`\n });\n }\n\n if (params.setWrapperSize) {\n $wrapperEl.css({\n [getDirectionLabel('width')]: `${swiper.virtualSize + params.spaceBetween}px`\n });\n }\n\n if (gridEnabled) {\n swiper.grid.updateWrapperSize(slideSize, snapGrid, getDirectionLabel);\n } // Remove last grid elements depending on width\n\n\n if (!params.centeredSlides) {\n const newSlidesGrid = [];\n\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n\n if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(slidesGridItem);\n }\n }\n\n snapGrid = newSlidesGrid;\n\n if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n\n if (snapGrid.length === 0) snapGrid = [0];\n\n if (params.spaceBetween !== 0) {\n const key = swiper.isHorizontal() && rtl ? 'marginLeft' : getDirectionLabel('marginRight');\n slides.filter((_, slideIndex) => {\n if (!params.cssMode) return true;\n\n if (slideIndex === slides.length - 1) {\n return false;\n }\n\n return true;\n }).css({\n [key]: `${spaceBetween}px`\n });\n }\n\n if (params.centeredSlides && params.centeredSlidesBounds) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n const maxSnap = allSlidesSize - swiperSize;\n snapGrid = snapGrid.map(snap => {\n if (snap < 0) return -offsetBefore;\n if (snap > maxSnap) return maxSnap + offsetAfter;\n return snap;\n });\n }\n\n if (params.centerInsufficientSlides) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n\n if (allSlidesSize < swiperSize) {\n const allSlidesOffset = (swiperSize - allSlidesSize) / 2;\n snapGrid.forEach((snap, snapIndex) => {\n snapGrid[snapIndex] = snap - allSlidesOffset;\n });\n slidesGrid.forEach((snap, snapIndex) => {\n slidesGrid[snapIndex] = snap + allSlidesOffset;\n });\n }\n }\n\n Object.assign(swiper, {\n slides,\n snapGrid,\n slidesGrid,\n slidesSizesGrid\n });\n\n if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`);\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`);\n const addToSnapGrid = -swiper.snapGrid[0];\n const addToSlidesGrid = -swiper.slidesGrid[0];\n swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid);\n swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid);\n }\n\n if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) swiper.checkOverflow();\n swiper.emit('snapGridLengthChange');\n }\n\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n\n if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) {\n const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`;\n const hasClassBackfaceClassAdded = swiper.$el.hasClass(backFaceHiddenClass);\n\n if (slidesLength <= params.maxBackfaceHiddenSlides) {\n if (!hasClassBackfaceClassAdded) swiper.$el.addClass(backFaceHiddenClass);\n } else if (hasClassBackfaceClassAdded) {\n swiper.$el.removeClass(backFaceHiddenClass);\n }\n }\n}","import $ from '../../shared/dom.js';\nexport default function updateAutoHeight(speed) {\n const swiper = this;\n const activeSlides = [];\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let newHeight = 0;\n let i;\n\n if (typeof speed === 'number') {\n swiper.setTransition(speed);\n } else if (speed === true) {\n swiper.setTransition(swiper.params.speed);\n }\n\n const getSlideByIndex = index => {\n if (isVirtual) {\n return swiper.slides.filter(el => parseInt(el.getAttribute('data-swiper-slide-index'), 10) === index)[0];\n }\n\n return swiper.slides.eq(index)[0];\n }; // Find slides currently in view\n\n\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n if (swiper.params.centeredSlides) {\n (swiper.visibleSlides || $([])).each(slide => {\n activeSlides.push(slide);\n });\n } else {\n for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n const index = swiper.activeIndex + i;\n if (index > swiper.slides.length && !isVirtual) break;\n activeSlides.push(getSlideByIndex(index));\n }\n }\n } else {\n activeSlides.push(getSlideByIndex(swiper.activeIndex));\n } // Find new height from highest slide in view\n\n\n for (i = 0; i < activeSlides.length; i += 1) {\n if (typeof activeSlides[i] !== 'undefined') {\n const height = activeSlides[i].offsetHeight;\n newHeight = height > newHeight ? height : newHeight;\n }\n } // Update Height\n\n\n if (newHeight || newHeight === 0) swiper.$wrapperEl.css('height', `${newHeight}px`);\n}","export default function updateSlidesOffset() {\n const swiper = this;\n const slides = swiper.slides;\n\n for (let i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop;\n }\n}","import $ from '../../shared/dom.js';\nexport default function updateSlidesProgress(translate = this && this.translate || 0) {\n const swiper = this;\n const params = swiper.params;\n const {\n slides,\n rtlTranslate: rtl,\n snapGrid\n } = swiper;\n if (slides.length === 0) return;\n if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n let offsetCenter = -translate;\n if (rtl) offsetCenter = translate; // Visible Slides\n\n slides.removeClass(params.slideVisibleClass);\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n\n for (let i = 0; i < slides.length; i += 1) {\n const slide = slides[i];\n let slideOffset = slide.swiperSlideOffset;\n\n if (params.cssMode && params.centeredSlides) {\n slideOffset -= slides[0].swiperSlideOffset;\n }\n\n const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + params.spaceBetween);\n const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + params.spaceBetween);\n const slideBefore = -(offsetCenter - slideOffset);\n const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;\n\n if (isVisible) {\n swiper.visibleSlides.push(slide);\n swiper.visibleSlidesIndexes.push(i);\n slides.eq(i).addClass(params.slideVisibleClass);\n }\n\n slide.progress = rtl ? -slideProgress : slideProgress;\n slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;\n }\n\n swiper.visibleSlides = $(swiper.visibleSlides);\n}","export default function updateProgress(translate) {\n const swiper = this;\n\n if (typeof translate === 'undefined') {\n const multiplier = swiper.rtlTranslate ? -1 : 1; // eslint-disable-next-line\n\n translate = swiper && swiper.translate && swiper.translate * multiplier || 0;\n }\n\n const params = swiper.params;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n let {\n progress,\n isBeginning,\n isEnd\n } = swiper;\n const wasBeginning = isBeginning;\n const wasEnd = isEnd;\n\n if (translatesDiff === 0) {\n progress = 0;\n isBeginning = true;\n isEnd = true;\n } else {\n progress = (translate - swiper.minTranslate()) / translatesDiff;\n isBeginning = progress <= 0;\n isEnd = progress >= 1;\n }\n\n Object.assign(swiper, {\n progress,\n isBeginning,\n isEnd\n });\n if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);\n\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n\n if (wasBeginning && !isBeginning || wasEnd && !isEnd) {\n swiper.emit('fromEdge');\n }\n\n swiper.emit('progress', progress);\n}","export default function updateSlidesClasses() {\n const swiper = this;\n const {\n slides,\n params,\n $wrapperEl,\n activeIndex,\n realIndex\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n slides.removeClass(`${params.slideActiveClass} ${params.slideNextClass} ${params.slidePrevClass} ${params.slideDuplicateActiveClass} ${params.slideDuplicateNextClass} ${params.slideDuplicatePrevClass}`);\n let activeSlide;\n\n if (isVirtual) {\n activeSlide = swiper.$wrapperEl.find(`.${params.slideClass}[data-swiper-slide-index=\"${activeIndex}\"]`);\n } else {\n activeSlide = slides.eq(activeIndex);\n } // Active classes\n\n\n activeSlide.addClass(params.slideActiveClass);\n\n if (params.loop) {\n // Duplicate to all looped slides\n if (activeSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${realIndex}\"]`).addClass(params.slideDuplicateActiveClass);\n } else {\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${realIndex}\"]`).addClass(params.slideDuplicateActiveClass);\n }\n } // Next Slide\n\n\n let nextSlide = activeSlide.nextAll(`.${params.slideClass}`).eq(0).addClass(params.slideNextClass);\n\n if (params.loop && nextSlide.length === 0) {\n nextSlide = slides.eq(0);\n nextSlide.addClass(params.slideNextClass);\n } // Prev Slide\n\n\n let prevSlide = activeSlide.prevAll(`.${params.slideClass}`).eq(0).addClass(params.slidePrevClass);\n\n if (params.loop && prevSlide.length === 0) {\n prevSlide = slides.eq(-1);\n prevSlide.addClass(params.slidePrevClass);\n }\n\n if (params.loop) {\n // Duplicate to all looped slides\n if (nextSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicateNextClass);\n } else {\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicateNextClass);\n }\n\n if (prevSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicatePrevClass);\n } else {\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicatePrevClass);\n }\n }\n\n swiper.emitSlidesClasses();\n}","export default function updateActiveIndex(newActiveIndex) {\n const swiper = this;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n const {\n slidesGrid,\n snapGrid,\n params,\n activeIndex: previousIndex,\n realIndex: previousRealIndex,\n snapIndex: previousSnapIndex\n } = swiper;\n let activeIndex = newActiveIndex;\n let snapIndex;\n\n if (typeof activeIndex === 'undefined') {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) {\n activeIndex = i;\n } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n activeIndex = i + 1;\n }\n } else if (translate >= slidesGrid[i]) {\n activeIndex = i;\n }\n } // Normalize slideIndex\n\n\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n }\n }\n\n if (snapGrid.indexOf(translate) >= 0) {\n snapIndex = snapGrid.indexOf(translate);\n } else {\n const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n }\n\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n\n if (activeIndex === previousIndex) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n\n return;\n } // Get real index\n\n\n const realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10);\n Object.assign(swiper, {\n snapIndex,\n realIndex,\n previousIndex,\n activeIndex\n });\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n swiper.emit('slideChange');\n }\n}","import $ from '../../shared/dom.js';\nexport default function updateClickedSlide(e) {\n const swiper = this;\n const params = swiper.params;\n const slide = $(e).closest(`.${params.slideClass}`)[0];\n let slideFound = false;\n let slideIndex;\n\n if (slide) {\n for (let i = 0; i < swiper.slides.length; i += 1) {\n if (swiper.slides[i] === slide) {\n slideFound = true;\n slideIndex = i;\n break;\n }\n }\n }\n\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt($(slide).attr('data-swiper-slide-index'), 10);\n } else {\n swiper.clickedIndex = slideIndex;\n }\n } else {\n swiper.clickedSlide = undefined;\n swiper.clickedIndex = undefined;\n return;\n }\n\n if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n swiper.slideToClickedSlide();\n }\n}","import getTranslate from './getTranslate.js';\nimport setTranslate from './setTranslate.js';\nimport minTranslate from './minTranslate.js';\nimport maxTranslate from './maxTranslate.js';\nimport translateTo from './translateTo.js';\nexport default {\n getTranslate,\n setTranslate,\n minTranslate,\n maxTranslate,\n translateTo\n};","import { getTranslate } from '../../shared/utils.js';\nexport default function getSwiperTranslate(axis = this.isHorizontal() ? 'x' : 'y') {\n const swiper = this;\n const {\n params,\n rtlTranslate: rtl,\n translate,\n $wrapperEl\n } = swiper;\n\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n\n if (params.cssMode) {\n return translate;\n }\n\n let currentTranslate = getTranslate($wrapperEl[0], axis);\n if (rtl) currentTranslate = -currentTranslate;\n return currentTranslate || 0;\n}","export default function setTranslate(translate, byController) {\n const swiper = this;\n const {\n rtlTranslate: rtl,\n params,\n $wrapperEl,\n wrapperEl,\n progress\n } = swiper;\n let x = 0;\n let y = 0;\n const z = 0;\n\n if (swiper.isHorizontal()) {\n x = rtl ? -translate : translate;\n } else {\n y = translate;\n }\n\n if (params.roundLengths) {\n x = Math.floor(x);\n y = Math.floor(y);\n }\n\n if (params.cssMode) {\n wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n } else if (!params.virtualTranslate) {\n $wrapperEl.transform(`translate3d(${x}px, ${y}px, ${z}px)`);\n }\n\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y; // Check if we need to update progress\n\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / translatesDiff;\n }\n\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, byController);\n}","export default function minTranslate() {\n return -this.snapGrid[0];\n}","export default function maxTranslate() {\n return -this.snapGrid[this.snapGrid.length - 1];\n}","import { animateCSSModeScroll } from '../../shared/utils.js';\nexport default function translateTo(translate = 0, speed = this.params.speed, runCallbacks = true, translateBounds = true, internal) {\n const swiper = this;\n const {\n params,\n wrapperEl\n } = swiper;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n\n const minTranslate = swiper.minTranslate();\n const maxTranslate = swiper.maxTranslate();\n let newTranslate;\n if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate; // Update progress\n\n swiper.updateProgress(newTranslate);\n\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: -newTranslate,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: -newTranslate,\n behavior: 'smooth'\n });\n }\n\n return true;\n }\n\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(newTranslate);\n\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionEnd');\n }\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(newTranslate);\n\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionStart');\n }\n\n if (!swiper.animating) {\n swiper.animating = true;\n\n if (!swiper.onTranslateToWrapperTransitionEnd) {\n swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n swiper.onTranslateToWrapperTransitionEnd = null;\n delete swiper.onTranslateToWrapperTransitionEnd;\n\n if (runCallbacks) {\n swiper.emit('transitionEnd');\n }\n };\n }\n\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n }\n }\n\n return true;\n}","import setTransition from './setTransition.js';\nimport transitionStart from './transitionStart.js';\nimport transitionEnd from './transitionEnd.js';\nexport default {\n setTransition,\n transitionStart,\n transitionEnd\n};","export default function setTransition(duration, byController) {\n const swiper = this;\n\n if (!swiper.params.cssMode) {\n swiper.$wrapperEl.transition(duration);\n }\n\n swiper.emit('setTransition', duration, byController);\n}","import transitionEmit from './transitionEmit.js';\nexport default function transitionStart(runCallbacks = true, direction) {\n const swiper = this;\n const {\n params\n } = swiper;\n if (params.cssMode) return;\n\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'Start'\n });\n}","import transitionEmit from './transitionEmit.js';\nexport default function transitionEnd(runCallbacks = true, direction) {\n const swiper = this;\n const {\n params\n } = swiper;\n swiper.animating = false;\n if (params.cssMode) return;\n swiper.setTransition(0);\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'End'\n });\n}","import slideTo from './slideTo.js';\nimport slideToLoop from './slideToLoop.js';\nimport slideNext from './slideNext.js';\nimport slidePrev from './slidePrev.js';\nimport slideReset from './slideReset.js';\nimport slideToClosest from './slideToClosest.js';\nimport slideToClickedSlide from './slideToClickedSlide.js';\nexport default {\n slideTo,\n slideToLoop,\n slideNext,\n slidePrev,\n slideReset,\n slideToClosest,\n slideToClickedSlide\n};","import { animateCSSModeScroll } from '../../shared/utils.js';\nexport default function slideTo(index = 0, speed = this.params.speed, runCallbacks = true, internal, initial) {\n if (typeof index !== 'number' && typeof index !== 'string') {\n throw new Error(`The 'index' argument cannot have type other than 'number' or 'string'. [${typeof index}] given.`);\n }\n\n if (typeof index === 'string') {\n /**\n * The `index` argument converted from `string` to `number`.\n * @type {number}\n */\n const indexAsNumber = parseInt(index, 10);\n /**\n * Determines whether the `index` argument is a valid `number`\n * after being converted from the `string` type.\n * @type {boolean}\n */\n\n const isValidNumber = isFinite(indexAsNumber);\n\n if (!isValidNumber) {\n throw new Error(`The passed-in 'index' (string) couldn't be converted to 'number'. [${index}] given.`);\n } // Knowing that the converted `index` is a valid number,\n // we can update the original argument's value.\n\n\n index = indexAsNumber;\n }\n\n const swiper = this;\n let slideIndex = index;\n if (slideIndex < 0) slideIndex = 0;\n const {\n params,\n snapGrid,\n slidesGrid,\n previousIndex,\n activeIndex,\n rtlTranslate: rtl,\n wrapperEl,\n enabled\n } = swiper;\n\n if (swiper.animating && params.preventInteractionOnTransition || !enabled && !internal && !initial) {\n return false;\n }\n\n const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n const translate = -snapGrid[snapIndex]; // Normalize slideIndex\n\n if (params.normalizeSlideIndex) {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n const normalizedTranslate = -Math.floor(translate * 100);\n const normalizedGrid = Math.floor(slidesGrid[i] * 100);\n const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);\n\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) {\n slideIndex = i;\n } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) {\n slideIndex = i + 1;\n }\n } else if (normalizedTranslate >= normalizedGrid) {\n slideIndex = i;\n }\n }\n } // Directions locks\n\n\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (!swiper.allowSlideNext && translate < swiper.translate && translate < swiper.minTranslate()) {\n return false;\n }\n\n if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n if ((activeIndex || 0) !== slideIndex) return false;\n }\n }\n\n if (slideIndex !== (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n } // Update progress\n\n\n swiper.updateProgress(translate);\n let direction;\n if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset'; // Update Index\n\n if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) {\n swiper.updateActiveIndex(slideIndex); // Update Height\n\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\n swiper.updateSlidesClasses();\n\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n\n return false;\n }\n\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n const t = rtl ? translate : -translate;\n\n if (speed === 0) {\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n if (isVirtual) {\n swiper.wrapperEl.style.scrollSnapType = 'none';\n swiper._immediateVirtual = true;\n }\n\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n\n if (isVirtual) {\n requestAnimationFrame(() => {\n swiper.wrapperEl.style.scrollSnapType = '';\n swiper._swiperImmediateVirtual = false;\n });\n }\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: t,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: t,\n behavior: 'smooth'\n });\n }\n\n return true;\n }\n\n swiper.setTransition(speed);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n\n if (speed === 0) {\n swiper.transitionEnd(runCallbacks, direction);\n } else if (!swiper.animating) {\n swiper.animating = true;\n\n if (!swiper.onSlideToWrapperTransitionEnd) {\n swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n swiper.onSlideToWrapperTransitionEnd = null;\n delete swiper.onSlideToWrapperTransitionEnd;\n swiper.transitionEnd(runCallbacks, direction);\n };\n }\n\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n }\n\n return true;\n}","export default function slideToLoop(index = 0, speed = this.params.speed, runCallbacks = true, internal) {\n if (typeof index === 'string') {\n /**\n * The `index` argument converted from `string` to `number`.\n * @type {number}\n */\n const indexAsNumber = parseInt(index, 10);\n /**\n * Determines whether the `index` argument is a valid `number`\n * after being converted from the `string` type.\n * @type {boolean}\n */\n\n const isValidNumber = isFinite(indexAsNumber);\n\n if (!isValidNumber) {\n throw new Error(`The passed-in 'index' (string) couldn't be converted to 'number'. [${index}] given.`);\n } // Knowing that the converted `index` is a valid number,\n // we can update the original argument's value.\n\n\n index = indexAsNumber;\n }\n\n const swiper = this;\n let newIndex = index;\n\n if (swiper.params.loop) {\n newIndex += swiper.loopedSlides;\n }\n\n return swiper.slideTo(newIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideNext(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n const {\n animating,\n enabled,\n params\n } = swiper;\n if (!enabled) return swiper;\n let perGroup = params.slidesPerGroup;\n\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1);\n }\n\n const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;\n\n if (params.loop) {\n if (animating && params.loopPreventsSlide) return false;\n swiper.loopFix(); // eslint-disable-next-line\n\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n\n if (params.rewind && swiper.isEnd) {\n return swiper.slideTo(0, speed, runCallbacks, internal);\n }\n\n return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slidePrev(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n const {\n params,\n animating,\n snapGrid,\n slidesGrid,\n rtlTranslate,\n enabled\n } = swiper;\n if (!enabled) return swiper;\n\n if (params.loop) {\n if (animating && params.loopPreventsSlide) return false;\n swiper.loopFix(); // eslint-disable-next-line\n\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n\n const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n\n function normalize(val) {\n if (val < 0) return -Math.floor(Math.abs(val));\n return Math.floor(val);\n }\n\n const normalizedTranslate = normalize(translate);\n const normalizedSnapGrid = snapGrid.map(val => normalize(val));\n let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n\n if (typeof prevSnap === 'undefined' && params.cssMode) {\n let prevSnapIndex;\n snapGrid.forEach((snap, snapIndex) => {\n if (normalizedTranslate >= snap) {\n // prevSnap = snap;\n prevSnapIndex = snapIndex;\n }\n });\n\n if (typeof prevSnapIndex !== 'undefined') {\n prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];\n }\n }\n\n let prevIndex = 0;\n\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1;\n prevIndex = Math.max(prevIndex, 0);\n }\n }\n\n if (params.rewind && swiper.isBeginning) {\n const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n return swiper.slideTo(lastIndex, speed, runCallbacks, internal);\n }\n\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideReset(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideToClosest(speed = this.params.speed, runCallbacks = true, internal, threshold = 0.5) {\n const swiper = this;\n let index = swiper.activeIndex;\n const skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n\n if (translate >= swiper.snapGrid[snapIndex]) {\n // The current translate is on or after the current snap index, so the choice\n // is between the current index and the one after it.\n const currentSnap = swiper.snapGrid[snapIndex];\n const nextSnap = swiper.snapGrid[snapIndex + 1];\n\n if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {\n index += swiper.params.slidesPerGroup;\n }\n } else {\n // The current translate is before the current snap index, so the choice\n // is between the current index and the one before it.\n const prevSnap = swiper.snapGrid[snapIndex - 1];\n const currentSnap = swiper.snapGrid[snapIndex];\n\n if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) {\n index -= swiper.params.slidesPerGroup;\n }\n }\n\n index = Math.max(index, 0);\n index = Math.min(index, swiper.slidesGrid.length - 1);\n return swiper.slideTo(index, speed, runCallbacks, internal);\n}","import $ from '../../shared/dom.js';\nimport { nextTick } from '../../shared/utils.js';\nexport default function slideToClickedSlide() {\n const swiper = this;\n const {\n params,\n $wrapperEl\n } = swiper;\n const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n let slideToIndex = swiper.clickedIndex;\n let realIndex;\n\n if (params.loop) {\n if (swiper.animating) return;\n realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n\n if (params.centeredSlides) {\n if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {\n swiper.loopFix();\n slideToIndex = $wrapperEl.children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`).eq(0).index();\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n swiper.loopFix();\n slideToIndex = $wrapperEl.children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`).eq(0).index();\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else {\n swiper.slideTo(slideToIndex);\n }\n}","import loopCreate from './loopCreate.js';\nimport loopFix from './loopFix.js';\nimport loopDestroy from './loopDestroy.js';\nexport default {\n loopCreate,\n loopFix,\n loopDestroy\n};","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function loopCreate() {\n const swiper = this;\n const document = getDocument();\n const {\n params,\n $wrapperEl\n } = swiper; // Remove duplicated slides\n\n const $selector = $wrapperEl.children().length > 0 ? $($wrapperEl.children()[0].parentNode) : $wrapperEl;\n $selector.children(`.${params.slideClass}.${params.slideDuplicateClass}`).remove();\n let slides = $selector.children(`.${params.slideClass}`);\n\n if (params.loopFillGroupWithBlank) {\n const blankSlidesNum = params.slidesPerGroup - slides.length % params.slidesPerGroup;\n\n if (blankSlidesNum !== params.slidesPerGroup) {\n for (let i = 0; i < blankSlidesNum; i += 1) {\n const blankNode = $(document.createElement('div')).addClass(`${params.slideClass} ${params.slideBlankClass}`);\n $selector.append(blankNode);\n }\n\n slides = $selector.children(`.${params.slideClass}`);\n }\n }\n\n if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length;\n swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10));\n swiper.loopedSlides += params.loopAdditionalSlides;\n\n if (swiper.loopedSlides > slides.length && swiper.params.loopedSlidesLimit) {\n swiper.loopedSlides = slides.length;\n }\n\n const prependSlides = [];\n const appendSlides = [];\n slides.each((el, index) => {\n const slide = $(el);\n slide.attr('data-swiper-slide-index', index);\n });\n\n for (let i = 0; i < swiper.loopedSlides; i += 1) {\n const index = i - Math.floor(i / slides.length) * slides.length;\n appendSlides.push(slides.eq(index)[0]);\n prependSlides.unshift(slides.eq(slides.length - index - 1)[0]);\n }\n\n for (let i = 0; i < appendSlides.length; i += 1) {\n $selector.append($(appendSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n\n for (let i = prependSlides.length - 1; i >= 0; i -= 1) {\n $selector.prepend($(prependSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n}","export default function loopFix() {\n const swiper = this;\n swiper.emit('beforeLoopFix');\n const {\n activeIndex,\n slides,\n loopedSlides,\n allowSlidePrev,\n allowSlideNext,\n snapGrid,\n rtlTranslate: rtl\n } = swiper;\n let newIndex;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n const snapTranslate = -snapGrid[activeIndex];\n const diff = snapTranslate - swiper.getTranslate(); // Fix For Negative Oversliding\n\n if (activeIndex < loopedSlides) {\n newIndex = slides.length - loopedSlides * 3 + activeIndex;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n } else if (activeIndex >= slides.length - loopedSlides) {\n // Fix For Positive Oversliding\n newIndex = -slides.length + activeIndex + loopedSlides;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n }\n\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n swiper.emit('loopFix');\n}","export default function loopDestroy() {\n const swiper = this;\n const {\n $wrapperEl,\n params,\n slides\n } = swiper;\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass},.${params.slideClass}.${params.slideBlankClass}`).remove();\n slides.removeAttr('data-swiper-slide-index');\n}","import setGrabCursor from './setGrabCursor.js';\nimport unsetGrabCursor from './unsetGrabCursor.js';\nexport default {\n setGrabCursor,\n unsetGrabCursor\n};","export default function setGrabCursor(moving) {\n const swiper = this;\n if (swiper.support.touch || !swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;\n const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl;\n el.style.cursor = 'move';\n el.style.cursor = moving ? 'grabbing' : 'grab';\n}","export default function unsetGrabCursor() {\n const swiper = this;\n\n if (swiper.support.touch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {\n return;\n }\n\n swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = '';\n}","import setBreakpoint from './setBreakpoint.js';\nimport getBreakpoint from './getBreakpoint.js';\nexport default {\n setBreakpoint,\n getBreakpoint\n};","import { getWindow } from 'ssr-window';\nexport default function getBreakpoint(breakpoints, base = 'window', containerEl) {\n if (!breakpoints || base === 'container' && !containerEl) return undefined;\n let breakpoint = false;\n const window = getWindow();\n const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;\n const points = Object.keys(breakpoints).map(point => {\n if (typeof point === 'string' && point.indexOf('@') === 0) {\n const minRatio = parseFloat(point.substr(1));\n const value = currentHeight * minRatio;\n return {\n value,\n point\n };\n }\n\n return {\n value: point,\n point\n };\n });\n points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n\n for (let i = 0; i < points.length; i += 1) {\n const {\n point,\n value\n } = points[i];\n\n if (base === 'window') {\n if (window.matchMedia(`(min-width: ${value}px)`).matches) {\n breakpoint = point;\n }\n } else if (value <= containerEl.clientWidth) {\n breakpoint = point;\n }\n }\n\n return breakpoint || 'max';\n}","import addClasses from './addClasses.js';\nimport removeClasses from './removeClasses.js';\nexport default {\n addClasses,\n removeClasses\n};","function prepareClasses(entries, prefix) {\n const resultClasses = [];\n entries.forEach(item => {\n if (typeof item === 'object') {\n Object.keys(item).forEach(classNames => {\n if (item[classNames]) {\n resultClasses.push(prefix + classNames);\n }\n });\n } else if (typeof item === 'string') {\n resultClasses.push(prefix + item);\n }\n });\n return resultClasses;\n}\n\nexport default function addClasses() {\n const swiper = this;\n const {\n classNames,\n params,\n rtl,\n $el,\n device,\n support\n } = swiper; // prettier-ignore\n\n const suffixes = prepareClasses(['initialized', params.direction, {\n 'pointer-events': !support.touch\n }, {\n 'free-mode': swiper.params.freeMode && params.freeMode.enabled\n }, {\n 'autoheight': params.autoHeight\n }, {\n 'rtl': rtl\n }, {\n 'grid': params.grid && params.grid.rows > 1\n }, {\n 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column'\n }, {\n 'android': device.android\n }, {\n 'ios': device.ios\n }, {\n 'css-mode': params.cssMode\n }, {\n 'centered': params.cssMode && params.centeredSlides\n }, {\n 'watch-progress': params.watchSlidesProgress\n }], params.containerModifierClass);\n classNames.push(...suffixes);\n $el.addClass([...classNames].join(' '));\n swiper.emitContainerClasses();\n}","export default function removeClasses() {\n const swiper = this;\n const {\n $el,\n classNames\n } = swiper;\n $el.removeClass(classNames.join(' '));\n swiper.emitContainerClasses();\n}","import loadImage from './loadImage.js';\nimport preloadImages from './preloadImages.js';\nexport default {\n loadImage,\n preloadImages\n};","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function loadImage(imageEl, src, srcset, sizes, checkForComplete, callback) {\n const window = getWindow();\n let image;\n\n function onReady() {\n if (callback) callback();\n }\n\n const isPicture = $(imageEl).parent('picture')[0];\n\n if (!isPicture && (!imageEl.complete || !checkForComplete)) {\n if (src) {\n image = new window.Image();\n image.onload = onReady;\n image.onerror = onReady;\n\n if (sizes) {\n image.sizes = sizes;\n }\n\n if (srcset) {\n image.srcset = srcset;\n }\n\n if (src) {\n image.src = src;\n }\n } else {\n onReady();\n }\n } else {\n // image already loaded...\n onReady();\n }\n}","export default function preloadImages() {\n const swiper = this;\n swiper.imagesToLoad = swiper.$el.find('img');\n\n function onReady() {\n if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return;\n if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1;\n\n if (swiper.imagesLoaded === swiper.imagesToLoad.length) {\n if (swiper.params.updateOnImagesReady) swiper.update();\n swiper.emit('imagesReady');\n }\n }\n\n for (let i = 0; i < swiper.imagesToLoad.length; i += 1) {\n const imageEl = swiper.imagesToLoad[i];\n swiper.loadImage(imageEl, imageEl.currentSrc || imageEl.getAttribute('src'), imageEl.srcset || imageEl.getAttribute('srcset'), imageEl.sizes || imageEl.getAttribute('sizes'), true, onReady);\n }\n}","import { getWindow } from 'ssr-window';\nexport default function Resize({\n swiper,\n on,\n emit\n}) {\n const window = getWindow();\n let observer = null;\n let animationFrame = null;\n\n const resizeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('beforeResize');\n emit('resize');\n };\n\n const createObserver = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n observer = new ResizeObserver(entries => {\n animationFrame = window.requestAnimationFrame(() => {\n const {\n width,\n height\n } = swiper;\n let newWidth = width;\n let newHeight = height;\n entries.forEach(({\n contentBoxSize,\n contentRect,\n target\n }) => {\n if (target && target !== swiper.el) return;\n newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize;\n newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize;\n });\n\n if (newWidth !== width || newHeight !== height) {\n resizeHandler();\n }\n });\n });\n observer.observe(swiper.el);\n };\n\n const removeObserver = () => {\n if (animationFrame) {\n window.cancelAnimationFrame(animationFrame);\n }\n\n if (observer && observer.unobserve && swiper.el) {\n observer.unobserve(swiper.el);\n observer = null;\n }\n };\n\n const orientationChangeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('orientationchange');\n };\n\n on('init', () => {\n if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') {\n createObserver();\n return;\n }\n\n window.addEventListener('resize', resizeHandler);\n window.addEventListener('orientationchange', orientationChangeHandler);\n });\n on('destroy', () => {\n removeObserver();\n window.removeEventListener('resize', resizeHandler);\n window.removeEventListener('orientationchange', orientationChangeHandler);\n });\n}","import { getWindow } from 'ssr-window';\nexport default function Observer({\n swiper,\n extendParams,\n on,\n emit\n}) {\n const observers = [];\n const window = getWindow();\n\n const attach = (target, options = {}) => {\n const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;\n const observer = new ObserverFunc(mutations => {\n // The observerUpdate event should only be triggered\n // once despite the number of mutations. Additional\n // triggers are redundant and are very costly\n if (mutations.length === 1) {\n emit('observerUpdate', mutations[0]);\n return;\n }\n\n const observerUpdate = function observerUpdate() {\n emit('observerUpdate', mutations[0]);\n };\n\n if (window.requestAnimationFrame) {\n window.requestAnimationFrame(observerUpdate);\n } else {\n window.setTimeout(observerUpdate, 0);\n }\n });\n observer.observe(target, {\n attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n childList: typeof options.childList === 'undefined' ? true : options.childList,\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData\n });\n observers.push(observer);\n };\n\n const init = () => {\n if (!swiper.params.observer) return;\n\n if (swiper.params.observeParents) {\n const containerParents = swiper.$el.parents();\n\n for (let i = 0; i < containerParents.length; i += 1) {\n attach(containerParents[i]);\n }\n } // Observe container\n\n\n attach(swiper.$el[0], {\n childList: swiper.params.observeSlideChildren\n }); // Observe wrapper\n\n attach(swiper.$wrapperEl[0], {\n attributes: false\n });\n };\n\n const destroy = () => {\n observers.forEach(observer => {\n observer.disconnect();\n });\n observers.splice(0, observers.length);\n };\n\n extendParams({\n observer: false,\n observeParents: false,\n observeSlideChildren: false\n });\n on('init', init);\n on('destroy', destroy);\n}","import { getDocument } from 'ssr-window';\nexport default function createElementIfNotDefined(swiper, originalParams, params, checkProps) {\n const document = getDocument();\n\n if (swiper.params.createElements) {\n Object.keys(checkProps).forEach(key => {\n if (!params[key] && params.auto === true) {\n let element = swiper.$el.children(`.${checkProps[key]}`)[0];\n\n if (!element) {\n element = document.createElement('div');\n element.className = checkProps[key];\n swiper.$el.append(element);\n }\n\n params[key] = element;\n originalParams[key] = element;\n }\n });\n }\n\n return params;\n}","import createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\nimport $ from '../../shared/dom.js';\nexport default function Navigation({\n swiper,\n extendParams,\n on,\n emit\n}) {\n extendParams({\n navigation: {\n nextEl: null,\n prevEl: null,\n hideOnClick: false,\n disabledClass: 'swiper-button-disabled',\n hiddenClass: 'swiper-button-hidden',\n lockClass: 'swiper-button-lock',\n navigationDisabledClass: 'swiper-navigation-disabled'\n }\n });\n swiper.navigation = {\n nextEl: null,\n $nextEl: null,\n prevEl: null,\n $prevEl: null\n };\n\n function getEl(el) {\n let $el;\n\n if (el) {\n $el = $(el);\n\n if (swiper.params.uniqueNavElements && typeof el === 'string' && $el.length > 1 && swiper.$el.find(el).length === 1) {\n $el = swiper.$el.find(el);\n }\n }\n\n return $el;\n }\n\n function toggleEl($el, disabled) {\n const params = swiper.params.navigation;\n\n if ($el && $el.length > 0) {\n $el[disabled ? 'addClass' : 'removeClass'](params.disabledClass);\n if ($el[0] && $el[0].tagName === 'BUTTON') $el[0].disabled = disabled;\n\n if (swiper.params.watchOverflow && swiper.enabled) {\n $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n }\n }\n\n function update() {\n // Update Navigation Buttons\n if (swiper.params.loop) return;\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n toggleEl($prevEl, swiper.isBeginning && !swiper.params.rewind);\n toggleEl($nextEl, swiper.isEnd && !swiper.params.rewind);\n }\n\n function onPrevClick(e) {\n e.preventDefault();\n if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slidePrev();\n emit('navigationPrev');\n }\n\n function onNextClick(e) {\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slideNext();\n emit('navigationNext');\n }\n\n function init() {\n const params = swiper.params.navigation;\n swiper.params.navigation = createElementIfNotDefined(swiper, swiper.originalParams.navigation, swiper.params.navigation, {\n nextEl: 'swiper-button-next',\n prevEl: 'swiper-button-prev'\n });\n if (!(params.nextEl || params.prevEl)) return;\n const $nextEl = getEl(params.nextEl);\n const $prevEl = getEl(params.prevEl);\n\n if ($nextEl && $nextEl.length > 0) {\n $nextEl.on('click', onNextClick);\n }\n\n if ($prevEl && $prevEl.length > 0) {\n $prevEl.on('click', onPrevClick);\n }\n\n Object.assign(swiper.navigation, {\n $nextEl,\n nextEl: $nextEl && $nextEl[0],\n $prevEl,\n prevEl: $prevEl && $prevEl[0]\n });\n\n if (!swiper.enabled) {\n if ($nextEl) $nextEl.addClass(params.lockClass);\n if ($prevEl) $prevEl.addClass(params.lockClass);\n }\n }\n\n function destroy() {\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n\n if ($nextEl && $nextEl.length) {\n $nextEl.off('click', onNextClick);\n $nextEl.removeClass(swiper.params.navigation.disabledClass);\n }\n\n if ($prevEl && $prevEl.length) {\n $prevEl.off('click', onPrevClick);\n $prevEl.removeClass(swiper.params.navigation.disabledClass);\n }\n }\n\n on('init', () => {\n if (swiper.params.navigation.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n update();\n }\n });\n on('toEdge fromEdge lock unlock', () => {\n update();\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n\n if ($nextEl) {\n $nextEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);\n }\n\n if ($prevEl) {\n $prevEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);\n }\n });\n on('click', (_s, e) => {\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n const targetEl = e.target;\n\n if (swiper.params.navigation.hideOnClick && !$(targetEl).is($prevEl) && !$(targetEl).is($nextEl)) {\n if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return;\n let isHidden;\n\n if ($nextEl) {\n isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass);\n } else if ($prevEl) {\n isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass);\n }\n\n if (isHidden === true) {\n emit('navigationShow');\n } else {\n emit('navigationHide');\n }\n\n if ($nextEl) {\n $nextEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n\n if ($prevEl) {\n $prevEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n }\n });\n\n const enable = () => {\n swiper.$el.removeClass(swiper.params.navigation.navigationDisabledClass);\n init();\n update();\n };\n\n const disable = () => {\n swiper.$el.addClass(swiper.params.navigation.navigationDisabledClass);\n destroy();\n };\n\n Object.assign(swiper.navigation, {\n enable,\n disable,\n update,\n init,\n destroy\n });\n}","export default function classesToSelector(classes = '') {\n return `.${classes.trim().replace(/([\\.:!\\/])/g, '\\\\$1') // eslint-disable-line\n .replace(/ /g, '.')}`;\n}","import $ from '../../shared/dom.js';\nimport classesToSelector from '../../shared/classes-to-selector.js';\nimport createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\nexport default function Pagination({\n swiper,\n extendParams,\n on,\n emit\n}) {\n const pfx = 'swiper-pagination';\n extendParams({\n pagination: {\n el: null,\n bulletElement: 'span',\n clickable: false,\n hideOnClick: false,\n renderBullet: null,\n renderProgressbar: null,\n renderFraction: null,\n renderCustom: null,\n progressbarOpposite: false,\n type: 'bullets',\n // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n dynamicBullets: false,\n dynamicMainBullets: 1,\n formatFractionCurrent: number => number,\n formatFractionTotal: number => number,\n bulletClass: `${pfx}-bullet`,\n bulletActiveClass: `${pfx}-bullet-active`,\n modifierClass: `${pfx}-`,\n currentClass: `${pfx}-current`,\n totalClass: `${pfx}-total`,\n hiddenClass: `${pfx}-hidden`,\n progressbarFillClass: `${pfx}-progressbar-fill`,\n progressbarOppositeClass: `${pfx}-progressbar-opposite`,\n clickableClass: `${pfx}-clickable`,\n lockClass: `${pfx}-lock`,\n horizontalClass: `${pfx}-horizontal`,\n verticalClass: `${pfx}-vertical`,\n paginationDisabledClass: `${pfx}-disabled`\n }\n });\n swiper.pagination = {\n el: null,\n $el: null,\n bullets: []\n };\n let bulletSize;\n let dynamicBulletIndex = 0;\n\n function isPaginationDisabled() {\n return !swiper.params.pagination.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0;\n }\n\n function setSideBullets($bulletEl, position) {\n const {\n bulletActiveClass\n } = swiper.params.pagination;\n $bulletEl[position]().addClass(`${bulletActiveClass}-${position}`)[position]().addClass(`${bulletActiveClass}-${position}-${position}`);\n }\n\n function update() {\n // Render || Update Pagination bullets/items\n const rtl = swiper.rtl;\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n const $el = swiper.pagination.$el; // Current/Total\n\n let current;\n const total = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n\n if (swiper.params.loop) {\n current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup);\n\n if (current > slidesLength - 1 - swiper.loopedSlides * 2) {\n current -= slidesLength - swiper.loopedSlides * 2;\n }\n\n if (current > total - 1) current -= total;\n if (current < 0 && swiper.params.paginationType !== 'bullets') current = total + current;\n } else if (typeof swiper.snapIndex !== 'undefined') {\n current = swiper.snapIndex;\n } else {\n current = swiper.activeIndex || 0;\n } // Types\n\n\n if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {\n const bullets = swiper.pagination.bullets;\n let firstIndex;\n let lastIndex;\n let midIndex;\n\n if (params.dynamicBullets) {\n bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true);\n $el.css(swiper.isHorizontal() ? 'width' : 'height', `${bulletSize * (params.dynamicMainBullets + 4)}px`);\n\n if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) {\n dynamicBulletIndex += current - (swiper.previousIndex - swiper.loopedSlides || 0);\n\n if (dynamicBulletIndex > params.dynamicMainBullets - 1) {\n dynamicBulletIndex = params.dynamicMainBullets - 1;\n } else if (dynamicBulletIndex < 0) {\n dynamicBulletIndex = 0;\n }\n }\n\n firstIndex = Math.max(current - dynamicBulletIndex, 0);\n lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n midIndex = (lastIndex + firstIndex) / 2;\n }\n\n bullets.removeClass(['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`).join(' '));\n\n if ($el.length > 1) {\n bullets.each(bullet => {\n const $bullet = $(bullet);\n const bulletIndex = $bullet.index();\n\n if (bulletIndex === current) {\n $bullet.addClass(params.bulletActiveClass);\n }\n\n if (params.dynamicBullets) {\n if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n $bullet.addClass(`${params.bulletActiveClass}-main`);\n }\n\n if (bulletIndex === firstIndex) {\n setSideBullets($bullet, 'prev');\n }\n\n if (bulletIndex === lastIndex) {\n setSideBullets($bullet, 'next');\n }\n }\n });\n } else {\n const $bullet = bullets.eq(current);\n const bulletIndex = $bullet.index();\n $bullet.addClass(params.bulletActiveClass);\n\n if (params.dynamicBullets) {\n const $firstDisplayedBullet = bullets.eq(firstIndex);\n const $lastDisplayedBullet = bullets.eq(lastIndex);\n\n for (let i = firstIndex; i <= lastIndex; i += 1) {\n bullets.eq(i).addClass(`${params.bulletActiveClass}-main`);\n }\n\n if (swiper.params.loop) {\n if (bulletIndex >= bullets.length) {\n for (let i = params.dynamicMainBullets; i >= 0; i -= 1) {\n bullets.eq(bullets.length - i).addClass(`${params.bulletActiveClass}-main`);\n }\n\n bullets.eq(bullets.length - params.dynamicMainBullets - 1).addClass(`${params.bulletActiveClass}-prev`);\n } else {\n setSideBullets($firstDisplayedBullet, 'prev');\n setSideBullets($lastDisplayedBullet, 'next');\n }\n } else {\n setSideBullets($firstDisplayedBullet, 'prev');\n setSideBullets($lastDisplayedBullet, 'next');\n }\n }\n }\n\n if (params.dynamicBullets) {\n const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize;\n const offsetProp = rtl ? 'right' : 'left';\n bullets.css(swiper.isHorizontal() ? offsetProp : 'top', `${bulletsOffset}px`);\n }\n }\n\n if (params.type === 'fraction') {\n $el.find(classesToSelector(params.currentClass)).text(params.formatFractionCurrent(current + 1));\n $el.find(classesToSelector(params.totalClass)).text(params.formatFractionTotal(total));\n }\n\n if (params.type === 'progressbar') {\n let progressbarDirection;\n\n if (params.progressbarOpposite) {\n progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n } else {\n progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n }\n\n const scale = (current + 1) / total;\n let scaleX = 1;\n let scaleY = 1;\n\n if (progressbarDirection === 'horizontal') {\n scaleX = scale;\n } else {\n scaleY = scale;\n }\n\n $el.find(classesToSelector(params.progressbarFillClass)).transform(`translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`).transition(swiper.params.speed);\n }\n\n if (params.type === 'custom' && params.renderCustom) {\n $el.html(params.renderCustom(swiper, current + 1, total));\n emit('paginationRender', $el[0]);\n } else {\n emit('paginationUpdate', $el[0]);\n }\n\n if (swiper.params.watchOverflow && swiper.enabled) {\n $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n }\n\n function render() {\n // Render Container\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n const $el = swiper.pagination.$el;\n let paginationHTML = '';\n\n if (params.type === 'bullets') {\n let numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n\n if (swiper.params.freeMode && swiper.params.freeMode.enabled && !swiper.params.loop && numberOfBullets > slidesLength) {\n numberOfBullets = slidesLength;\n }\n\n for (let i = 0; i < numberOfBullets; i += 1) {\n if (params.renderBullet) {\n paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n } else {\n paginationHTML += `<${params.bulletElement} class=\"${params.bulletClass}\"></${params.bulletElement}>`;\n }\n }\n\n $el.html(paginationHTML);\n swiper.pagination.bullets = $el.find(classesToSelector(params.bulletClass));\n }\n\n if (params.type === 'fraction') {\n if (params.renderFraction) {\n paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n } else {\n paginationHTML = `<span class=\"${params.currentClass}\"></span>` + ' / ' + `<span class=\"${params.totalClass}\"></span>`;\n }\n\n $el.html(paginationHTML);\n }\n\n if (params.type === 'progressbar') {\n if (params.renderProgressbar) {\n paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n } else {\n paginationHTML = `<span class=\"${params.progressbarFillClass}\"></span>`;\n }\n\n $el.html(paginationHTML);\n }\n\n if (params.type !== 'custom') {\n emit('paginationRender', swiper.pagination.$el[0]);\n }\n }\n\n function init() {\n swiper.params.pagination = createElementIfNotDefined(swiper, swiper.originalParams.pagination, swiper.params.pagination, {\n el: 'swiper-pagination'\n });\n const params = swiper.params.pagination;\n if (!params.el) return;\n let $el = $(params.el);\n if ($el.length === 0) return;\n\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1) {\n $el = swiper.$el.find(params.el); // check if it belongs to another nested Swiper\n\n if ($el.length > 1) {\n $el = $el.filter(el => {\n if ($(el).parents('.swiper')[0] !== swiper.el) return false;\n return true;\n });\n }\n }\n\n if (params.type === 'bullets' && params.clickable) {\n $el.addClass(params.clickableClass);\n }\n\n $el.addClass(params.modifierClass + params.type);\n $el.addClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n\n if (params.type === 'bullets' && params.dynamicBullets) {\n $el.addClass(`${params.modifierClass}${params.type}-dynamic`);\n dynamicBulletIndex = 0;\n\n if (params.dynamicMainBullets < 1) {\n params.dynamicMainBullets = 1;\n }\n }\n\n if (params.type === 'progressbar' && params.progressbarOpposite) {\n $el.addClass(params.progressbarOppositeClass);\n }\n\n if (params.clickable) {\n $el.on('click', classesToSelector(params.bulletClass), function onClick(e) {\n e.preventDefault();\n let index = $(this).index() * swiper.params.slidesPerGroup;\n if (swiper.params.loop) index += swiper.loopedSlides;\n swiper.slideTo(index);\n });\n }\n\n Object.assign(swiper.pagination, {\n $el,\n el: $el[0]\n });\n\n if (!swiper.enabled) {\n $el.addClass(params.lockClass);\n }\n }\n\n function destroy() {\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const $el = swiper.pagination.$el;\n $el.removeClass(params.hiddenClass);\n $el.removeClass(params.modifierClass + params.type);\n $el.removeClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n if (swiper.pagination.bullets && swiper.pagination.bullets.removeClass) swiper.pagination.bullets.removeClass(params.bulletActiveClass);\n\n if (params.clickable) {\n $el.off('click', classesToSelector(params.bulletClass));\n }\n }\n\n on('init', () => {\n if (swiper.params.pagination.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n render();\n update();\n }\n });\n on('activeIndexChange', () => {\n if (swiper.params.loop) {\n update();\n } else if (typeof swiper.snapIndex === 'undefined') {\n update();\n }\n });\n on('snapIndexChange', () => {\n if (!swiper.params.loop) {\n update();\n }\n });\n on('slidesLengthChange', () => {\n if (swiper.params.loop) {\n render();\n update();\n }\n });\n on('snapGridLengthChange', () => {\n if (!swiper.params.loop) {\n render();\n update();\n }\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n const {\n $el\n } = swiper.pagination;\n\n if ($el) {\n $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.pagination.lockClass);\n }\n });\n on('lock unlock', () => {\n update();\n });\n on('click', (_s, e) => {\n const targetEl = e.target;\n const {\n $el\n } = swiper.pagination;\n\n if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && $el && $el.length > 0 && !$(targetEl).hasClass(swiper.params.pagination.bulletClass)) {\n if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return;\n const isHidden = $el.hasClass(swiper.params.pagination.hiddenClass);\n\n if (isHidden === true) {\n emit('paginationShow');\n } else {\n emit('paginationHide');\n }\n\n $el.toggleClass(swiper.params.pagination.hiddenClass);\n }\n });\n\n const enable = () => {\n swiper.$el.removeClass(swiper.params.pagination.paginationDisabledClass);\n\n if (swiper.pagination.$el) {\n swiper.pagination.$el.removeClass(swiper.params.pagination.paginationDisabledClass);\n }\n\n init();\n render();\n update();\n };\n\n const disable = () => {\n swiper.$el.addClass(swiper.params.pagination.paginationDisabledClass);\n\n if (swiper.pagination.$el) {\n swiper.pagination.$el.addClass(swiper.params.pagination.paginationDisabledClass);\n }\n\n destroy();\n };\n\n Object.assign(swiper.pagination, {\n enable,\n disable,\n render,\n update,\n init,\n destroy\n });\n}","/* eslint no-underscore-dangle: \"off\" */\n\n/* eslint no-use-before-define: \"off\" */\nimport { getDocument } from 'ssr-window';\nimport { nextTick } from '../../shared/utils.js';\nexport default function Autoplay({\n swiper,\n extendParams,\n on,\n emit\n}) {\n let timeout;\n swiper.autoplay = {\n running: false,\n paused: false\n };\n extendParams({\n autoplay: {\n enabled: false,\n delay: 3000,\n waitForTransition: true,\n disableOnInteraction: true,\n stopOnLastSlide: false,\n reverseDirection: false,\n pauseOnMouseEnter: false\n }\n });\n\n function run() {\n if (!swiper.size) {\n swiper.autoplay.running = false;\n swiper.autoplay.paused = false;\n return;\n }\n\n const $activeSlideEl = swiper.slides.eq(swiper.activeIndex);\n let delay = swiper.params.autoplay.delay;\n\n if ($activeSlideEl.attr('data-swiper-autoplay')) {\n delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay;\n }\n\n clearTimeout(timeout);\n timeout = nextTick(() => {\n let autoplayResult;\n\n if (swiper.params.autoplay.reverseDirection) {\n if (swiper.params.loop) {\n swiper.loopFix();\n autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.isBeginning) {\n autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n autoplayResult = swiper.slideTo(swiper.slides.length - 1, swiper.params.speed, true, true);\n emit('autoplay');\n } else {\n stop();\n }\n } else if (swiper.params.loop) {\n swiper.loopFix();\n autoplayResult = swiper.slideNext(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.isEnd) {\n autoplayResult = swiper.slideNext(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n autoplayResult = swiper.slideTo(0, swiper.params.speed, true, true);\n emit('autoplay');\n } else {\n stop();\n }\n\n if (swiper.params.cssMode && swiper.autoplay.running) run();else if (autoplayResult === false) {\n run();\n }\n }, delay);\n }\n\n function start() {\n if (typeof timeout !== 'undefined') return false;\n if (swiper.autoplay.running) return false;\n swiper.autoplay.running = true;\n emit('autoplayStart');\n run();\n return true;\n }\n\n function stop() {\n if (!swiper.autoplay.running) return false;\n if (typeof timeout === 'undefined') return false;\n\n if (timeout) {\n clearTimeout(timeout);\n timeout = undefined;\n }\n\n swiper.autoplay.running = false;\n emit('autoplayStop');\n return true;\n }\n\n function pause(speed) {\n if (!swiper.autoplay.running) return;\n if (swiper.autoplay.paused) return;\n if (timeout) clearTimeout(timeout);\n swiper.autoplay.paused = true;\n\n if (speed === 0 || !swiper.params.autoplay.waitForTransition) {\n swiper.autoplay.paused = false;\n run();\n } else {\n ['transitionend', 'webkitTransitionEnd'].forEach(event => {\n swiper.$wrapperEl[0].addEventListener(event, onTransitionEnd);\n });\n }\n }\n\n function onVisibilityChange() {\n const document = getDocument();\n\n if (document.visibilityState === 'hidden' && swiper.autoplay.running) {\n pause();\n }\n\n if (document.visibilityState === 'visible' && swiper.autoplay.paused) {\n run();\n swiper.autoplay.paused = false;\n }\n }\n\n function onTransitionEnd(e) {\n if (!swiper || swiper.destroyed || !swiper.$wrapperEl) return;\n if (e.target !== swiper.$wrapperEl[0]) return;\n ['transitionend', 'webkitTransitionEnd'].forEach(event => {\n swiper.$wrapperEl[0].removeEventListener(event, onTransitionEnd);\n });\n swiper.autoplay.paused = false;\n\n if (!swiper.autoplay.running) {\n stop();\n } else {\n run();\n }\n }\n\n function onMouseEnter() {\n if (swiper.params.autoplay.disableOnInteraction) {\n stop();\n } else {\n emit('autoplayPause');\n pause();\n }\n\n ['transitionend', 'webkitTransitionEnd'].forEach(event => {\n swiper.$wrapperEl[0].removeEventListener(event, onTransitionEnd);\n });\n }\n\n function onMouseLeave() {\n if (swiper.params.autoplay.disableOnInteraction) {\n return;\n }\n\n swiper.autoplay.paused = false;\n emit('autoplayResume');\n run();\n }\n\n function attachMouseEvents() {\n if (swiper.params.autoplay.pauseOnMouseEnter) {\n swiper.$el.on('mouseenter', onMouseEnter);\n swiper.$el.on('mouseleave', onMouseLeave);\n }\n }\n\n function detachMouseEvents() {\n swiper.$el.off('mouseenter', onMouseEnter);\n swiper.$el.off('mouseleave', onMouseLeave);\n }\n\n on('init', () => {\n if (swiper.params.autoplay.enabled) {\n start();\n const document = getDocument();\n document.addEventListener('visibilitychange', onVisibilityChange);\n attachMouseEvents();\n }\n });\n on('beforeTransitionStart', (_s, speed, internal) => {\n if (swiper.autoplay.running) {\n if (internal || !swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.pause(speed);\n } else {\n stop();\n }\n }\n });\n on('sliderFirstMove', () => {\n if (swiper.autoplay.running) {\n if (swiper.params.autoplay.disableOnInteraction) {\n stop();\n } else {\n pause();\n }\n }\n });\n on('touchEnd', () => {\n if (swiper.params.cssMode && swiper.autoplay.paused && !swiper.params.autoplay.disableOnInteraction) {\n run();\n }\n });\n on('destroy', () => {\n detachMouseEvents();\n\n if (swiper.autoplay.running) {\n stop();\n }\n\n const document = getDocument();\n document.removeEventListener('visibilitychange', onVisibilityChange);\n });\n Object.assign(swiper.autoplay, {\n pause,\n run,\n start,\n stop\n });\n}","function isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';\n}\n\nfunction extend(target, src) {\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n Object.keys(src).filter(key => noExtend.indexOf(key) < 0).forEach(key => {\n if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) {\n if (src[key].__swiper__) target[key] = src[key];else extend(target[key], src[key]);\n } else {\n target[key] = src[key];\n }\n });\n}\n\nfunction needsNavigation(params = {}) {\n return params.navigation && typeof params.navigation.nextEl === 'undefined' && typeof params.navigation.prevEl === 'undefined';\n}\n\nfunction needsPagination(params = {}) {\n return params.pagination && typeof params.pagination.el === 'undefined';\n}\n\nfunction needsScrollbar(params = {}) {\n return params.scrollbar && typeof params.scrollbar.el === 'undefined';\n}\n\nfunction uniqueClasses(classNames = '') {\n const classes = classNames.split(' ').map(c => c.trim()).filter(c => !!c);\n const unique = [];\n classes.forEach(c => {\n if (unique.indexOf(c) < 0) unique.push(c);\n });\n return unique.join(' ');\n}\n\nexport { isObject, extend, needsNavigation, needsPagination, needsScrollbar, uniqueClasses };","/* underscore in name -> watch for changes */\nconst paramsList = ['modules', 'init', '_direction', 'touchEventsTarget', 'initialSlide', '_speed', 'cssMode', 'updateOnWindowResize', 'resizeObserver', 'nested', 'focusableElements', '_enabled', '_width', '_height', 'preventInteractionOnTransition', 'userAgent', 'url', '_edgeSwipeDetection', '_edgeSwipeThreshold', '_freeMode', '_autoHeight', 'setWrapperSize', 'virtualTranslate', '_effect', 'breakpoints', '_spaceBetween', '_slidesPerView', 'maxBackfaceHiddenSlides', '_grid', '_slidesPerGroup', '_slidesPerGroupSkip', '_slidesPerGroupAuto', '_centeredSlides', '_centeredSlidesBounds', '_slidesOffsetBefore', '_slidesOffsetAfter', 'normalizeSlideIndex', '_centerInsufficientSlides', '_watchOverflow', 'roundLengths', 'touchRatio', 'touchAngle', 'simulateTouch', '_shortSwipes', '_longSwipes', 'longSwipesRatio', 'longSwipesMs', '_followFinger', 'allowTouchMove', '_threshold', 'touchMoveStopPropagation', 'touchStartPreventDefault', 'touchStartForcePreventDefault', 'touchReleaseOnEdges', 'uniqueNavElements', '_resistance', '_resistanceRatio', '_watchSlidesProgress', '_grabCursor', 'preventClicks', 'preventClicksPropagation', '_slideToClickedSlide', '_preloadImages', 'updateOnImagesReady', '_loop', '_loopAdditionalSlides', '_loopedSlides', '_loopedSlidesLimit', '_loopFillGroupWithBlank', 'loopPreventsSlide', '_rewind', '_allowSlidePrev', '_allowSlideNext', '_swipeHandler', '_noSwiping', 'noSwipingClass', 'noSwipingSelector', 'passiveListeners', 'containerModifierClass', 'slideClass', 'slideBlankClass', 'slideActiveClass', 'slideDuplicateActiveClass', 'slideVisibleClass', 'slideDuplicateClass', 'slideNextClass', 'slideDuplicateNextClass', 'slidePrevClass', 'slideDuplicatePrevClass', 'wrapperClass', 'runCallbacksOnInit', 'observer', 'observeParents', 'observeSlideChildren', // modules\n'a11y', '_autoplay', '_controller', 'coverflowEffect', 'cubeEffect', 'fadeEffect', 'flipEffect', 'creativeEffect', 'cardsEffect', 'hashNavigation', 'history', 'keyboard', 'lazy', 'mousewheel', '_navigation', '_pagination', 'parallax', '_scrollbar', '_thumbs', 'virtual', 'zoom'];\nexport { paramsList };","import Swiper from 'swiper';\nexport const calcLoopedSlides = (slides, swiperParams) => {\n let slidesPerViewParams = swiperParams.slidesPerView;\n\n if (swiperParams.breakpoints) {\n const breakpoint = Swiper.prototype.getBreakpoint(swiperParams.breakpoints);\n const breakpointOnlyParams = breakpoint in swiperParams.breakpoints ? swiperParams.breakpoints[breakpoint] : undefined;\n\n if (breakpointOnlyParams && breakpointOnlyParams.slidesPerView) {\n slidesPerViewParams = breakpointOnlyParams.slidesPerView;\n }\n }\n\n let loopedSlides = Math.ceil(parseFloat(swiperParams.loopedSlides || slidesPerViewParams, 10));\n loopedSlides += swiperParams.loopAdditionalSlides;\n\n if (loopedSlides > slides.length && swiperParams.loopedSlidesLimit) {\n loopedSlides = slides.length;\n }\n\n return loopedSlides;\n};","import React from 'react';\n\nfunction isChildSwiperSlide(child) {\n return child.type && child.type.displayName && child.type.displayName.includes('SwiperSlide');\n}\n\nfunction processChildren(c) {\n const slides = [];\n React.Children.toArray(c).forEach(child => {\n if (isChildSwiperSlide(child)) {\n slides.push(child);\n } else if (child.props && child.props.children) {\n processChildren(child.props.children).forEach(slide => slides.push(slide));\n }\n });\n return slides;\n}\n\nfunction getChildren(c) {\n const slides = [];\n const slots = {\n 'container-start': [],\n 'container-end': [],\n 'wrapper-start': [],\n 'wrapper-end': []\n };\n React.Children.toArray(c).forEach(child => {\n if (isChildSwiperSlide(child)) {\n slides.push(child);\n } else if (child.props && child.props.slot && slots[child.props.slot]) {\n slots[child.props.slot].push(child);\n } else if (child.props && child.props.children) {\n const foundSlides = processChildren(child.props.children);\n\n if (foundSlides.length > 0) {\n foundSlides.forEach(slide => slides.push(slide));\n } else {\n slots['container-end'].push(child);\n }\n } else {\n slots['container-end'].push(child);\n }\n });\n return {\n slides,\n slots\n };\n}\n\nexport { getChildren };","import { isObject, extend } from './utils.js';\n\nfunction updateSwiper({\n swiper,\n slides,\n passedParams,\n changedParams,\n nextEl,\n prevEl,\n scrollbarEl,\n paginationEl\n}) {\n const updateParams = changedParams.filter(key => key !== 'children' && key !== 'direction');\n const {\n params: currentParams,\n pagination,\n navigation,\n scrollbar,\n virtual,\n thumbs\n } = swiper;\n let needThumbsInit;\n let needControllerInit;\n let needPaginationInit;\n let needScrollbarInit;\n let needNavigationInit;\n\n if (changedParams.includes('thumbs') && passedParams.thumbs && passedParams.thumbs.swiper && currentParams.thumbs && !currentParams.thumbs.swiper) {\n needThumbsInit = true;\n }\n\n if (changedParams.includes('controller') && passedParams.controller && passedParams.controller.control && currentParams.controller && !currentParams.controller.control) {\n needControllerInit = true;\n }\n\n if (changedParams.includes('pagination') && passedParams.pagination && (passedParams.pagination.el || paginationEl) && (currentParams.pagination || currentParams.pagination === false) && pagination && !pagination.el) {\n needPaginationInit = true;\n }\n\n if (changedParams.includes('scrollbar') && passedParams.scrollbar && (passedParams.scrollbar.el || scrollbarEl) && (currentParams.scrollbar || currentParams.scrollbar === false) && scrollbar && !scrollbar.el) {\n needScrollbarInit = true;\n }\n\n if (changedParams.includes('navigation') && passedParams.navigation && (passedParams.navigation.prevEl || prevEl) && (passedParams.navigation.nextEl || nextEl) && (currentParams.navigation || currentParams.navigation === false) && navigation && !navigation.prevEl && !navigation.nextEl) {\n needNavigationInit = true;\n }\n\n const destroyModule = mod => {\n if (!swiper[mod]) return;\n swiper[mod].destroy();\n\n if (mod === 'navigation') {\n currentParams[mod].prevEl = undefined;\n currentParams[mod].nextEl = undefined;\n swiper[mod].prevEl = undefined;\n swiper[mod].nextEl = undefined;\n } else {\n currentParams[mod].el = undefined;\n swiper[mod].el = undefined;\n }\n };\n\n updateParams.forEach(key => {\n if (isObject(currentParams[key]) && isObject(passedParams[key])) {\n extend(currentParams[key], passedParams[key]);\n } else {\n const newValue = passedParams[key];\n\n if ((newValue === true || newValue === false) && (key === 'navigation' || key === 'pagination' || key === 'scrollbar')) {\n if (newValue === false) {\n destroyModule(key);\n }\n } else {\n currentParams[key] = passedParams[key];\n }\n }\n });\n\n if (updateParams.includes('controller') && !needControllerInit && swiper.controller && swiper.controller.control && currentParams.controller && currentParams.controller.control) {\n swiper.controller.control = currentParams.controller.control;\n }\n\n if (changedParams.includes('children') && slides && virtual && currentParams.virtual.enabled) {\n virtual.slides = slides;\n virtual.update(true);\n } else if (changedParams.includes('children') && swiper.lazy && swiper.params.lazy.enabled) {\n swiper.lazy.load();\n }\n\n if (needThumbsInit) {\n const initialized = thumbs.init();\n if (initialized) thumbs.update(true);\n }\n\n if (needControllerInit) {\n swiper.controller.control = currentParams.controller.control;\n }\n\n if (needPaginationInit) {\n if (paginationEl) currentParams.pagination.el = paginationEl;\n pagination.init();\n pagination.render();\n pagination.update();\n }\n\n if (needScrollbarInit) {\n if (scrollbarEl) currentParams.scrollbar.el = scrollbarEl;\n scrollbar.init();\n scrollbar.updateSize();\n scrollbar.setTranslate();\n }\n\n if (needNavigationInit) {\n if (nextEl) currentParams.navigation.nextEl = nextEl;\n if (prevEl) currentParams.navigation.prevEl = prevEl;\n navigation.init();\n navigation.update();\n }\n\n if (changedParams.includes('allowSlideNext')) {\n swiper.allowSlideNext = passedParams.allowSlideNext;\n }\n\n if (changedParams.includes('allowSlidePrev')) {\n swiper.allowSlidePrev = passedParams.allowSlidePrev;\n }\n\n if (changedParams.includes('direction')) {\n swiper.changeDirection(passedParams.direction, false);\n }\n\n swiper.update();\n}\n\nexport { updateSwiper };","import { useEffect, useLayoutEffect } from 'react';\n\nfunction useIsomorphicLayoutEffect(callback, deps) {\n // eslint-disable-next-line\n if (typeof window === 'undefined') return useEffect(callback, deps);\n return useLayoutEffect(callback, deps);\n}\n\nexport { useIsomorphicLayoutEffect };","import { createContext, useContext } from 'react';\nexport const SwiperSlideContext = /*#__PURE__*/createContext(null);\nexport const useSwiperSlide = () => {\n return useContext(SwiperSlideContext);\n};\nexport const SwiperContext = /*#__PURE__*/createContext(null);\nexport const useSwiper = () => {\n return useContext(SwiperContext);\n};","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React, { useRef, useState, useEffect, forwardRef } from 'react';\nimport SwiperCore from 'swiper';\nimport { getParams } from '../components-shared/get-params.js';\nimport { mountSwiper } from '../components-shared/mount-swiper.js';\nimport { needsScrollbar, needsNavigation, needsPagination, uniqueClasses, extend } from '../components-shared/utils.js';\nimport { renderLoop, calcLoopedSlides } from './loop.js';\nimport { getChangedParams } from '../components-shared/get-changed-params.js';\nimport { getChildren } from './get-children.js';\nimport { updateSwiper } from '../components-shared/update-swiper.js';\nimport { renderVirtual } from './virtual.js';\nimport { updateOnVirtualData } from '../components-shared/update-on-virtual-data.js';\nimport { useIsomorphicLayoutEffect } from './use-isomorphic-layout-effect.js';\nimport { SwiperContext } from './context.js';\nconst Swiper = /*#__PURE__*/forwardRef(function (_temp, externalElRef) {\n let {\n className,\n tag: Tag = 'div',\n wrapperTag: WrapperTag = 'div',\n children,\n onSwiper,\n ...rest\n } = _temp === void 0 ? {} : _temp;\n let eventsAssigned = false;\n const [containerClasses, setContainerClasses] = useState('swiper');\n const [virtualData, setVirtualData] = useState(null);\n const [breakpointChanged, setBreakpointChanged] = useState(false);\n const initializedRef = useRef(false);\n const swiperElRef = useRef(null);\n const swiperRef = useRef(null);\n const oldPassedParamsRef = useRef(null);\n const oldSlides = useRef(null);\n const nextElRef = useRef(null);\n const prevElRef = useRef(null);\n const paginationElRef = useRef(null);\n const scrollbarElRef = useRef(null);\n const {\n params: swiperParams,\n passedParams,\n rest: restProps,\n events\n } = getParams(rest);\n const {\n slides,\n slots\n } = getChildren(children);\n\n const onBeforeBreakpoint = () => {\n setBreakpointChanged(!breakpointChanged);\n };\n\n Object.assign(swiperParams.on, {\n _containerClasses(swiper, classes) {\n setContainerClasses(classes);\n }\n\n });\n\n const initSwiper = () => {\n // init swiper\n Object.assign(swiperParams.on, events);\n eventsAssigned = true;\n swiperRef.current = new SwiperCore(swiperParams);\n\n swiperRef.current.loopCreate = () => {};\n\n swiperRef.current.loopDestroy = () => {};\n\n if (swiperParams.loop) {\n swiperRef.current.loopedSlides = calcLoopedSlides(slides, swiperParams);\n }\n\n if (swiperRef.current.virtual && swiperRef.current.params.virtual.enabled) {\n swiperRef.current.virtual.slides = slides;\n const extendWith = {\n cache: false,\n slides,\n renderExternal: setVirtualData,\n renderExternalUpdate: false\n };\n extend(swiperRef.current.params.virtual, extendWith);\n extend(swiperRef.current.originalParams.virtual, extendWith);\n }\n };\n\n if (!swiperElRef.current) {\n initSwiper();\n } // Listen for breakpoints change\n\n\n if (swiperRef.current) {\n swiperRef.current.on('_beforeBreakpoint', onBeforeBreakpoint);\n }\n\n const attachEvents = () => {\n if (eventsAssigned || !events || !swiperRef.current) return;\n Object.keys(events).forEach(eventName => {\n swiperRef.current.on(eventName, events[eventName]);\n });\n };\n\n const detachEvents = () => {\n if (!events || !swiperRef.current) return;\n Object.keys(events).forEach(eventName => {\n swiperRef.current.off(eventName, events[eventName]);\n });\n };\n\n useEffect(() => {\n return () => {\n if (swiperRef.current) swiperRef.current.off('_beforeBreakpoint', onBeforeBreakpoint);\n };\n }); // set initialized flag\n\n useEffect(() => {\n if (!initializedRef.current && swiperRef.current) {\n swiperRef.current.emitSlidesClasses();\n initializedRef.current = true;\n }\n }); // mount swiper\n\n useIsomorphicLayoutEffect(() => {\n if (externalElRef) {\n externalElRef.current = swiperElRef.current;\n }\n\n if (!swiperElRef.current) return;\n\n if (swiperRef.current.destroyed) {\n initSwiper();\n }\n\n mountSwiper({\n el: swiperElRef.current,\n nextEl: nextElRef.current,\n prevEl: prevElRef.current,\n paginationEl: paginationElRef.current,\n scrollbarEl: scrollbarElRef.current,\n swiper: swiperRef.current\n }, swiperParams);\n if (onSwiper) onSwiper(swiperRef.current); // eslint-disable-next-line\n\n return () => {\n if (swiperRef.current && !swiperRef.current.destroyed) {\n swiperRef.current.destroy(true, false);\n }\n };\n }, []); // watch for params change\n\n useIsomorphicLayoutEffect(() => {\n attachEvents();\n const changedParams = getChangedParams(passedParams, oldPassedParamsRef.current, slides, oldSlides.current, c => c.key);\n oldPassedParamsRef.current = passedParams;\n oldSlides.current = slides;\n\n if (changedParams.length && swiperRef.current && !swiperRef.current.destroyed) {\n updateSwiper({\n swiper: swiperRef.current,\n slides,\n passedParams,\n changedParams,\n nextEl: nextElRef.current,\n prevEl: prevElRef.current,\n scrollbarEl: scrollbarElRef.current,\n paginationEl: paginationElRef.current\n });\n }\n\n return () => {\n detachEvents();\n };\n }); // update on virtual update\n\n useIsomorphicLayoutEffect(() => {\n updateOnVirtualData(swiperRef.current);\n }, [virtualData]); // bypass swiper instance to slides\n\n function renderSlides() {\n if (swiperParams.virtual) {\n return renderVirtual(swiperRef.current, slides, virtualData);\n }\n\n if (!swiperParams.loop || swiperRef.current && swiperRef.current.destroyed) {\n return slides.map(child => {\n return /*#__PURE__*/React.cloneElement(child, {\n swiper: swiperRef.current\n });\n });\n }\n\n return renderLoop(swiperRef.current, slides, swiperParams);\n }\n\n return /*#__PURE__*/React.createElement(Tag, _extends({\n ref: swiperElRef,\n className: uniqueClasses(`${containerClasses}${className ? ` ${className}` : ''}`)\n }, restProps), /*#__PURE__*/React.createElement(SwiperContext.Provider, {\n value: swiperRef.current\n }, slots['container-start'], /*#__PURE__*/React.createElement(WrapperTag, {\n className: \"swiper-wrapper\"\n }, slots['wrapper-start'], renderSlides(), slots['wrapper-end']), needsNavigation(swiperParams) && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"div\", {\n ref: prevElRef,\n className: \"swiper-button-prev\"\n }), /*#__PURE__*/React.createElement(\"div\", {\n ref: nextElRef,\n className: \"swiper-button-next\"\n })), needsScrollbar(swiperParams) && /*#__PURE__*/React.createElement(\"div\", {\n ref: scrollbarElRef,\n className: \"swiper-scrollbar\"\n }), needsPagination(swiperParams) && /*#__PURE__*/React.createElement(\"div\", {\n ref: paginationElRef,\n className: \"swiper-pagination\"\n }), slots['container-end']));\n});\nSwiper.displayName = 'Swiper';\nexport { Swiper };","import Swiper from 'swiper';\nimport { isObject, extend } from './utils.js';\nimport { paramsList } from './params-list.js';\n\nfunction getParams(obj = {}, splitEvents = true) {\n const params = {\n on: {}\n };\n const events = {};\n const passedParams = {};\n extend(params, Swiper.defaults);\n extend(params, Swiper.extendedDefaults);\n params._emitClasses = true;\n params.init = false;\n const rest = {};\n const allowedParams = paramsList.map(key => key.replace(/_/, ''));\n const plainObj = Object.assign({}, obj);\n Object.keys(plainObj).forEach(key => {\n if (typeof obj[key] === 'undefined') return;\n\n if (allowedParams.indexOf(key) >= 0) {\n if (isObject(obj[key])) {\n params[key] = {};\n passedParams[key] = {};\n extend(params[key], obj[key]);\n extend(passedParams[key], obj[key]);\n } else {\n params[key] = obj[key];\n passedParams[key] = obj[key];\n }\n } else if (key.search(/on[A-Z]/) === 0 && typeof obj[key] === 'function') {\n if (splitEvents) {\n events[`${key[2].toLowerCase()}${key.substr(3)}`] = obj[key];\n } else {\n params.on[`${key[2].toLowerCase()}${key.substr(3)}`] = obj[key];\n }\n } else {\n rest[key] = obj[key];\n }\n });\n ['navigation', 'pagination', 'scrollbar'].forEach(key => {\n if (params[key] === true) params[key] = {};\n if (params[key] === false) delete params[key];\n });\n return {\n params,\n passedParams,\n rest,\n events\n };\n}\n\nexport { getParams };","import { needsNavigation, needsPagination, needsScrollbar } from './utils.js';\n\nfunction mountSwiper({\n el,\n nextEl,\n prevEl,\n paginationEl,\n scrollbarEl,\n swiper\n}, swiperParams) {\n if (needsNavigation(swiperParams) && nextEl && prevEl) {\n swiper.params.navigation.nextEl = nextEl;\n swiper.originalParams.navigation.nextEl = nextEl;\n swiper.params.navigation.prevEl = prevEl;\n swiper.originalParams.navigation.prevEl = prevEl;\n }\n\n if (needsPagination(swiperParams) && paginationEl) {\n swiper.params.pagination.el = paginationEl;\n swiper.originalParams.pagination.el = paginationEl;\n }\n\n if (needsScrollbar(swiperParams) && scrollbarEl) {\n swiper.params.scrollbar.el = scrollbarEl;\n swiper.originalParams.scrollbar.el = scrollbarEl;\n }\n\n swiper.init(el);\n}\n\nexport { mountSwiper };","import { paramsList } from './params-list.js';\nimport { isObject } from './utils.js';\n\nfunction getChangedParams(swiperParams, oldParams, children, oldChildren, getKey) {\n const keys = [];\n if (!oldParams) return keys;\n\n const addKey = key => {\n if (keys.indexOf(key) < 0) keys.push(key);\n };\n\n if (children && oldChildren) {\n const oldChildrenKeys = oldChildren.map(getKey);\n const childrenKeys = children.map(getKey);\n if (oldChildrenKeys.join('') !== childrenKeys.join('')) addKey('children');\n if (oldChildren.length !== children.length) addKey('children');\n }\n\n const watchParams = paramsList.filter(key => key[0] === '_').map(key => key.replace(/_/, ''));\n watchParams.forEach(key => {\n if (key in swiperParams && key in oldParams) {\n if (isObject(swiperParams[key]) && isObject(oldParams[key])) {\n const newKeys = Object.keys(swiperParams[key]);\n const oldKeys = Object.keys(oldParams[key]);\n\n if (newKeys.length !== oldKeys.length) {\n addKey(key);\n } else {\n newKeys.forEach(newKey => {\n if (swiperParams[key][newKey] !== oldParams[key][newKey]) {\n addKey(key);\n }\n });\n oldKeys.forEach(oldKey => {\n if (swiperParams[key][oldKey] !== oldParams[key][oldKey]) addKey(key);\n });\n }\n } else if (swiperParams[key] !== oldParams[key]) {\n addKey(key);\n }\n }\n });\n return keys;\n}\n\nexport { getChangedParams };","export const updateOnVirtualData = swiper => {\n if (!swiper || swiper.destroyed || !swiper.params.virtual || swiper.params.virtual && !swiper.params.virtual.enabled) return;\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n\n if (swiper.lazy && swiper.params.lazy.enabled) {\n swiper.lazy.load();\n }\n\n if (swiper.parallax && swiper.params.parallax && swiper.params.parallax.enabled) {\n swiper.parallax.setTranslate();\n }\n};","import React from 'react';\n\nfunction renderVirtual(swiper, slides, virtualData) {\n if (!virtualData) return null;\n const style = swiper.isHorizontal() ? {\n [swiper.rtlTranslate ? 'right' : 'left']: `${virtualData.offset}px`\n } : {\n top: `${virtualData.offset}px`\n };\n return slides.filter((child, index) => index >= virtualData.from && index <= virtualData.to).map(child => {\n return /*#__PURE__*/React.cloneElement(child, {\n swiper,\n style\n });\n });\n}\n\nexport { renderVirtual };","import React from 'react';\nimport { calcLoopedSlides } from '../shared/calc-looped-slides.js';\n\nfunction renderLoop(swiper, slides, swiperParams) {\n const modifiedSlides = slides.map((child, index) => {\n return /*#__PURE__*/React.cloneElement(child, {\n swiper,\n 'data-swiper-slide-index': index\n });\n });\n\n function duplicateSlide(child, index, position) {\n return /*#__PURE__*/React.cloneElement(child, {\n key: `${child.key}-duplicate-${index}-${position}`,\n className: `${child.props.className || ''} ${swiperParams.slideDuplicateClass}`\n });\n }\n\n if (swiperParams.loopFillGroupWithBlank) {\n const blankSlidesNum = swiperParams.slidesPerGroup - modifiedSlides.length % swiperParams.slidesPerGroup;\n\n if (blankSlidesNum !== swiperParams.slidesPerGroup) {\n for (let i = 0; i < blankSlidesNum; i += 1) {\n const blankSlide = /*#__PURE__*/React.createElement(\"div\", {\n className: `${swiperParams.slideClass} ${swiperParams.slideBlankClass}`\n });\n modifiedSlides.push(blankSlide);\n }\n }\n }\n\n if (swiperParams.slidesPerView === 'auto' && !swiperParams.loopedSlides) {\n swiperParams.loopedSlides = modifiedSlides.length;\n }\n\n const loopedSlides = calcLoopedSlides(modifiedSlides, swiperParams);\n const prependSlides = [];\n const appendSlides = [];\n\n for (let i = 0; i < loopedSlides; i += 1) {\n const index = i - Math.floor(i / modifiedSlides.length) * modifiedSlides.length;\n appendSlides.push(duplicateSlide(modifiedSlides[index], i, 'append'));\n prependSlides.unshift(duplicateSlide(modifiedSlides[modifiedSlides.length - index - 1], i, 'prepend'));\n }\n\n if (swiper) {\n swiper.loopedSlides = loopedSlides;\n }\n\n return [...prependSlides, ...modifiedSlides, ...appendSlides];\n}\n\nexport { calcLoopedSlides, renderLoop };","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React, { useRef, useState, forwardRef } from 'react';\nimport { uniqueClasses } from '../components-shared/utils.js';\nimport { useIsomorphicLayoutEffect } from './use-isomorphic-layout-effect.js';\nimport { SwiperSlideContext } from './context.js';\nconst SwiperSlide = /*#__PURE__*/forwardRef(function (_temp, externalRef) {\n let {\n tag: Tag = 'div',\n children,\n className = '',\n swiper,\n zoom,\n virtualIndex,\n ...rest\n } = _temp === void 0 ? {} : _temp;\n const slideElRef = useRef(null);\n const [slideClasses, setSlideClasses] = useState('swiper-slide');\n\n function updateClasses(_s, el, classNames) {\n if (el === slideElRef.current) {\n setSlideClasses(classNames);\n }\n }\n\n useIsomorphicLayoutEffect(() => {\n if (externalRef) {\n externalRef.current = slideElRef.current;\n }\n\n if (!slideElRef.current || !swiper) {\n return;\n }\n\n if (swiper.destroyed) {\n if (slideClasses !== 'swiper-slide') {\n setSlideClasses('swiper-slide');\n }\n\n return;\n }\n\n swiper.on('_slideClass', updateClasses); // eslint-disable-next-line\n\n return () => {\n if (!swiper) return;\n swiper.off('_slideClass', updateClasses);\n };\n });\n useIsomorphicLayoutEffect(() => {\n if (swiper && slideElRef.current && !swiper.destroyed) {\n setSlideClasses(swiper.getSlideClasses(slideElRef.current));\n }\n }, [swiper]);\n const slideData = {\n isActive: slideClasses.indexOf('swiper-slide-active') >= 0 || slideClasses.indexOf('swiper-slide-duplicate-active') >= 0,\n isVisible: slideClasses.indexOf('swiper-slide-visible') >= 0,\n isDuplicate: slideClasses.indexOf('swiper-slide-duplicate') >= 0,\n isPrev: slideClasses.indexOf('swiper-slide-prev') >= 0 || slideClasses.indexOf('swiper-slide-duplicate-prev') >= 0,\n isNext: slideClasses.indexOf('swiper-slide-next') >= 0 || slideClasses.indexOf('swiper-slide-duplicate-next') >= 0\n };\n\n const renderChildren = () => {\n return typeof children === 'function' ? children(slideData) : children;\n };\n\n return /*#__PURE__*/React.createElement(Tag, _extends({\n ref: slideElRef,\n className: uniqueClasses(`${slideClasses}${className ? ` ${className}` : ''}`),\n \"data-swiper-slide-index\": virtualIndex\n }, rest), /*#__PURE__*/React.createElement(SwiperSlideContext.Provider, {\n value: slideData\n }, zoom ? /*#__PURE__*/React.createElement(\"div\", {\n className: \"swiper-zoom-container\",\n \"data-swiper-zoom\": typeof zoom === 'number' ? zoom : undefined\n }, renderChildren()) : renderChildren()));\n});\nSwiperSlide.displayName = 'SwiperSlide';\nexport { SwiperSlide };","import React from 'react';\nimport { Swiper, SwiperSlide } from 'swiper/react';\nimport { Autoplay, Pagination, Navigation } from \"swiper\";\n\nclass Carousel extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n index: 0,\n manipulatedChildren: null,\n translate: '',\n scrollLocked: false,\n transitionDuration: '1s'\n }\n this.outerContainer = React.createRef();\n this.calculatedChildWidth = 1;\n this.itemsInView = 0;\n\n this.initiated = false;\n this.isMobile = window.outerWidth < 576;\n this.childWidthMultiplier = this.isMobile ? .5 : 1;\n this.paddedChildren = 2 / this.childWidthMultiplier;\n this.translateMultiplier = this.isMobile ? 1.5 : 1;\n }\n\n componentDidUpdate() {\n if (!this.initiated && this.props.children.length){\n this.initiated = true;\n this.calculatedChildWidth = this.isMobile ? window.outerWidth / 2 : this.props.itemWidth;\n this.setItemsInView();\n this.setCalculatedChildWidth();\n this.manipulateChildren(true);\n }\n }\n\n setCalculatedChildWidth() {\n const outerContainer = this.outerContainer.current;\n if(!outerContainer){\n return;\n }\n this.calculatedChildWidth = outerContainer.offsetWidth / (this.itemsInView);\n }\n\n setItemsInView() {\n const outerContainer = this.outerContainer.current;\n\n if(!outerContainer){\n return;\n }\n this.itemsInView = parseInt(outerContainer.offsetWidth / this.calculatedChildWidth);\n }\n\n cloneArray (array) {\n return array.map((obj) => {\n return Object.assign({}, obj);\n });\n }\n\n manipulateChildren(setState, props) {\n const children = props?.children || this.props.children;\n if(children.length == 0 ) {\n return children;\n }\n\n const clone = this.cloneArray(children);\n const returner = clone.map((item, index) => {\n return (<SwiperSlide key={index}><div className=\"carousel__item\">{item}</div></SwiperSlide>)\n });\n\n if(setState){\n this.setState({\n manipulatedChildren: returner,\n translate: 0,\n scrollLocked: false,\n transitionDuration: '0s'\n });\n }\n\n }\n\n render() {\n this.setItemsInView();\n this.setCalculatedChildWidth();\n return (\n <React.Fragment>\n <div className=\"slider_wrapper carousel__outer-container\" ref={this.outerContainer}>\n <div id=\"js-prev\" className=\"carousel__arrow--container carousel__arrow--container-left\">\n <i className=\"carousel__arrow carousel__arrow--left\"></i>\n </div>\n <div className=\"carousel__inner-container cts-impression-group\">\n <Swiper\n modules={[Pagination,Autoplay,Navigation]}\n autoplay={{\n delay: 2500,\n disableOnInteraction: true,\n }}\n loop={true}\n spaceBetween={50}\n breakpoints={{\n '0': {slidesPerView: 2},\n '600': {slidesPerView: 3},\n '1024': {slidesPerView: 5},\n }}\n pagination={{\n clickable: true,\n el: '.swiper-pagination',\n }}\n navigation={{\n nextEl: '#js-next',\n prevEl: '#js-prev',\n }}\n >\n {this.state.manipulatedChildren}\n </Swiper>\n </div>\n <div id=\"js-next\" className=\"carousel__arrow--container carousel__arrow--container-right\">\n <i className=\"carousel__arrow carousel__arrow--right\"></i>\n </div>\n <div className=\"carousel__dots\">\n <div className='swiper-pagination'></div>\n </div>\n </div>\n </React.Fragment>\n );\n }\n}\nexport default Carousel;\n","import React from 'react';\nimport axios from 'axios';\nimport ShoppingCarouselItem from './ShoppingCarouselItem';\nimport Carousel from './Carousel';\n\nconst unsafeAxios = axios.create({\n withCredentials: false\n});\n\nclass ShoppingCarousel extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n index: 0,\n items: [],\n galleryData: {}\n }\n\n this.brandName = this.getBrandName();\n }\n\n getBrandName() {\n let hostname = window.location.hostname.split('.');\n hostname.pop();\n return hostname.pop();\n }\n\n componentDidMount() {\n this.fetchConfig();\n }\n\n fetchConfig() {\n axios.get(`/api/affiliategallery/`)\n .then(\n (res) => {\n const gallery = res.data;\n\n this.setState({\n items: gallery && gallery.products ? gallery?.products.map?.(this.mapProducts.bind(this)) : [],\n galleryData: gallery ?? {}\n })\n }\n );\n }\n\n mapProducts(product, index) {\n return (\n <ShoppingCarouselItem index={index} key={product.id} data={product} />\n )\n }\n\n\n render() {\n // Disable for these\n switch (this.brandName) {\n case 'allas':\n // case 'elle':\n // case 'femina':\n case 'hant':\n case 'mabra':\n // case 'svenskdam':\n case 'residencemagazine':\n case 'motherhood': return null;\n }\n return (\n <React.Fragment>\n <div className=\"shop_carousel__disclaimer shop_carousel__disclaimer--outer\">{this.state.galleryData.product_module_disclaimer}</div>\n <div className=\"shop_carousel__title shop_carousel__title--outer\" data-carousel-title={this.state.galleryData.product_module_title}>\n {this.state.galleryData.product_module_title}\n </div>\n <div className=\"shop_carousel\" data-cts-object-group>\n {window.blogLogo.length > 0 &&\n <div className=\"shop_carousel__logo\">\n <img src={window.blogLogo} alt=\"\" />\n </div>\n }\n <div className=\"shop_carousel__title shop_carousel__title--inner\" data-carousel-title={this.state.galleryData.product_module_title}>\n {this.state.galleryData.product_module_title}\n </div>\n <div className=\"shop_carousel__disclaimer shop_carousel__disclaimer--inner\">\n {this.state.galleryData.product_module_disclaimer}\n </div>\n <div className=\"shop_carousel__container cts-tracking-object\"\n data-cts-object-category=\"affiliate_carousel\"\n data-cts-object-name={this.state.galleryData.product_module_title}\n data-cts-object-extra-info={JSON.stringify([{ type: 'carousel' }])}>\n <div className=\"shop-car-products\" id={`shop-car-products-${this.state.galleryData.id}`}>\n <Carousel itemWidth={200}>\n {this.state.items}\n </Carousel>\n </div>\n </div>\n </div>\n </React.Fragment>\n );\n }\n}\nexport default ShoppingCarousel;","import React from 'react';\n\nclass Terms extends React.Component {\n constructor(props) {\n super(props);\n }\n\n render() {\n\n return (\n <React.Fragment>\n <div className=\"post_tags text-center\">\n {this.props.terms.map((item, i) =>\n <a href={item.url} className=\"badge badge-pill badge-secondary\" key={i}>{item.name}</a>\n )}\n </div>\n </React.Fragment>\n )\n }\n}\n\nexport default Terms;","import React from 'react';\nimport Icon from './Icon';\n\nclass Rating extends React.Component {\n\n static buttons = [\n {\n 'label': 'Inte så bra',\n 'rating': 1\n },\n {\n 'label': 'Kommer nog inte att göre igen',\n 'rating': 2\n },\n {\n 'label': 'Helt ok!',\n 'rating': 3\n },\n {\n 'label': 'Mycket gott!',\n 'rating': 4\n },\n {\n 'label': 'Världsklass!',\n 'rating': 5\n },\n ]\n\n static cookieName = 'RecipeRating'\n\n constructor(props) {\n super(props);\n\n let rating = 0.0; \n if (this.props.post.meta_data.recipeRating) {\n const ratingObject = JSON.parse(this.props.post.meta_data.recipeRating);\n rating = parseFloat(ratingObject.totalRating / ratingObject.count).toFixed(1);\n this.state = {\n rating: rating,\n count: ratingObject.count\n }\n } else {\n this.state = {\n rating: 0,\n count: 0\n }\n }\n\n this.doRate = this.doRate.bind(this);\n }\n\n doRate(rating) {\n const ratings = this.getCookieRating();\n if (this.state.running ||\n ratings[this.props.post.id.toString()]) {\n return;\n }\n\n axios.post(\n `/api/rating/${this.props.post.id}/`, \n { rating: rating }\n )\n .then((response) => {\n ratings[this.props.post.id.toString()] = rating;\n window.Cookie.set(Rating.cookieName, JSON.stringify(ratings), { expires: (365 * 10) });\n this.setState({\n rating: parseFloat(response.data).toFixed(1),\n count: ++this.state.count\n });\n })\n .catch((error) => {\n console.error(error);\n })\n .finally(() => {\n this.setState({\n running: false\n });\n });\n }\n\n getCookieRating() {\n let reactionsJSON = window.Cookie.get(Rating.cookieName);\n if (typeof reactionsJSON == 'undefined') {\n return {};\n }\n return JSON.parse(reactionsJSON);\n }\n\n render() {\n const stars = Rating.buttons.map((btn, i) => {\n return (\n <button className={`rating_vote-btn ${this.state.rating >= btn.rating ? 'rating_vote-btn__filled' : ''}` } key={btn.rating} onClick={ () => {this.doRate(btn.rating)}}>\n <Icon type=\"star_on\" />\n </button>\n );\n });\n return (\n <div className={'rating_container'}>\n <div className={'rating_vote-btn-container'}>\n {stars}\n </div>\n <p className={'rating_text'}>{this.state.count} röster</p>\n </div>\n );\n }\n}\n\nexport default Rating;","import * as React from 'react'\n\nfunction Unmute(props) {\n const {onClick, isMuted} = props;\n const [show, setShow] = React.useState(true);\n const [expanded, setExpanded] = React.useState(false);\n\n React.useEffect(() => {\n const timeouts = [];\n\n /* Stack timeout delays */\n timeouts.push(setTimeout(() => setExpanded(true), 3000));\n timeouts.push(setTimeout(() => setExpanded(false), 7000));\n timeouts.push(setTimeout(() => setShow(false), 17000));\n\n return () => {\n timeouts.map(t => clearTimeout(t));\n }\n }, [])\n\n return (\n <div onClick={onClick} className={`enable-sound-button ${show ? \"show\" : \"\"} ${expanded ? \"expanded\" : \"\"} ${isMuted ? '' : 'has_volume'}`}>\n <span>Slå på ljud</span>\n </div>\n )\n}\n\nexport default Unmute;","import * as React from 'react'\n\nfunction ExitLink(props) {\n const {url, text} = props;\n\n return (\n <a href={url} target=\"_blank\" rel=\"noopener nofollow\" className=\"js-jwplayer__exit-link\">{text}</a>\n )\n}\n\nexport default ExitLink;","import React from \"react\";\nimport SmallPost from '../Models/SmallPost';\n\nclass RecommendedPosts extends React.Component {\n\n constructor(props) {\n super(props);\n\n this.state = {\n // Props input.\n post: props.post,\n\n // Recommendation data directly from server or via fetch.\n recommendations: props.post.recommendations,\n\n // Should we fetch fresh data?\n shouldFetch: false,\n\n // Do not show until we have data.\n show: false,\n\n // Config for setting high vs low TTL based on post age.\n // Match these with config/recommendations.php settings.\n postLowTtlMaxAge: 360,\n lowTtl: 30,\n hightTtl: 360,\n }\n\n // Exit early if this component is not enabled for this brand.\n if (!this.isComponentEnabled()) {\n return;\n }\n\n const dateNow = new Date();\n\n // Determine what to do: show immidietly or try fetching recommendations.\n if (Array.isArray(this.state.recommendations) && this.state.recommendations.length > 0) {\n // Set max allowed cache TTL before considered stale.\n const cacheTtl = this.dateDiffInMinutes(new Date(this.state.post.date), dateNow) < this.state.postLowTtlMaxAge ? this.state.lowTtl : this.state.hightTtl;\n\n // Check if the data we recieved is fresh.\n if (this.dateDiffInMinutes(new Date(this.state.recommendations[0].updated_at), dateNow) < cacheTtl) {\n // Recommendations are fresh.\n this.state.show = true;\n } else {\n // Recommendations are stale.\n this.state.shouldFetch = true;\n }\n } else {\n // No recommendations recieved from server.\n this.state.shouldFetch = true;\n }\n }\n\n componentDidMount() {\n if (this.state.shouldFetch) {\n // Fetch updated recommendation data.\n axios.get(`/api/post/${this.state.post.id}/recommendations/`)\n .then(response => {\n if (response.status === 200) {\n this.state.recommendations = response.data;\n\n if (this.state.recommendations.length > 0) {\n this.state.show = true;\n }\n }\n })\n .catch(error => console.error(error)); \n }\n }\n\n /**\n * Determine if this component is enabled for this brand.\n * @returns bool\n */\n isComponentEnabled() {\n const hostname = window.location.hostname.split('.');\n return hostname.length >= 2 && ['elle', 'femina', 'allas'].includes(hostname[1]);\n }\n\n /**\n * Get the diff of two dates in minutes.\n * \n * @param {Date} date1 \n * @param {Date} date2 \n * @returns {int}\n */\n dateDiffInMinutes(date1, date2) {\n return Math.floor(Math.abs(date1 - date2) / 60000);\n }\n\n render() {\n if (this.state.show) {\n return (\n <React.Fragment>\n <div className=\"recommended wings\" data-cts-object-group=\"\">\n <div className=\"recommended_title\">\n <span>Mer från { window.blogTitle }</span>\n </div>\n <div className=\"row\">\n {this.state.recommendations.map((recommendation, index) => {\n return <SmallPost\n key={recommendation.id} data={recommendation.post}\n attributes={{\n \"data-cts-object-category\": \"recommendation_engine\",\n \"data-cts-object-name\": recommendation.post.title,\n \"data-cts-object-extra-info\": JSON.stringify([{\n \"model\": recommendation.model,\n \"priority\": \"pr1\",\n \"recommendation_type\": recommendation.type,\n }]),\n \"data-cts-object-url\": `${window.location.protocol}//${window.location.hostname}${recommendation.post.url}`,\n \"data-cts-object-placement\": index + 1,\n }}\n className=\"cts-tracking-object\"\n />\n })}\n </div>\n </div>\n </React.Fragment>\n );\n }\n return null;\n }\n}\n\nexport default RecommendedPosts;","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport DOMPurify from \"dompurify\";\nimport ReactJWPlayer from \"react-jw-player\";\nimport Comments from \"../PostComponents/Comments\";\nimport ShareButton from \"../PostComponents/ShareButton\";\nimport PostDummy from \"../Dummies/PostDummy\";\nimport Ad from \"../PostComponents/Ad\";\nimport ShoppingCarousel from \"../PostComponents/Carousel/ShoppingCarousel\";\nimport Terms from \"../PostComponents/Terms\";\nimport Rating from \"../Partials/Rating\";\nimport Unmute from \"../PostComponents/Unmute\";\nimport ExitLink from \"../PostComponents/ExitLink\";\nimport RecommendedPosts from \"../PostComponents/RecommendedPosts\"\n\nclass Post extends React.Component {\n constructor(props) {\n super(props);\n\n this.post = this.props.data;\n\n this.playerHeading = this.post?.meta_data.jw_player_heading;\n this.playerID = this.post?.meta_data.jw_player_id ?? false;\n this.playlistID = this.post?.meta_data.jw_player_plalist_id ?? false;\n\n // Should we hide ads?\n let hideAdsEnabled = this.post?.meta_data._ana_hide_ads ?? false;\n let hideAds = false;\n let hideDuration =\n this.post?.meta_data._ana_hide_ads_duration_active ?? false;\n let hideUntil = this.post?.meta_data._ana_hide_ads_duration ?? false;\n if (hideAdsEnabled) {\n hideAds = true;\n\n if (hideDuration) {\n hideAds = new Date(hideUntil) > new Date();\n }\n }\n\n this.stopJWAutoPlay =\n this.post?.meta_data.jw_player_autoplay == \"0\" || false;\n /* Pass autostart as customProp because react-jw-player's isAutoPlay-prop only supports boolean value */\n this.jwPlayerCustomProps = {\n autostart: this.stopJWAutoPlay ? false : \"viewable\",\n setTimeEvents: true\n };\n this.activateUnmute = false;\n\n this.jwPlayerPosition = \"top\";\n\n this.state = {\n showComments: false,\n hideAds: hideAds,\n videoTitle: \"\",\n mute: false,\n showUnmute: false,\n hasSticky: true\n };\n\n this.showComments = this.showComments.bind(this);\n this.addTimestampToIntextAds = this.addTimestampToIntextAds.bind(this);\n this.onReady = this.onReady.bind(this);\n this.onVideoLoad = this.onVideoLoad.bind(this);\n this.content = React.createRef();\n this.onUnmuteClick = this.onUnmuteClick.bind(this);\n this.onMuteToggle = this.onMuteToggle.bind(this);\n this.onDisplayClick = this.onDisplayClick.bind(this);\n this.onPlay = this.onPlay.bind(this);\n this.hasMuted = false;\n this.player = null;\n this.play = true;\n }\n\n showComments(e) {\n e.preventDefault();\n\n this.setState({\n showComments: true\n });\n\n // Scroll to comments area (delay needed for element to be rendered first)\n setTimeout(() => {\n document\n .getElementById(`post-${this.post.id}-comments`)\n .scrollIntoView({\n behavior: \"smooth\"\n });\n }, 50);\n }\n\n addTimestampToIntextAds(filteredContent) {\n return filteredContent\n .split(this.post.meta_data.uniqueID)\n .join(this.props.timestamp);\n }\n\n componentDidUpdate() {\n if (!this.content.current) {\n return;\n }\n const ratingContainerInContent = this.content.current.querySelector(\n \".outer_rating_container\"\n );\n if (ratingContainerInContent) {\n ReactDOM.render(\n <Rating post={this.post} />,\n ratingContainerInContent\n );\n }\n }\n\n componentDidMount() {\n if (!this.post) {\n return;\n }\n const polls = this.content.current.querySelectorAll(\".poll\");\n polls.forEach(p => {\n window.poll.loaded(p.dataset.questionId);\n });\n // rerender pinterest links\n window.PinUtils?.build?.(this.content.current) ?? false;\n }\n\n onReady(event) {\n this.player = window.jwplayer(this.playerId);\n this.setTrackingForJWPlayer();\n const config = this.player.getConfig();\n // this muting is needed as the package \"react-jw-player\" has issues\n // https://github.com/micnews/react-jw-player/issues/124\n let schedule = config.advertising.schedule;\n const brand = window.location.hostname.split(\".\").reverse()[1];\n this.setState({\n videoTitle:\n this.playerHeading ??\n `Utvalt från ${brand.charAt(0).toUpperCase() + brand.slice(1)}`\n });\n if (!schedule) {\n return;\n }\n const hostparts = window.location.host.split(\".\");\n const subdomain = hostparts[0];\n const domain = `${hostparts[1]}.${hostparts[2]}`;\n if (window.ads && window.ads.getVideoPpId) {\n try {\n window.adsPpId = window.ads.getVideoPpId();\n } catch (err) {\n console.log(err);\n }\n }\n if (window.adsTagUrl) {\n try {\n window.adsTagUrl =\n window.adsTagUrl &&\n window.adsTagUrl\n .replace(\"securepubads.g\", \"pubads.g\")\n .replace(\"output=vast\", \"output=xml_vmap1\") +\n \"&tfcd=0&npa=0&impl=s&vpmute=1&vpa=auto&vpos=preroll&ad_rule=1&cmsid=2546081&plcmt=2\";\n } catch (err) {\n console.log(err);\n }\n }\n const addCustomTags = tag => {\n const url = new URL(tag);\n const search = new URLSearchParams(url.search);\n\n // Use getAll and join in case cust_params is defined multiple times.\n const customParamsString = search.getAll(\"cust_params\").join(\"&\");\n\n // Set out custom params.\n const customParams = new URLSearchParams(customParamsString);\n const verticals = window.aller_ga?.verticals || [];\n customParams.set(\"Vertikal\", verticals.join(','));\n customParams.set(\"pos\", \"auto\");\n customParams.set(\"demandmanager\", \"1\");\n\n // Set abgroup if there is any data.\n // if (this.isVideoOnTop) {\n // customParams.set(\"abgroup\", (this.jwPlayerPosition === 'bottom') ? 'A' : 'B');\n // }\n\n // Rebuild URL.\n search.set(\"cust_params\", customParams.toString());\n\n // Set ppid if there is any data.\n if (window.adsPpId) {\n search.set(\"ppid\", window.adsPpId);\n }\n\n url.search = search.toString();\n return url.toString();\n };\n schedule = schedule.map(scheduled => {\n (scheduled.tag = window.adsTagUrl\n ? window.adsTagUrl\n : scheduled.tag),\n (scheduled.tag = scheduled.tag.replace(\n `7783179/${domain}`,\n `7783179/${domain}/${subdomain}`\n ));\n scheduled.tag = addCustomTags(scheduled.tag);\n return schedule;\n });\n\n config.advertising.schedule = schedule;\n config.floating = { dismissible: true, mode: \"notVisible\" };\n\n this.player.setConfig(config);\n const whitelistedBlogsForAdsState = [\n \"elsa.elle.se\",\n \"sandrabeijer.elle.se\",\n \"fredriksfika.allas.se\"\n ];\n if (whitelistedBlogsForAdsState.includes(window.location.host)) {\n this.setAdsState(this.player);\n }\n }\n\n // set tracking for jwplayer\n setTrackingForJWPlayer() {\n window.cts.jwplayer = window.cts.jwplayer || [];\n window.cts.jwplayer.push({\n ...this.player,\n isTop: false\n });\n }\n // set Ads State\n setAdsState(player) {\n if (window.adStats) {\n player.on(\"adRequest\", response => {\n try {\n if (response) {\n window.adStats.add([\n {\n placement: \"preroll\",\n gptEvent: \"slotRequested\"\n }\n ]);\n window.adStats.push();\n }\n } catch (error) {\n console.warn(`video adwatch error: `, error);\n }\n });\n }\n }\n\n onVideoLoad(event) {\n const {\n video_comm_link,\n video_comm_link_text\n } = this.player.getPlaylistItem();\n\n if (video_comm_link || video_comm_link_text) {\n this.setState({\n exitLink: {\n url: video_comm_link,\n text: video_comm_link_text\n }\n });\n }\n\n // this muting is needed as the package \"react-jw-player\" has issues\n // https://github.com/micnews/react-jw-player/issues/124\n if (this.hasMuted || this.stopJWAutoPlay) {\n return;\n }\n this.hasMuted = true;\n this.player.setMute(true);\n }\n\n onPlay() {\n this.activateUnmute = true;\n if (this.player.getMute()) {\n this.setState({ showUnmute: true });\n }\n }\n\n isRecipe() {\n return (\n (this.props.preview != 1 && this.post.meta_data.isRecipe) ||\n (this.props.preview == 1 && this.post.meta_data.isPreviewRecipe)\n );\n }\n\n addRecipeExtraDataIfRecipe(filtered) {\n const headingSearchSring = '<p class=\"headings-description\">';\n const headingsIndex = filtered.indexOf(headingSearchSring);\n if (headingsIndex !== -1 && this.post.meta_data.recipeExtraHtml) {\n return filtered.replace(\n headingSearchSring,\n `${this.post.meta_data.recipeExtraHtml}${headingSearchSring}`\n );\n }\n const howtoSearchSring = '<div class=\"ingredients-list\">';\n const howtoIndex = filtered.indexOf(headingSearchSring);\n if (howtoIndex !== -1 && this.post.meta_data.recipeExtraHtml) {\n return filtered.replace(\n howtoSearchSring,\n `${this.post.meta_data.recipeExtraHtml}${howtoSearchSring}`\n );\n }\n return filtered;\n }\n\n manipulateFilteredContent() {\n const sanitizeConfig = {\n ADD_TAGS: [\"iframe\"],\n ADD_ATTR: [\n \"allow\",\n \"allowfullscreen\",\n \"frameborder\",\n \"onclick\",\n \"fluid\",\n \"target\"\n ]\n };\n\n const ingress = this.post.meta_data[\"aller_post_introduction\"]\n ? `<p><strong>${this.post.meta_data[\"aller_post_introduction\"]}</strong></p>`\n : \"\";\n let filtered = this.post.filtered;\n filtered = this.addTimestampToIntextAds(filtered);\n filtered = this.addRecipeExtraDataIfRecipe(filtered);\n\n return DOMPurify.sanitize(ingress + filtered, sanitizeConfig);\n }\n\n onUnmuteClick() {\n this.player.setMute(false);\n }\n\n onMuteToggle({ mute }) {\n const showUnmute =\n this.activateUnmute && !this.state.showUnmute && mute\n ? { showUnmute: true }\n : {};\n this.setState({\n mute: mute,\n ...showUnmute\n });\n }\n\n onDisplayClick() {\n /* Remove small sticky on click */\n if (this.state.hasSticky && this.player.getFloating()) {\n this.setState({\n hasSticky: false\n });\n }\n }\n\n showVideoPlayer() {\n return (\n <div\n className={`js-jwplayer__container ${\n this.state.hasSticky ? \"jw-flag-mini-sticky\" : \"\"\n }`}\n >\n <p className=\"js-jwplayer__title h2\">{this.state.videoTitle}</p>\n <div\n className=\"js-jwplayer__ui-container\"\n style={{\n aspectRatio: '16/9',\n }}\n data-video-position={this.jwPlayerPosition}\n >\n <ReactJWPlayer\n className=\"js-jwPlayer\"\n playerId={this.playerID}\n playerScript={`https://cdn.jwplayer.com/libraries/${this.playerID}.js`}\n playlist={`https://cdn.jwplayer.com/v2/playlists/${this.playlistID}`}\n onReady={this.onReady}\n onVideoLoad={this.onVideoLoad}\n onMute={this.onMuteToggle}\n onUnmute={this.onMuteToggle}\n onDisplayClick={this.onDisplayClick}\n onPlay={this.onPlay}\n customProps={this.jwPlayerCustomProps}\n />\n {this.state.showUnmute && (\n <Unmute\n onClick={this.onUnmuteClick}\n isMuted={this.state.mute}\n ></Unmute>\n )}\n\n {this.state.exitLink && (\n <ExitLink\n url={this.state.exitLink.url}\n text={this.state.exitLink.text}\n />\n )}\n </div>\n </div>\n );\n }\n\n render() {\n if (typeof this.post == \"undefined\") {\n return <PostDummy />;\n }\n\n return (\n <div\n className={\n \"col-12 mb-4\" + (this.state.hideAds ? \" hide-ads\" : \"\")\n }\n >\n <div\n className=\"post d-flex flex-column align-items-center\"\n data-post-id={this.post.id}\n >\n <ShareButton\n post={this.post}\n showComments={this.showComments}\n />\n {(this.post.meta_data._ana_is_native == \"1\" ||\n this.post.meta_data.is_affiliate == \"1\") && (\n <div className=\"post_sticky\">\n {this.post.meta_data._ana_is_native == \"1\" &&\n this.post.meta_data._ana_sponsor_brand_name && (\n <div className=\"banner banner--native\">\n <span\n dangerouslySetInnerHTML={{\n __html: this.post.meta_data\n ._ana_sponsor_brand_name\n }}\n ></span>\n {this.post.meta_data\n ._ana_article_tracking_pixel && (\n <img\n src={\n this.post.meta_data\n ._ana_article_tracking_pixel\n }\n alt=\"\"\n />\n )}\n </div>\n )}\n {this.post.meta_data.is_affiliate == \"1\" && (\n <div className=\"banner banner--affiliate\">\n <span\n dangerouslySetInnerHTML={{\n __html: this.post.meta_data\n .affiliate_text\n }}\n ></span>\n </div>\n )}\n </div>\n )}\n <span id={`post-${this.post.id}`} className=\"anchor\" />\n <a href={this.post.url} className=\"d-block mx-auto\">\n <h1>{this.post.title}</h1>\n </a>\n <div className=\"post_head\">\n {this.post.categories[0] && (\n <div className=\"post_category\">\n <a href={`${this.post.categories[0].url}`}>\n {this.post.categories[0].name}\n </a>\n </div>\n )}\n <div className=\"post_date\">\n {this.post.date_time_text ? this.post.date_time_text : this.post.date_text}\n </div>\n {this.isRecipe() && (\n // add rating component\n <Rating post={this.post}></Rating>\n )}\n </div>\n\n <Ad\n uniqueid={this.uniqueID}\n nbr=\"1\"\n timestamp={this.props.timestamp}\n />\n\n {this.props.infinityIndex == 1 &&\n this.playerID &&\n this.playlistID &&\n this.jwPlayerPosition === \"top\" &&\n this.showVideoPlayer()}\n\n <div\n className=\"post_content\"\n dangerouslySetInnerHTML={{\n __html: this.manipulateFilteredContent()\n }}\n ref={this.content}\n ></div>\n <Terms\n terms={[...this.post.categories, ...this.post.tags]}\n />\n {// only load on the first item in infinity scroll\n this.props.infinityIndex == 1 &&\n this.playerID &&\n this.playlistID &&\n this.jwPlayerPosition !== \"top\" &&\n this.showVideoPlayer()}\n </div>\n <Comments\n post={this.post}\n showComments={this.state.showComments}\n onShowComments={this.showComments}\n />\n\n <RecommendedPosts\n post={this.post}\n />\n \n {/* {\n this.props.infinityIndex >= 2 && \n <Ad uniqueid={this.uniqueID} nbr=\"2\" timestamp={this.props.timestamp}/>\n } */}\n\n {// only load on the first item in infinity scroll\n this.props.infinityIndex == 1 && <ShoppingCarousel />}\n </div>\n );\n }\n}\n\nexport default Post;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nfunction getCurriedOnLoad(existingScript, callback) {\n var previousOnload = existingScript.onload || function () {};\n var curriedOnLoad = function curriedOnLoad() {\n previousOnload();\n callback();\n };\n\n return curriedOnLoad;\n}\n\nexports.default = getCurriedOnLoad;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nfunction removeJWPlayerInstance(playerId, context) {\n var player = context.jwplayer && context.jwplayer(playerId);\n\n if (player) {\n player.remove();\n }\n}\n\nexports.default = removeJWPlayerInstance;","(function(window, factory) {\n\tvar lazySizes = factory(window, window.document, Date);\n\twindow.lazySizes = lazySizes;\n\tif(typeof module == 'object' && module.exports){\n\t\tmodule.exports = lazySizes;\n\t}\n}(typeof window != 'undefined' ?\n window : {}, \n/**\n * import(\"./types/global\")\n * @typedef { import(\"./types/lazysizes-config\").LazySizesConfigPartial } LazySizesConfigPartial\n */\nfunction l(window, document, Date) { // Pass in the window Date function also for SSR because the Date class can be lost\n\t'use strict';\n\t/*jshint eqnull:true */\n\n\tvar lazysizes,\n\t\t/**\n\t\t * @type { LazySizesConfigPartial }\n\t\t */\n\t\tlazySizesCfg;\n\n\t(function(){\n\t\tvar prop;\n\n\t\tvar lazySizesDefaults = {\n\t\t\tlazyClass: 'lazyload',\n\t\t\tloadedClass: 'lazyloaded',\n\t\t\tloadingClass: 'lazyloading',\n\t\t\tpreloadClass: 'lazypreload',\n\t\t\terrorClass: 'lazyerror',\n\t\t\t//strictClass: 'lazystrict',\n\t\t\tautosizesClass: 'lazyautosizes',\n\t\t\tfastLoadedClass: 'ls-is-cached',\n\t\t\tiframeLoadMode: 0,\n\t\t\tsrcAttr: 'data-src',\n\t\t\tsrcsetAttr: 'data-srcset',\n\t\t\tsizesAttr: 'data-sizes',\n\t\t\t//preloadAfterLoad: false,\n\t\t\tminSize: 40,\n\t\t\tcustomMedia: {},\n\t\t\tinit: true,\n\t\t\texpFactor: 1.5,\n\t\t\thFac: 0.8,\n\t\t\tloadMode: 2,\n\t\t\tloadHidden: true,\n\t\t\tricTimeout: 0,\n\t\t\tthrottleDelay: 125,\n\t\t};\n\n\t\tlazySizesCfg = window.lazySizesConfig || window.lazysizesConfig || {};\n\n\t\tfor(prop in lazySizesDefaults){\n\t\t\tif(!(prop in lazySizesCfg)){\n\t\t\t\tlazySizesCfg[prop] = lazySizesDefaults[prop];\n\t\t\t}\n\t\t}\n\t})();\n\n\tif (!document || !document.getElementsByClassName) {\n\t\treturn {\n\t\t\tinit: function () {},\n\t\t\t/**\n\t\t\t * @type { LazySizesConfigPartial }\n\t\t\t */\n\t\t\tcfg: lazySizesCfg,\n\t\t\t/**\n\t\t\t * @type { true }\n\t\t\t */\n\t\t\tnoSupport: true,\n\t\t};\n\t}\n\n\tvar docElem = document.documentElement;\n\n\tvar supportPicture = window.HTMLPictureElement;\n\n\tvar _addEventListener = 'addEventListener';\n\n\tvar _getAttribute = 'getAttribute';\n\n\t/**\n\t * Update to bind to window because 'this' becomes null during SSR\n\t * builds.\n\t */\n\tvar addEventListener = window[_addEventListener].bind(window);\n\n\tvar setTimeout = window.setTimeout;\n\n\tvar requestAnimationFrame = window.requestAnimationFrame || setTimeout;\n\n\tvar requestIdleCallback = window.requestIdleCallback;\n\n\tvar regPicture = /^picture$/i;\n\n\tvar loadEvents = ['load', 'error', 'lazyincluded', '_lazyloaded'];\n\n\tvar regClassCache = {};\n\n\tvar forEach = Array.prototype.forEach;\n\n\t/**\n\t * @param ele {Element}\n\t * @param cls {string}\n\t */\n\tvar hasClass = function(ele, cls) {\n\t\tif(!regClassCache[cls]){\n\t\t\tregClassCache[cls] = new RegExp('(\\\\s|^)'+cls+'(\\\\s|$)');\n\t\t}\n\t\treturn regClassCache[cls].test(ele[_getAttribute]('class') || '') && regClassCache[cls];\n\t};\n\n\t/**\n\t * @param ele {Element}\n\t * @param cls {string}\n\t */\n\tvar addClass = function(ele, cls) {\n\t\tif (!hasClass(ele, cls)){\n\t\t\tele.setAttribute('class', (ele[_getAttribute]('class') || '').trim() + ' ' + cls);\n\t\t}\n\t};\n\n\t/**\n\t * @param ele {Element}\n\t * @param cls {string}\n\t */\n\tvar removeClass = function(ele, cls) {\n\t\tvar reg;\n\t\tif ((reg = hasClass(ele,cls))) {\n\t\t\tele.setAttribute('class', (ele[_getAttribute]('class') || '').replace(reg, ' '));\n\t\t}\n\t};\n\n\tvar addRemoveLoadEvents = function(dom, fn, add){\n\t\tvar action = add ? _addEventListener : 'removeEventListener';\n\t\tif(add){\n\t\t\taddRemoveLoadEvents(dom, fn);\n\t\t}\n\t\tloadEvents.forEach(function(evt){\n\t\t\tdom[action](evt, fn);\n\t\t});\n\t};\n\n\t/**\n\t * @param elem { Element }\n\t * @param name { string }\n\t * @param detail { any }\n\t * @param noBubbles { boolean }\n\t * @param noCancelable { boolean }\n\t * @returns { CustomEvent }\n\t */\n\tvar triggerEvent = function(elem, name, detail, noBubbles, noCancelable){\n\t\tvar event = document.createEvent('Event');\n\n\t\tif(!detail){\n\t\t\tdetail = {};\n\t\t}\n\n\t\tdetail.instance = lazysizes;\n\n\t\tevent.initEvent(name, !noBubbles, !noCancelable);\n\n\t\tevent.detail = detail;\n\n\t\telem.dispatchEvent(event);\n\t\treturn event;\n\t};\n\n\tvar updatePolyfill = function (el, full){\n\t\tvar polyfill;\n\t\tif( !supportPicture && ( polyfill = (window.picturefill || lazySizesCfg.pf) ) ){\n\t\t\tif(full && full.src && !el[_getAttribute]('srcset')){\n\t\t\t\tel.setAttribute('srcset', full.src);\n\t\t\t}\n\t\t\tpolyfill({reevaluate: true, elements: [el]});\n\t\t} else if(full && full.src){\n\t\t\tel.src = full.src;\n\t\t}\n\t};\n\n\tvar getCSS = function (elem, style){\n\t\treturn (getComputedStyle(elem, null) || {})[style];\n\t};\n\n\t/**\n\t *\n\t * @param elem { Element }\n\t * @param parent { Element }\n\t * @param [width] {number}\n\t * @returns {number}\n\t */\n\tvar getWidth = function(elem, parent, width){\n\t\twidth = width || elem.offsetWidth;\n\n\t\twhile(width < lazySizesCfg.minSize && parent && !elem._lazysizesWidth){\n\t\t\twidth = parent.offsetWidth;\n\t\t\tparent = parent.parentNode;\n\t\t}\n\n\t\treturn width;\n\t};\n\n\tvar rAF = (function(){\n\t\tvar running, waiting;\n\t\tvar firstFns = [];\n\t\tvar secondFns = [];\n\t\tvar fns = firstFns;\n\n\t\tvar run = function(){\n\t\t\tvar runFns = fns;\n\n\t\t\tfns = firstFns.length ? secondFns : firstFns;\n\n\t\t\trunning = true;\n\t\t\twaiting = false;\n\n\t\t\twhile(runFns.length){\n\t\t\t\trunFns.shift()();\n\t\t\t}\n\n\t\t\trunning = false;\n\t\t};\n\n\t\tvar rafBatch = function(fn, queue){\n\t\t\tif(running && !queue){\n\t\t\t\tfn.apply(this, arguments);\n\t\t\t} else {\n\t\t\t\tfns.push(fn);\n\n\t\t\t\tif(!waiting){\n\t\t\t\t\twaiting = true;\n\t\t\t\t\t(document.hidden ? setTimeout : requestAnimationFrame)(run);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\trafBatch._lsFlush = run;\n\n\t\treturn rafBatch;\n\t})();\n\n\tvar rAFIt = function(fn, simple){\n\t\treturn simple ?\n\t\t\tfunction() {\n\t\t\t\trAF(fn);\n\t\t\t} :\n\t\t\tfunction(){\n\t\t\t\tvar that = this;\n\t\t\t\tvar args = arguments;\n\t\t\t\trAF(function(){\n\t\t\t\t\tfn.apply(that, args);\n\t\t\t\t});\n\t\t\t}\n\t\t;\n\t};\n\n\tvar throttle = function(fn){\n\t\tvar running;\n\t\tvar lastTime = 0;\n\t\tvar gDelay = lazySizesCfg.throttleDelay;\n\t\tvar rICTimeout = lazySizesCfg.ricTimeout;\n\t\tvar run = function(){\n\t\t\trunning = false;\n\t\t\tlastTime = Date.now();\n\t\t\tfn();\n\t\t};\n\t\tvar idleCallback = requestIdleCallback && rICTimeout > 49 ?\n\t\t\tfunction(){\n\t\t\t\trequestIdleCallback(run, {timeout: rICTimeout});\n\n\t\t\t\tif(rICTimeout !== lazySizesCfg.ricTimeout){\n\t\t\t\t\trICTimeout = lazySizesCfg.ricTimeout;\n\t\t\t\t}\n\t\t\t} :\n\t\t\trAFIt(function(){\n\t\t\t\tsetTimeout(run);\n\t\t\t}, true)\n\t\t;\n\n\t\treturn function(isPriority){\n\t\t\tvar delay;\n\n\t\t\tif((isPriority = isPriority === true)){\n\t\t\t\trICTimeout = 33;\n\t\t\t}\n\n\t\t\tif(running){\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\trunning = true;\n\n\t\t\tdelay = gDelay - (Date.now() - lastTime);\n\n\t\t\tif(delay < 0){\n\t\t\t\tdelay = 0;\n\t\t\t}\n\n\t\t\tif(isPriority || delay < 9){\n\t\t\t\tidleCallback();\n\t\t\t} else {\n\t\t\t\tsetTimeout(idleCallback, delay);\n\t\t\t}\n\t\t};\n\t};\n\n\t//based on http://modernjavascript.blogspot.de/2013/08/building-better-debounce.html\n\tvar debounce = function(func) {\n\t\tvar timeout, timestamp;\n\t\tvar wait = 99;\n\t\tvar run = function(){\n\t\t\ttimeout = null;\n\t\t\tfunc();\n\t\t};\n\t\tvar later = function() {\n\t\t\tvar last = Date.now() - timestamp;\n\n\t\t\tif (last < wait) {\n\t\t\t\tsetTimeout(later, wait - last);\n\t\t\t} else {\n\t\t\t\t(requestIdleCallback || run)(run);\n\t\t\t}\n\t\t};\n\n\t\treturn function() {\n\t\t\ttimestamp = Date.now();\n\n\t\t\tif (!timeout) {\n\t\t\t\ttimeout = setTimeout(later, wait);\n\t\t\t}\n\t\t};\n\t};\n\n\tvar loader = (function(){\n\t\tvar preloadElems, isCompleted, resetPreloadingTimer, loadMode, started;\n\n\t\tvar eLvW, elvH, eLtop, eLleft, eLright, eLbottom, isBodyHidden;\n\n\t\tvar regImg = /^img$/i;\n\t\tvar regIframe = /^iframe$/i;\n\n\t\tvar supportScroll = ('onscroll' in window) && !(/(gle|ing)bot/.test(navigator.userAgent));\n\n\t\tvar shrinkExpand = 0;\n\t\tvar currentExpand = 0;\n\n\t\tvar isLoading = 0;\n\t\tvar lowRuns = -1;\n\n\t\tvar resetPreloading = function(e){\n\t\t\tisLoading--;\n\t\t\tif(!e || isLoading < 0 || !e.target){\n\t\t\t\tisLoading = 0;\n\t\t\t}\n\t\t};\n\n\t\tvar isVisible = function (elem) {\n\t\t\tif (isBodyHidden == null) {\n\t\t\t\tisBodyHidden = getCSS(document.body, 'visibility') == 'hidden';\n\t\t\t}\n\n\t\t\treturn isBodyHidden || !(getCSS(elem.parentNode, 'visibility') == 'hidden' && getCSS(elem, 'visibility') == 'hidden');\n\t\t};\n\n\t\tvar isNestedVisible = function(elem, elemExpand){\n\t\t\tvar outerRect;\n\t\t\tvar parent = elem;\n\t\t\tvar visible = isVisible(elem);\n\n\t\t\teLtop -= elemExpand;\n\t\t\teLbottom += elemExpand;\n\t\t\teLleft -= elemExpand;\n\t\t\teLright += elemExpand;\n\n\t\t\twhile(visible && (parent = parent.offsetParent) && parent != document.body && parent != docElem){\n\t\t\t\tvisible = ((getCSS(parent, 'opacity') || 1) > 0);\n\n\t\t\t\tif(visible && getCSS(parent, 'overflow') != 'visible'){\n\t\t\t\t\touterRect = parent.getBoundingClientRect();\n\t\t\t\t\tvisible = eLright > outerRect.left &&\n\t\t\t\t\t\teLleft < outerRect.right &&\n\t\t\t\t\t\teLbottom > outerRect.top - 1 &&\n\t\t\t\t\t\teLtop < outerRect.bottom + 1\n\t\t\t\t\t;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn visible;\n\t\t};\n\n\t\tvar checkElements = function() {\n\t\t\tvar eLlen, i, rect, autoLoadElem, loadedSomething, elemExpand, elemNegativeExpand, elemExpandVal,\n\t\t\t\tbeforeExpandVal, defaultExpand, preloadExpand, hFac;\n\t\t\tvar lazyloadElems = lazysizes.elements;\n\n\t\t\tif((loadMode = lazySizesCfg.loadMode) && isLoading < 8 && (eLlen = lazyloadElems.length)){\n\n\t\t\t\ti = 0;\n\n\t\t\t\tlowRuns++;\n\n\t\t\t\tfor(; i < eLlen; i++){\n\n\t\t\t\t\tif(!lazyloadElems[i] || lazyloadElems[i]._lazyRace){continue;}\n\n\t\t\t\t\tif(!supportScroll || (lazysizes.prematureUnveil && lazysizes.prematureUnveil(lazyloadElems[i]))){unveilElement(lazyloadElems[i]);continue;}\n\n\t\t\t\t\tif(!(elemExpandVal = lazyloadElems[i][_getAttribute]('data-expand')) || !(elemExpand = elemExpandVal * 1)){\n\t\t\t\t\t\telemExpand = currentExpand;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!defaultExpand) {\n\t\t\t\t\t\tdefaultExpand = (!lazySizesCfg.expand || lazySizesCfg.expand < 1) ?\n\t\t\t\t\t\t\tdocElem.clientHeight > 500 && docElem.clientWidth > 500 ? 500 : 370 :\n\t\t\t\t\t\t\tlazySizesCfg.expand;\n\n\t\t\t\t\t\tlazysizes._defEx = defaultExpand;\n\n\t\t\t\t\t\tpreloadExpand = defaultExpand * lazySizesCfg.expFactor;\n\t\t\t\t\t\thFac = lazySizesCfg.hFac;\n\t\t\t\t\t\tisBodyHidden = null;\n\n\t\t\t\t\t\tif(currentExpand < preloadExpand && isLoading < 1 && lowRuns > 2 && loadMode > 2 && !document.hidden){\n\t\t\t\t\t\t\tcurrentExpand = preloadExpand;\n\t\t\t\t\t\t\tlowRuns = 0;\n\t\t\t\t\t\t} else if(loadMode > 1 && lowRuns > 1 && isLoading < 6){\n\t\t\t\t\t\t\tcurrentExpand = defaultExpand;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcurrentExpand = shrinkExpand;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif(beforeExpandVal !== elemExpand){\n\t\t\t\t\t\teLvW = innerWidth + (elemExpand * hFac);\n\t\t\t\t\t\telvH = innerHeight + elemExpand;\n\t\t\t\t\t\telemNegativeExpand = elemExpand * -1;\n\t\t\t\t\t\tbeforeExpandVal = elemExpand;\n\t\t\t\t\t}\n\n\t\t\t\t\trect = lazyloadElems[i].getBoundingClientRect();\n\n\t\t\t\t\tif ((eLbottom = rect.bottom) >= elemNegativeExpand &&\n\t\t\t\t\t\t(eLtop = rect.top) <= elvH &&\n\t\t\t\t\t\t(eLright = rect.right) >= elemNegativeExpand * hFac &&\n\t\t\t\t\t\t(eLleft = rect.left) <= eLvW &&\n\t\t\t\t\t\t(eLbottom || eLright || eLleft || eLtop) &&\n\t\t\t\t\t\t(lazySizesCfg.loadHidden || isVisible(lazyloadElems[i])) &&\n\t\t\t\t\t\t((isCompleted && isLoading < 3 && !elemExpandVal && (loadMode < 3 || lowRuns < 4)) || isNestedVisible(lazyloadElems[i], elemExpand))){\n\t\t\t\t\t\tunveilElement(lazyloadElems[i]);\n\t\t\t\t\t\tloadedSomething = true;\n\t\t\t\t\t\tif(isLoading > 9){break;}\n\t\t\t\t\t} else if(!loadedSomething && isCompleted && !autoLoadElem &&\n\t\t\t\t\t\tisLoading < 4 && lowRuns < 4 && loadMode > 2 &&\n\t\t\t\t\t\t(preloadElems[0] || lazySizesCfg.preloadAfterLoad) &&\n\t\t\t\t\t\t(preloadElems[0] || (!elemExpandVal && ((eLbottom || eLright || eLleft || eLtop) || lazyloadElems[i][_getAttribute](lazySizesCfg.sizesAttr) != 'auto')))){\n\t\t\t\t\t\tautoLoadElem = preloadElems[0] || lazyloadElems[i];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif(autoLoadElem && !loadedSomething){\n\t\t\t\t\tunveilElement(autoLoadElem);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tvar throttledCheckElements = throttle(checkElements);\n\n\t\tvar switchLoadingClass = function(e){\n\t\t\tvar elem = e.target;\n\n\t\t\tif (elem._lazyCache) {\n\t\t\t\tdelete elem._lazyCache;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tresetPreloading(e);\n\t\t\taddClass(elem, lazySizesCfg.loadedClass);\n\t\t\tremoveClass(elem, lazySizesCfg.loadingClass);\n\t\t\taddRemoveLoadEvents(elem, rafSwitchLoadingClass);\n\t\t\ttriggerEvent(elem, 'lazyloaded');\n\t\t};\n\t\tvar rafedSwitchLoadingClass = rAFIt(switchLoadingClass);\n\t\tvar rafSwitchLoadingClass = function(e){\n\t\t\trafedSwitchLoadingClass({target: e.target});\n\t\t};\n\n\t\tvar changeIframeSrc = function(elem, src){\n\t\t\tvar loadMode = elem.getAttribute('data-load-mode') || lazySizesCfg.iframeLoadMode;\n\n\t\t\t// loadMode can be also a string!\n\t\t\tif (loadMode == 0) {\n\t\t\t\telem.contentWindow.location.replace(src);\n\t\t\t} else if (loadMode == 1) {\n\t\t\t\telem.src = src;\n\t\t\t}\n\t\t};\n\n\t\tvar handleSources = function(source){\n\t\t\tvar customMedia;\n\n\t\t\tvar sourceSrcset = source[_getAttribute](lazySizesCfg.srcsetAttr);\n\n\t\t\tif( (customMedia = lazySizesCfg.customMedia[source[_getAttribute]('data-media') || source[_getAttribute]('media')]) ){\n\t\t\t\tsource.setAttribute('media', customMedia);\n\t\t\t}\n\n\t\t\tif(sourceSrcset){\n\t\t\t\tsource.setAttribute('srcset', sourceSrcset);\n\t\t\t}\n\t\t};\n\n\t\tvar lazyUnveil = rAFIt(function (elem, detail, isAuto, sizes, isImg){\n\t\t\tvar src, srcset, parent, isPicture, event, firesLoad;\n\n\t\t\tif(!(event = triggerEvent(elem, 'lazybeforeunveil', detail)).defaultPrevented){\n\n\t\t\t\tif(sizes){\n\t\t\t\t\tif(isAuto){\n\t\t\t\t\t\taddClass(elem, lazySizesCfg.autosizesClass);\n\t\t\t\t\t} else {\n\t\t\t\t\t\telem.setAttribute('sizes', sizes);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tsrcset = elem[_getAttribute](lazySizesCfg.srcsetAttr);\n\t\t\t\tsrc = elem[_getAttribute](lazySizesCfg.srcAttr);\n\n\t\t\t\tif(isImg) {\n\t\t\t\t\tparent = elem.parentNode;\n\t\t\t\t\tisPicture = parent && regPicture.test(parent.nodeName || '');\n\t\t\t\t}\n\n\t\t\t\tfiresLoad = detail.firesLoad || (('src' in elem) && (srcset || src || isPicture));\n\n\t\t\t\tevent = {target: elem};\n\n\t\t\t\taddClass(elem, lazySizesCfg.loadingClass);\n\n\t\t\t\tif(firesLoad){\n\t\t\t\t\tclearTimeout(resetPreloadingTimer);\n\t\t\t\t\tresetPreloadingTimer = setTimeout(resetPreloading, 2500);\n\t\t\t\t\taddRemoveLoadEvents(elem, rafSwitchLoadingClass, true);\n\t\t\t\t}\n\n\t\t\t\tif(isPicture){\n\t\t\t\t\tforEach.call(parent.getElementsByTagName('source'), handleSources);\n\t\t\t\t}\n\n\t\t\t\tif(srcset){\n\t\t\t\t\telem.setAttribute('srcset', srcset);\n\t\t\t\t} else if(src && !isPicture){\n\t\t\t\t\tif(regIframe.test(elem.nodeName)){\n\t\t\t\t\t\tchangeIframeSrc(elem, src);\n\t\t\t\t\t} else {\n\t\t\t\t\t\telem.src = src;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif(isImg && (srcset || isPicture)){\n\t\t\t\t\tupdatePolyfill(elem, {src: src});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(elem._lazyRace){\n\t\t\t\tdelete elem._lazyRace;\n\t\t\t}\n\t\t\tremoveClass(elem, lazySizesCfg.lazyClass);\n\n\t\t\trAF(function(){\n\t\t\t\t// Part of this can be removed as soon as this fix is older: https://bugs.chromium.org/p/chromium/issues/detail?id=7731 (2015)\n\t\t\t\tvar isLoaded = elem.complete && elem.naturalWidth > 1;\n\n\t\t\t\tif( !firesLoad || isLoaded){\n\t\t\t\t\tif (isLoaded) {\n\t\t\t\t\t\taddClass(elem, lazySizesCfg.fastLoadedClass);\n\t\t\t\t\t}\n\t\t\t\t\tswitchLoadingClass(event);\n\t\t\t\t\telem._lazyCache = true;\n\t\t\t\t\tsetTimeout(function(){\n\t\t\t\t\t\tif ('_lazyCache' in elem) {\n\t\t\t\t\t\t\tdelete elem._lazyCache;\n\t\t\t\t\t\t}\n\t\t\t\t\t}, 9);\n\t\t\t\t}\n\t\t\t\tif (elem.loading == 'lazy') {\n\t\t\t\t\tisLoading--;\n\t\t\t\t}\n\t\t\t}, true);\n\t\t});\n\n\t\t/**\n\t\t *\n\t\t * @param elem { Element }\n\t\t */\n\t\tvar unveilElement = function (elem){\n\t\t\tif (elem._lazyRace) {return;}\n\t\t\tvar detail;\n\n\t\t\tvar isImg = regImg.test(elem.nodeName);\n\n\t\t\t//allow using sizes=\"auto\", but don't use. it's invalid. Use data-sizes=\"auto\" or a valid value for sizes instead (i.e.: sizes=\"80vw\")\n\t\t\tvar sizes = isImg && (elem[_getAttribute](lazySizesCfg.sizesAttr) || elem[_getAttribute]('sizes'));\n\t\t\tvar isAuto = sizes == 'auto';\n\n\t\t\tif( (isAuto || !isCompleted) && isImg && (elem[_getAttribute]('src') || elem.srcset) && !elem.complete && !hasClass(elem, lazySizesCfg.errorClass) && hasClass(elem, lazySizesCfg.lazyClass)){return;}\n\n\t\t\tdetail = triggerEvent(elem, 'lazyunveilread').detail;\n\n\t\t\tif(isAuto){\n\t\t\t\t autoSizer.updateElem(elem, true, elem.offsetWidth);\n\t\t\t}\n\n\t\t\telem._lazyRace = true;\n\t\t\tisLoading++;\n\n\t\t\tlazyUnveil(elem, detail, isAuto, sizes, isImg);\n\t\t};\n\n\t\tvar afterScroll = debounce(function(){\n\t\t\tlazySizesCfg.loadMode = 3;\n\t\t\tthrottledCheckElements();\n\t\t});\n\n\t\tvar altLoadmodeScrollListner = function(){\n\t\t\tif(lazySizesCfg.loadMode == 3){\n\t\t\t\tlazySizesCfg.loadMode = 2;\n\t\t\t}\n\t\t\tafterScroll();\n\t\t};\n\n\t\tvar onload = function(){\n\t\t\tif(isCompleted){return;}\n\t\t\tif(Date.now() - started < 999){\n\t\t\t\tsetTimeout(onload, 999);\n\t\t\t\treturn;\n\t\t\t}\n\n\n\t\t\tisCompleted = true;\n\n\t\t\tlazySizesCfg.loadMode = 3;\n\n\t\t\tthrottledCheckElements();\n\n\t\t\taddEventListener('scroll', altLoadmodeScrollListner, true);\n\t\t};\n\n\t\treturn {\n\t\t\t_: function(){\n\t\t\t\tstarted = Date.now();\n\n\t\t\t\tlazysizes.elements = document.getElementsByClassName(lazySizesCfg.lazyClass);\n\t\t\t\tpreloadElems = document.getElementsByClassName(lazySizesCfg.lazyClass + ' ' + lazySizesCfg.preloadClass);\n\n\t\t\t\taddEventListener('scroll', throttledCheckElements, true);\n\n\t\t\t\taddEventListener('resize', throttledCheckElements, true);\n\n\t\t\t\taddEventListener('pageshow', function (e) {\n\t\t\t\t\tif (e.persisted) {\n\t\t\t\t\t\tvar loadingElements = document.querySelectorAll('.' + lazySizesCfg.loadingClass);\n\n\t\t\t\t\t\tif (loadingElements.length && loadingElements.forEach) {\n\t\t\t\t\t\t\trequestAnimationFrame(function () {\n\t\t\t\t\t\t\t\tloadingElements.forEach( function (img) {\n\t\t\t\t\t\t\t\t\tif (img.complete) {\n\t\t\t\t\t\t\t\t\t\tunveilElement(img);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tif(window.MutationObserver){\n\t\t\t\t\tnew MutationObserver( throttledCheckElements ).observe( docElem, {childList: true, subtree: true, attributes: true} );\n\t\t\t\t} else {\n\t\t\t\t\tdocElem[_addEventListener]('DOMNodeInserted', throttledCheckElements, true);\n\t\t\t\t\tdocElem[_addEventListener]('DOMAttrModified', throttledCheckElements, true);\n\t\t\t\t\tsetInterval(throttledCheckElements, 999);\n\t\t\t\t}\n\n\t\t\t\taddEventListener('hashchange', throttledCheckElements, true);\n\n\t\t\t\t//, 'fullscreenchange'\n\t\t\t\t['focus', 'mouseover', 'click', 'load', 'transitionend', 'animationend'].forEach(function(name){\n\t\t\t\t\tdocument[_addEventListener](name, throttledCheckElements, true);\n\t\t\t\t});\n\n\t\t\t\tif((/d$|^c/.test(document.readyState))){\n\t\t\t\t\tonload();\n\t\t\t\t} else {\n\t\t\t\t\taddEventListener('load', onload);\n\t\t\t\t\tdocument[_addEventListener]('DOMContentLoaded', throttledCheckElements);\n\t\t\t\t\tsetTimeout(onload, 20000);\n\t\t\t\t}\n\n\t\t\t\tif(lazysizes.elements.length){\n\t\t\t\t\tcheckElements();\n\t\t\t\t\trAF._lsFlush();\n\t\t\t\t} else {\n\t\t\t\t\tthrottledCheckElements();\n\t\t\t\t}\n\t\t\t},\n\t\t\tcheckElems: throttledCheckElements,\n\t\t\tunveil: unveilElement,\n\t\t\t_aLSL: altLoadmodeScrollListner,\n\t\t};\n\t})();\n\n\n\tvar autoSizer = (function(){\n\t\tvar autosizesElems;\n\n\t\tvar sizeElement = rAFIt(function(elem, parent, event, width){\n\t\t\tvar sources, i, len;\n\t\t\telem._lazysizesWidth = width;\n\t\t\twidth += 'px';\n\n\t\t\telem.setAttribute('sizes', width);\n\n\t\t\tif(regPicture.test(parent.nodeName || '')){\n\t\t\t\tsources = parent.getElementsByTagName('source');\n\t\t\t\tfor(i = 0, len = sources.length; i < len; i++){\n\t\t\t\t\tsources[i].setAttribute('sizes', width);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(!event.detail.dataAttr){\n\t\t\t\tupdatePolyfill(elem, event.detail);\n\t\t\t}\n\t\t});\n\t\t/**\n\t\t *\n\t\t * @param elem {Element}\n\t\t * @param dataAttr\n\t\t * @param [width] { number }\n\t\t */\n\t\tvar getSizeElement = function (elem, dataAttr, width){\n\t\t\tvar event;\n\t\t\tvar parent = elem.parentNode;\n\n\t\t\tif(parent){\n\t\t\t\twidth = getWidth(elem, parent, width);\n\t\t\t\tevent = triggerEvent(elem, 'lazybeforesizes', {width: width, dataAttr: !!dataAttr});\n\n\t\t\t\tif(!event.defaultPrevented){\n\t\t\t\t\twidth = event.detail.width;\n\n\t\t\t\t\tif(width && width !== elem._lazysizesWidth){\n\t\t\t\t\t\tsizeElement(elem, parent, event, width);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tvar updateElementsSizes = function(){\n\t\t\tvar i;\n\t\t\tvar len = autosizesElems.length;\n\t\t\tif(len){\n\t\t\t\ti = 0;\n\n\t\t\t\tfor(; i < len; i++){\n\t\t\t\t\tgetSizeElement(autosizesElems[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tvar debouncedUpdateElementsSizes = debounce(updateElementsSizes);\n\n\t\treturn {\n\t\t\t_: function(){\n\t\t\t\tautosizesElems = document.getElementsByClassName(lazySizesCfg.autosizesClass);\n\t\t\t\taddEventListener('resize', debouncedUpdateElementsSizes);\n\t\t\t},\n\t\t\tcheckElems: debouncedUpdateElementsSizes,\n\t\t\tupdateElem: getSizeElement\n\t\t};\n\t})();\n\n\tvar init = function(){\n\t\tif(!init.i && document.getElementsByClassName){\n\t\t\tinit.i = true;\n\t\t\tautoSizer._();\n\t\t\tloader._();\n\t\t}\n\t};\n\n\tsetTimeout(function(){\n\t\tif(lazySizesCfg.init){\n\t\t\tinit();\n\t\t}\n\t});\n\n\tlazysizes = {\n\t\t/**\n\t\t * @type { LazySizesConfigPartial }\n\t\t */\n\t\tcfg: lazySizesCfg,\n\t\tautoSizer: autoSizer,\n\t\tloader: loader,\n\t\tinit: init,\n\t\tuP: updatePolyfill,\n\t\taC: addClass,\n\t\trC: removeClass,\n\t\thC: hasClass,\n\t\tfire: triggerEvent,\n\t\tgW: getWidth,\n\t\trAF: rAF,\n\t};\n\n\treturn lazysizes;\n}\n));\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getEventNameFromProp = require('./get-event-name-from-prop');\n\nvar _getEventNameFromProp2 = _interopRequireDefault(_getEventNameFromProp);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction initialize(_ref) {\n var component = _ref.component,\n player = _ref.player,\n playerOpts = _ref.playerOpts;\n\n function _onBeforePlay(event) {\n component.eventHandlers.onBeforePlay(event, player);\n }\n\n player.setup(playerOpts);\n\n var eventsToInitialize = {};\n\n Object.keys(component.props).forEach(function (prop) {\n var eventName = (0, _getEventNameFromProp2.default)(prop);\n\n if (eventName) {\n eventsToInitialize[eventName] = component.props[prop];\n }\n });\n\n eventsToInitialize.adPlay = component.eventHandlers.onAdPlay;\n eventsToInitialize.beforeComplete = component.props.onOneHundredPercent;\n eventsToInitialize.beforePlay = _onBeforePlay;\n eventsToInitialize.fullscreen = component.eventHandlers.onFullScreen;\n eventsToInitialize.mute = component.eventHandlers.onMute;\n eventsToInitialize.play = component.eventHandlers.onPlay;\n eventsToInitialize.playlistItem = component.eventHandlers.onVideoLoad;\n eventsToInitialize.time = component.eventHandlers.onTime;\n\n Object.keys(eventsToInitialize).forEach(function (event) {\n player.on(event, eventsToInitialize[event]);\n });\n}\n\nexports.default = initialize;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nfunction onBeforePlay(event, player) {\n var currentVideo = player.getPlaylistItem();\n\n if (!this.state.hasPlayed && !this.state.adHasPlayed && typeof this.props.generatePrerollUrl === 'function') {\n player.playAd(this.props.generatePrerollUrl(currentVideo));\n }\n}\n\nexports.default = onBeforePlay;","/*! @license DOMPurify 2.3.4 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/2.3.4/LICENSE */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = global || self, global.DOMPurify = factory());\n}(this, function () { 'use strict';\n\n function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\n var hasOwnProperty = Object.hasOwnProperty,\n setPrototypeOf = Object.setPrototypeOf,\n isFrozen = Object.isFrozen,\n getPrototypeOf = Object.getPrototypeOf,\n getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n var freeze = Object.freeze,\n seal = Object.seal,\n create = Object.create; // eslint-disable-line import/no-mutable-exports\n\n var _ref = typeof Reflect !== 'undefined' && Reflect,\n apply = _ref.apply,\n construct = _ref.construct;\n\n if (!apply) {\n apply = function apply(fun, thisValue, args) {\n return fun.apply(thisValue, args);\n };\n }\n\n if (!freeze) {\n freeze = function freeze(x) {\n return x;\n };\n }\n\n if (!seal) {\n seal = function seal(x) {\n return x;\n };\n }\n\n if (!construct) {\n construct = function construct(Func, args) {\n return new (Function.prototype.bind.apply(Func, [null].concat(_toConsumableArray(args))))();\n };\n }\n\n var arrayForEach = unapply(Array.prototype.forEach);\n var arrayPop = unapply(Array.prototype.pop);\n var arrayPush = unapply(Array.prototype.push);\n\n var stringToLowerCase = unapply(String.prototype.toLowerCase);\n var stringMatch = unapply(String.prototype.match);\n var stringReplace = unapply(String.prototype.replace);\n var stringIndexOf = unapply(String.prototype.indexOf);\n var stringTrim = unapply(String.prototype.trim);\n\n var regExpTest = unapply(RegExp.prototype.test);\n\n var typeErrorCreate = unconstruct(TypeError);\n\n function unapply(func) {\n return function (thisArg) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return apply(func, thisArg, args);\n };\n }\n\n function unconstruct(func) {\n return function () {\n for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return construct(func, args);\n };\n }\n\n /* Add properties to a lookup table */\n function addToSet(set, array) {\n if (setPrototypeOf) {\n // Make 'in' and truthy checks like Boolean(set.constructor)\n // independent of any properties defined on Object.prototype.\n // Prevent prototype setters from intercepting set as a this value.\n setPrototypeOf(set, null);\n }\n\n var l = array.length;\n while (l--) {\n var element = array[l];\n if (typeof element === 'string') {\n var lcElement = stringToLowerCase(element);\n if (lcElement !== element) {\n // Config presets (e.g. tags.js, attrs.js) are immutable.\n if (!isFrozen(array)) {\n array[l] = lcElement;\n }\n\n element = lcElement;\n }\n }\n\n set[element] = true;\n }\n\n return set;\n }\n\n /* Shallow clone an object */\n function clone(object) {\n var newObject = create(null);\n\n var property = void 0;\n for (property in object) {\n if (apply(hasOwnProperty, object, [property])) {\n newObject[property] = object[property];\n }\n }\n\n return newObject;\n }\n\n /* IE10 doesn't support __lookupGetter__ so lets'\n * simulate it. It also automatically checks\n * if the prop is function or getter and behaves\n * accordingly. */\n function lookupGetter(object, prop) {\n while (object !== null) {\n var desc = getOwnPropertyDescriptor(object, prop);\n if (desc) {\n if (desc.get) {\n return unapply(desc.get);\n }\n\n if (typeof desc.value === 'function') {\n return unapply(desc.value);\n }\n }\n\n object = getPrototypeOf(object);\n }\n\n function fallbackValue(element) {\n console.warn('fallback value for', element);\n return null;\n }\n\n return fallbackValue;\n }\n\n var html = freeze(['a', 'abbr', 'acronym', 'address', 'area', 'article', 'aside', 'audio', 'b', 'bdi', 'bdo', 'big', 'blink', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'center', 'cite', 'code', 'col', 'colgroup', 'content', 'data', 'datalist', 'dd', 'decorator', 'del', 'details', 'dfn', 'dialog', 'dir', 'div', 'dl', 'dt', 'element', 'em', 'fieldset', 'figcaption', 'figure', 'font', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'img', 'input', 'ins', 'kbd', 'label', 'legend', 'li', 'main', 'map', 'mark', 'marquee', 'menu', 'menuitem', 'meter', 'nav', 'nobr', 'ol', 'optgroup', 'option', 'output', 'p', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'section', 'select', 'shadow', 'small', 'source', 'spacer', 'span', 'strike', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'template', 'textarea', 'tfoot', 'th', 'thead', 'time', 'tr', 'track', 'tt', 'u', 'ul', 'var', 'video', 'wbr']);\n\n // SVG\n var svg = freeze(['svg', 'a', 'altglyph', 'altglyphdef', 'altglyphitem', 'animatecolor', 'animatemotion', 'animatetransform', 'circle', 'clippath', 'defs', 'desc', 'ellipse', 'filter', 'font', 'g', 'glyph', 'glyphref', 'hkern', 'image', 'line', 'lineargradient', 'marker', 'mask', 'metadata', 'mpath', 'path', 'pattern', 'polygon', 'polyline', 'radialgradient', 'rect', 'stop', 'style', 'switch', 'symbol', 'text', 'textpath', 'title', 'tref', 'tspan', 'view', 'vkern']);\n\n var svgFilters = freeze(['feBlend', 'feColorMatrix', 'feComponentTransfer', 'feComposite', 'feConvolveMatrix', 'feDiffuseLighting', 'feDisplacementMap', 'feDistantLight', 'feFlood', 'feFuncA', 'feFuncB', 'feFuncG', 'feFuncR', 'feGaussianBlur', 'feImage', 'feMerge', 'feMergeNode', 'feMorphology', 'feOffset', 'fePointLight', 'feSpecularLighting', 'feSpotLight', 'feTile', 'feTurbulence']);\n\n // List of SVG elements that are disallowed by default.\n // We still need to know them so that we can do namespace\n // checks properly in case one wants to add them to\n // allow-list.\n var svgDisallowed = freeze(['animate', 'color-profile', 'cursor', 'discard', 'fedropshadow', 'font-face', 'font-face-format', 'font-face-name', 'font-face-src', 'font-face-uri', 'foreignobject', 'hatch', 'hatchpath', 'mesh', 'meshgradient', 'meshpatch', 'meshrow', 'missing-glyph', 'script', 'set', 'solidcolor', 'unknown', 'use']);\n\n var mathMl = freeze(['math', 'menclose', 'merror', 'mfenced', 'mfrac', 'mglyph', 'mi', 'mlabeledtr', 'mmultiscripts', 'mn', 'mo', 'mover', 'mpadded', 'mphantom', 'mroot', 'mrow', 'ms', 'mspace', 'msqrt', 'mstyle', 'msub', 'msup', 'msubsup', 'mtable', 'mtd', 'mtext', 'mtr', 'munder', 'munderover']);\n\n // Similarly to SVG, we want to know all MathML elements,\n // even those that we disallow by default.\n var mathMlDisallowed = freeze(['maction', 'maligngroup', 'malignmark', 'mlongdiv', 'mscarries', 'mscarry', 'msgroup', 'mstack', 'msline', 'msrow', 'semantics', 'annotation', 'annotation-xml', 'mprescripts', 'none']);\n\n var text = freeze(['#text']);\n\n var html$1 = freeze(['accept', 'action', 'align', 'alt', 'autocapitalize', 'autocomplete', 'autopictureinpicture', 'autoplay', 'background', 'bgcolor', 'border', 'capture', 'cellpadding', 'cellspacing', 'checked', 'cite', 'class', 'clear', 'color', 'cols', 'colspan', 'controls', 'controlslist', 'coords', 'crossorigin', 'datetime', 'decoding', 'default', 'dir', 'disabled', 'disablepictureinpicture', 'disableremoteplayback', 'download', 'draggable', 'enctype', 'enterkeyhint', 'face', 'for', 'headers', 'height', 'hidden', 'high', 'href', 'hreflang', 'id', 'inputmode', 'integrity', 'ismap', 'kind', 'label', 'lang', 'list', 'loading', 'loop', 'low', 'max', 'maxlength', 'media', 'method', 'min', 'minlength', 'multiple', 'muted', 'name', 'nonce', 'noshade', 'novalidate', 'nowrap', 'open', 'optimum', 'pattern', 'placeholder', 'playsinline', 'poster', 'preload', 'pubdate', 'radiogroup', 'readonly', 'rel', 'required', 'rev', 'reversed', 'role', 'rows', 'rowspan', 'spellcheck', 'scope', 'selected', 'shape', 'size', 'sizes', 'span', 'srclang', 'start', 'src', 'srcset', 'step', 'style', 'summary', 'tabindex', 'title', 'translate', 'type', 'usemap', 'valign', 'value', 'width', 'xmlns', 'slot']);\n\n var svg$1 = freeze(['accent-height', 'accumulate', 'additive', 'alignment-baseline', 'ascent', 'attributename', 'attributetype', 'azimuth', 'basefrequency', 'baseline-shift', 'begin', 'bias', 'by', 'class', 'clip', 'clippathunits', 'clip-path', 'clip-rule', 'color', 'color-interpolation', 'color-interpolation-filters', 'color-profile', 'color-rendering', 'cx', 'cy', 'd', 'dx', 'dy', 'diffuseconstant', 'direction', 'display', 'divisor', 'dur', 'edgemode', 'elevation', 'end', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'filterunits', 'flood-color', 'flood-opacity', 'font-family', 'font-size', 'font-size-adjust', 'font-stretch', 'font-style', 'font-variant', 'font-weight', 'fx', 'fy', 'g1', 'g2', 'glyph-name', 'glyphref', 'gradientunits', 'gradienttransform', 'height', 'href', 'id', 'image-rendering', 'in', 'in2', 'k', 'k1', 'k2', 'k3', 'k4', 'kerning', 'keypoints', 'keysplines', 'keytimes', 'lang', 'lengthadjust', 'letter-spacing', 'kernelmatrix', 'kernelunitlength', 'lighting-color', 'local', 'marker-end', 'marker-mid', 'marker-start', 'markerheight', 'markerunits', 'markerwidth', 'maskcontentunits', 'maskunits', 'max', 'mask', 'media', 'method', 'mode', 'min', 'name', 'numoctaves', 'offset', 'operator', 'opacity', 'order', 'orient', 'orientation', 'origin', 'overflow', 'paint-order', 'path', 'pathlength', 'patterncontentunits', 'patterntransform', 'patternunits', 'points', 'preservealpha', 'preserveaspectratio', 'primitiveunits', 'r', 'rx', 'ry', 'radius', 'refx', 'refy', 'repeatcount', 'repeatdur', 'restart', 'result', 'rotate', 'scale', 'seed', 'shape-rendering', 'specularconstant', 'specularexponent', 'spreadmethod', 'startoffset', 'stddeviation', 'stitchtiles', 'stop-color', 'stop-opacity', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke', 'stroke-width', 'style', 'surfacescale', 'systemlanguage', 'tabindex', 'targetx', 'targety', 'transform', 'text-anchor', 'text-decoration', 'text-rendering', 'textlength', 'type', 'u1', 'u2', 'unicode', 'values', 'viewbox', 'visibility', 'version', 'vert-adv-y', 'vert-origin-x', 'vert-origin-y', 'width', 'word-spacing', 'wrap', 'writing-mode', 'xchannelselector', 'ychannelselector', 'x', 'x1', 'x2', 'xmlns', 'y', 'y1', 'y2', 'z', 'zoomandpan']);\n\n var mathMl$1 = freeze(['accent', 'accentunder', 'align', 'bevelled', 'close', 'columnsalign', 'columnlines', 'columnspan', 'denomalign', 'depth', 'dir', 'display', 'displaystyle', 'encoding', 'fence', 'frame', 'height', 'href', 'id', 'largeop', 'length', 'linethickness', 'lspace', 'lquote', 'mathbackground', 'mathcolor', 'mathsize', 'mathvariant', 'maxsize', 'minsize', 'movablelimits', 'notation', 'numalign', 'open', 'rowalign', 'rowlines', 'rowspacing', 'rowspan', 'rspace', 'rquote', 'scriptlevel', 'scriptminsize', 'scriptsizemultiplier', 'selection', 'separator', 'separators', 'stretchy', 'subscriptshift', 'supscriptshift', 'symmetric', 'voffset', 'width', 'xmlns']);\n\n var xml = freeze(['xlink:href', 'xml:id', 'xlink:title', 'xml:space', 'xmlns:xlink']);\n\n // eslint-disable-next-line unicorn/better-regex\n var MUSTACHE_EXPR = seal(/\\{\\{[\\s\\S]*|[\\s\\S]*\\}\\}/gm); // Specify template detection regex for SAFE_FOR_TEMPLATES mode\n var ERB_EXPR = seal(/<%[\\s\\S]*|[\\s\\S]*%>/gm);\n var DATA_ATTR = seal(/^data-[\\-\\w.\\u00B7-\\uFFFF]/); // eslint-disable-line no-useless-escape\n var ARIA_ATTR = seal(/^aria-[\\-\\w]+$/); // eslint-disable-line no-useless-escape\n var IS_ALLOWED_URI = seal(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i // eslint-disable-line no-useless-escape\n );\n var IS_SCRIPT_OR_DATA = seal(/^(?:\\w+script|data):/i);\n var ATTR_WHITESPACE = seal(/[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205F\\u3000]/g // eslint-disable-line no-control-regex\n );\n\n var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n function _toConsumableArray$1(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\n var getGlobal = function getGlobal() {\n return typeof window === 'undefined' ? null : window;\n };\n\n /**\n * Creates a no-op policy for internal use only.\n * Don't export this function outside this module!\n * @param {?TrustedTypePolicyFactory} trustedTypes The policy factory.\n * @param {Document} document The document object (to determine policy name suffix)\n * @return {?TrustedTypePolicy} The policy created (or null, if Trusted Types\n * are not supported).\n */\n var _createTrustedTypesPolicy = function _createTrustedTypesPolicy(trustedTypes, document) {\n if ((typeof trustedTypes === 'undefined' ? 'undefined' : _typeof(trustedTypes)) !== 'object' || typeof trustedTypes.createPolicy !== 'function') {\n return null;\n }\n\n // Allow the callers to control the unique policy name\n // by adding a data-tt-policy-suffix to the script element with the DOMPurify.\n // Policy creation with duplicate names throws in Trusted Types.\n var suffix = null;\n var ATTR_NAME = 'data-tt-policy-suffix';\n if (document.currentScript && document.currentScript.hasAttribute(ATTR_NAME)) {\n suffix = document.currentScript.getAttribute(ATTR_NAME);\n }\n\n var policyName = 'dompurify' + (suffix ? '#' + suffix : '');\n\n try {\n return trustedTypes.createPolicy(policyName, {\n createHTML: function createHTML(html$$1) {\n return html$$1;\n }\n });\n } catch (_) {\n // Policy creation failed (most likely another DOMPurify script has\n // already run). Skip creating the policy, as this will only cause errors\n // if TT are enforced.\n console.warn('TrustedTypes policy ' + policyName + ' could not be created.');\n return null;\n }\n };\n\n function createDOMPurify() {\n var window = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getGlobal();\n\n var DOMPurify = function DOMPurify(root) {\n return createDOMPurify(root);\n };\n\n /**\n * Version label, exposed for easier checks\n * if DOMPurify is up to date or not\n */\n DOMPurify.version = '2.3.4';\n\n /**\n * Array of elements that DOMPurify removed during sanitation.\n * Empty if nothing was removed.\n */\n DOMPurify.removed = [];\n\n if (!window || !window.document || window.document.nodeType !== 9) {\n // Not running in a browser, provide a factory function\n // so that you can pass your own Window\n DOMPurify.isSupported = false;\n\n return DOMPurify;\n }\n\n var originalDocument = window.document;\n\n var document = window.document;\n var DocumentFragment = window.DocumentFragment,\n HTMLTemplateElement = window.HTMLTemplateElement,\n Node = window.Node,\n Element = window.Element,\n NodeFilter = window.NodeFilter,\n _window$NamedNodeMap = window.NamedNodeMap,\n NamedNodeMap = _window$NamedNodeMap === undefined ? window.NamedNodeMap || window.MozNamedAttrMap : _window$NamedNodeMap,\n HTMLFormElement = window.HTMLFormElement,\n DOMParser = window.DOMParser,\n trustedTypes = window.trustedTypes;\n\n\n var ElementPrototype = Element.prototype;\n\n var cloneNode = lookupGetter(ElementPrototype, 'cloneNode');\n var getNextSibling = lookupGetter(ElementPrototype, 'nextSibling');\n var getChildNodes = lookupGetter(ElementPrototype, 'childNodes');\n var getParentNode = lookupGetter(ElementPrototype, 'parentNode');\n\n // As per issue #47, the web-components registry is inherited by a\n // new document created via createHTMLDocument. As per the spec\n // (http://w3c.github.io/webcomponents/spec/custom/#creating-and-passing-registries)\n // a new empty registry is used when creating a template contents owner\n // document, so we use that as our parent document to ensure nothing\n // is inherited.\n if (typeof HTMLTemplateElement === 'function') {\n var template = document.createElement('template');\n if (template.content && template.content.ownerDocument) {\n document = template.content.ownerDocument;\n }\n }\n\n var trustedTypesPolicy = _createTrustedTypesPolicy(trustedTypes, originalDocument);\n var emptyHTML = trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML('') : '';\n\n var _document = document,\n implementation = _document.implementation,\n createNodeIterator = _document.createNodeIterator,\n createDocumentFragment = _document.createDocumentFragment,\n getElementsByTagName = _document.getElementsByTagName;\n var importNode = originalDocument.importNode;\n\n\n var documentMode = {};\n try {\n documentMode = clone(document).documentMode ? document.documentMode : {};\n } catch (_) {}\n\n var hooks = {};\n\n /**\n * Expose whether this browser supports running the full DOMPurify.\n */\n DOMPurify.isSupported = typeof getParentNode === 'function' && implementation && typeof implementation.createHTMLDocument !== 'undefined' && documentMode !== 9;\n\n var MUSTACHE_EXPR$$1 = MUSTACHE_EXPR,\n ERB_EXPR$$1 = ERB_EXPR,\n DATA_ATTR$$1 = DATA_ATTR,\n ARIA_ATTR$$1 = ARIA_ATTR,\n IS_SCRIPT_OR_DATA$$1 = IS_SCRIPT_OR_DATA,\n ATTR_WHITESPACE$$1 = ATTR_WHITESPACE;\n var IS_ALLOWED_URI$$1 = IS_ALLOWED_URI;\n\n /**\n * We consider the elements and attributes below to be safe. Ideally\n * don't add any new ones but feel free to remove unwanted ones.\n */\n\n /* allowed element names */\n\n var ALLOWED_TAGS = null;\n var DEFAULT_ALLOWED_TAGS = addToSet({}, [].concat(_toConsumableArray$1(html), _toConsumableArray$1(svg), _toConsumableArray$1(svgFilters), _toConsumableArray$1(mathMl), _toConsumableArray$1(text)));\n\n /* Allowed attribute names */\n var ALLOWED_ATTR = null;\n var DEFAULT_ALLOWED_ATTR = addToSet({}, [].concat(_toConsumableArray$1(html$1), _toConsumableArray$1(svg$1), _toConsumableArray$1(mathMl$1), _toConsumableArray$1(xml)));\n\n /*\n * Configure how DOMPUrify should handle custom elements and their attributes as well as customized built-in elements.\n * @property {RegExp|Function|null} tagNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any custom elements)\n * @property {RegExp|Function|null} attributeNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any attributes not on the allow list)\n * @property {boolean} allowCustomizedBuiltInElements allow custom elements derived from built-ins if they pass CUSTOM_ELEMENT_HANDLING.tagNameCheck. Default: `false`.\n */\n var CUSTOM_ELEMENT_HANDLING = Object.seal(Object.create(null, {\n tagNameCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null\n },\n attributeNameCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null\n },\n allowCustomizedBuiltInElements: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: false\n }\n }));\n\n /* Explicitly forbidden tags (overrides ALLOWED_TAGS/ADD_TAGS) */\n var FORBID_TAGS = null;\n\n /* Explicitly forbidden attributes (overrides ALLOWED_ATTR/ADD_ATTR) */\n var FORBID_ATTR = null;\n\n /* Decide if ARIA attributes are okay */\n var ALLOW_ARIA_ATTR = true;\n\n /* Decide if custom data attributes are okay */\n var ALLOW_DATA_ATTR = true;\n\n /* Decide if unknown protocols are okay */\n var ALLOW_UNKNOWN_PROTOCOLS = false;\n\n /* Output should be safe for common template engines.\n * This means, DOMPurify removes data attributes, mustaches and ERB\n */\n var SAFE_FOR_TEMPLATES = false;\n\n /* Decide if document with <html>... should be returned */\n var WHOLE_DOCUMENT = false;\n\n /* Track whether config is already set on this instance of DOMPurify. */\n var SET_CONFIG = false;\n\n /* Decide if all elements (e.g. style, script) must be children of\n * document.body. By default, browsers might move them to document.head */\n var FORCE_BODY = false;\n\n /* Decide if a DOM `HTMLBodyElement` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported).\n * If `WHOLE_DOCUMENT` is enabled a `HTMLHtmlElement` will be returned instead\n */\n var RETURN_DOM = false;\n\n /* Decide if a DOM `DocumentFragment` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported) */\n var RETURN_DOM_FRAGMENT = false;\n\n /* Try to return a Trusted Type object instead of a string, return a string in\n * case Trusted Types are not supported */\n var RETURN_TRUSTED_TYPE = false;\n\n /* Output should be free from DOM clobbering attacks? */\n var SANITIZE_DOM = true;\n\n /* Keep element content when removing element? */\n var KEEP_CONTENT = true;\n\n /* If a `Node` is passed to sanitize(), then performs sanitization in-place instead\n * of importing it into a new Document and returning a sanitized copy */\n var IN_PLACE = false;\n\n /* Allow usage of profiles like html, svg and mathMl */\n var USE_PROFILES = {};\n\n /* Tags to ignore content of when KEEP_CONTENT is true */\n var FORBID_CONTENTS = null;\n var DEFAULT_FORBID_CONTENTS = addToSet({}, ['annotation-xml', 'audio', 'colgroup', 'desc', 'foreignobject', 'head', 'iframe', 'math', 'mi', 'mn', 'mo', 'ms', 'mtext', 'noembed', 'noframes', 'noscript', 'plaintext', 'script', 'style', 'svg', 'template', 'thead', 'title', 'video', 'xmp']);\n\n /* Tags that are safe for data: URIs */\n var DATA_URI_TAGS = null;\n var DEFAULT_DATA_URI_TAGS = addToSet({}, ['audio', 'video', 'img', 'source', 'image', 'track']);\n\n /* Attributes safe for values like \"javascript:\" */\n var URI_SAFE_ATTRIBUTES = null;\n var DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, ['alt', 'class', 'for', 'id', 'label', 'name', 'pattern', 'placeholder', 'role', 'summary', 'title', 'value', 'style', 'xmlns']);\n\n var MATHML_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';\n var SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\n var HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\n /* Document namespace */\n var NAMESPACE = HTML_NAMESPACE;\n var IS_EMPTY_INPUT = false;\n\n /* Parsing of strict XHTML documents */\n var PARSER_MEDIA_TYPE = void 0;\n var SUPPORTED_PARSER_MEDIA_TYPES = ['application/xhtml+xml', 'text/html'];\n var DEFAULT_PARSER_MEDIA_TYPE = 'text/html';\n var transformCaseFunc = void 0;\n\n /* Keep a reference to config to pass to hooks */\n var CONFIG = null;\n\n /* Ideally, do not touch anything below this line */\n /* ______________________________________________ */\n\n var formElement = document.createElement('form');\n\n var isRegexOrFunction = function isRegexOrFunction(testValue) {\n return testValue instanceof RegExp || testValue instanceof Function;\n };\n\n /**\n * _parseConfig\n *\n * @param {Object} cfg optional config literal\n */\n // eslint-disable-next-line complexity\n var _parseConfig = function _parseConfig(cfg) {\n if (CONFIG && CONFIG === cfg) {\n return;\n }\n\n /* Shield configuration object from tampering */\n if (!cfg || (typeof cfg === 'undefined' ? 'undefined' : _typeof(cfg)) !== 'object') {\n cfg = {};\n }\n\n /* Shield configuration object from prototype pollution */\n cfg = clone(cfg);\n\n /* Set configuration parameters */\n ALLOWED_TAGS = 'ALLOWED_TAGS' in cfg ? addToSet({}, cfg.ALLOWED_TAGS) : DEFAULT_ALLOWED_TAGS;\n ALLOWED_ATTR = 'ALLOWED_ATTR' in cfg ? addToSet({}, cfg.ALLOWED_ATTR) : DEFAULT_ALLOWED_ATTR;\n URI_SAFE_ATTRIBUTES = 'ADD_URI_SAFE_ATTR' in cfg ? addToSet(clone(DEFAULT_URI_SAFE_ATTRIBUTES), cfg.ADD_URI_SAFE_ATTR) : DEFAULT_URI_SAFE_ATTRIBUTES;\n DATA_URI_TAGS = 'ADD_DATA_URI_TAGS' in cfg ? addToSet(clone(DEFAULT_DATA_URI_TAGS), cfg.ADD_DATA_URI_TAGS) : DEFAULT_DATA_URI_TAGS;\n FORBID_CONTENTS = 'FORBID_CONTENTS' in cfg ? addToSet({}, cfg.FORBID_CONTENTS) : DEFAULT_FORBID_CONTENTS;\n FORBID_TAGS = 'FORBID_TAGS' in cfg ? addToSet({}, cfg.FORBID_TAGS) : {};\n FORBID_ATTR = 'FORBID_ATTR' in cfg ? addToSet({}, cfg.FORBID_ATTR) : {};\n USE_PROFILES = 'USE_PROFILES' in cfg ? cfg.USE_PROFILES : false;\n ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false; // Default true\n ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false; // Default true\n ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false; // Default false\n SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false; // Default false\n WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false; // Default false\n RETURN_DOM = cfg.RETURN_DOM || false; // Default false\n RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false; // Default false\n RETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false; // Default false\n FORCE_BODY = cfg.FORCE_BODY || false; // Default false\n SANITIZE_DOM = cfg.SANITIZE_DOM !== false; // Default true\n KEEP_CONTENT = cfg.KEEP_CONTENT !== false; // Default true\n IN_PLACE = cfg.IN_PLACE || false; // Default false\n IS_ALLOWED_URI$$1 = cfg.ALLOWED_URI_REGEXP || IS_ALLOWED_URI$$1;\n NAMESPACE = cfg.NAMESPACE || HTML_NAMESPACE;\n if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck)) {\n CUSTOM_ELEMENT_HANDLING.tagNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck;\n }\n\n if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)) {\n CUSTOM_ELEMENT_HANDLING.attributeNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck;\n }\n\n if (cfg.CUSTOM_ELEMENT_HANDLING && typeof cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements === 'boolean') {\n CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements = cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements;\n }\n\n PARSER_MEDIA_TYPE =\n // eslint-disable-next-line unicorn/prefer-includes\n SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1 ? PARSER_MEDIA_TYPE = DEFAULT_PARSER_MEDIA_TYPE : PARSER_MEDIA_TYPE = cfg.PARSER_MEDIA_TYPE;\n\n // HTML tags and attributes are not case-sensitive, converting to lowercase. Keeping XHTML as is.\n transformCaseFunc = PARSER_MEDIA_TYPE === 'application/xhtml+xml' ? function (x) {\n return x;\n } : stringToLowerCase;\n\n if (SAFE_FOR_TEMPLATES) {\n ALLOW_DATA_ATTR = false;\n }\n\n if (RETURN_DOM_FRAGMENT) {\n RETURN_DOM = true;\n }\n\n /* Parse profile info */\n if (USE_PROFILES) {\n ALLOWED_TAGS = addToSet({}, [].concat(_toConsumableArray$1(text)));\n ALLOWED_ATTR = [];\n if (USE_PROFILES.html === true) {\n addToSet(ALLOWED_TAGS, html);\n addToSet(ALLOWED_ATTR, html$1);\n }\n\n if (USE_PROFILES.svg === true) {\n addToSet(ALLOWED_TAGS, svg);\n addToSet(ALLOWED_ATTR, svg$1);\n addToSet(ALLOWED_ATTR, xml);\n }\n\n if (USE_PROFILES.svgFilters === true) {\n addToSet(ALLOWED_TAGS, svgFilters);\n addToSet(ALLOWED_ATTR, svg$1);\n addToSet(ALLOWED_ATTR, xml);\n }\n\n if (USE_PROFILES.mathMl === true) {\n addToSet(ALLOWED_TAGS, mathMl);\n addToSet(ALLOWED_ATTR, mathMl$1);\n addToSet(ALLOWED_ATTR, xml);\n }\n }\n\n /* Merge configuration parameters */\n if (cfg.ADD_TAGS) {\n if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {\n ALLOWED_TAGS = clone(ALLOWED_TAGS);\n }\n\n addToSet(ALLOWED_TAGS, cfg.ADD_TAGS);\n }\n\n if (cfg.ADD_ATTR) {\n if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) {\n ALLOWED_ATTR = clone(ALLOWED_ATTR);\n }\n\n addToSet(ALLOWED_ATTR, cfg.ADD_ATTR);\n }\n\n if (cfg.ADD_URI_SAFE_ATTR) {\n addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR);\n }\n\n if (cfg.FORBID_CONTENTS) {\n if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {\n FORBID_CONTENTS = clone(FORBID_CONTENTS);\n }\n\n addToSet(FORBID_CONTENTS, cfg.FORBID_CONTENTS);\n }\n\n /* Add #text in case KEEP_CONTENT is set to true */\n if (KEEP_CONTENT) {\n ALLOWED_TAGS['#text'] = true;\n }\n\n /* Add html, head and body to ALLOWED_TAGS in case WHOLE_DOCUMENT is true */\n if (WHOLE_DOCUMENT) {\n addToSet(ALLOWED_TAGS, ['html', 'head', 'body']);\n }\n\n /* Add tbody to ALLOWED_TAGS in case tables are permitted, see #286, #365 */\n if (ALLOWED_TAGS.table) {\n addToSet(ALLOWED_TAGS, ['tbody']);\n delete FORBID_TAGS.tbody;\n }\n\n // Prevent further manipulation of configuration.\n // Not available in IE8, Safari 5, etc.\n if (freeze) {\n freeze(cfg);\n }\n\n CONFIG = cfg;\n };\n\n var MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, ['mi', 'mo', 'mn', 'ms', 'mtext']);\n\n var HTML_INTEGRATION_POINTS = addToSet({}, ['foreignobject', 'desc', 'title', 'annotation-xml']);\n\n /* Keep track of all possible SVG and MathML tags\n * so that we can perform the namespace checks\n * correctly. */\n var ALL_SVG_TAGS = addToSet({}, svg);\n addToSet(ALL_SVG_TAGS, svgFilters);\n addToSet(ALL_SVG_TAGS, svgDisallowed);\n\n var ALL_MATHML_TAGS = addToSet({}, mathMl);\n addToSet(ALL_MATHML_TAGS, mathMlDisallowed);\n\n /**\n *\n *\n * @param {Element} element a DOM element whose namespace is being checked\n * @returns {boolean} Return false if the element has a\n * namespace that a spec-compliant parser would never\n * return. Return true otherwise.\n */\n var _checkValidNamespace = function _checkValidNamespace(element) {\n var parent = getParentNode(element);\n\n // In JSDOM, if we're inside shadow DOM, then parentNode\n // can be null. We just simulate parent in this case.\n if (!parent || !parent.tagName) {\n parent = {\n namespaceURI: HTML_NAMESPACE,\n tagName: 'template'\n };\n }\n\n var tagName = stringToLowerCase(element.tagName);\n var parentTagName = stringToLowerCase(parent.tagName);\n\n if (element.namespaceURI === SVG_NAMESPACE) {\n // The only way to switch from HTML namespace to SVG\n // is via <svg>. If it happens via any other tag, then\n // it should be killed.\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === 'svg';\n }\n\n // The only way to switch from MathML to SVG is via\n // svg if parent is either <annotation-xml> or MathML\n // text integration points.\n if (parent.namespaceURI === MATHML_NAMESPACE) {\n return tagName === 'svg' && (parentTagName === 'annotation-xml' || MATHML_TEXT_INTEGRATION_POINTS[parentTagName]);\n }\n\n // We only allow elements that are defined in SVG\n // spec. All others are disallowed in SVG namespace.\n return Boolean(ALL_SVG_TAGS[tagName]);\n }\n\n if (element.namespaceURI === MATHML_NAMESPACE) {\n // The only way to switch from HTML namespace to MathML\n // is via <math>. If it happens via any other tag, then\n // it should be killed.\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === 'math';\n }\n\n // The only way to switch from SVG to MathML is via\n // <math> and HTML integration points\n if (parent.namespaceURI === SVG_NAMESPACE) {\n return tagName === 'math' && HTML_INTEGRATION_POINTS[parentTagName];\n }\n\n // We only allow elements that are defined in MathML\n // spec. All others are disallowed in MathML namespace.\n return Boolean(ALL_MATHML_TAGS[tagName]);\n }\n\n if (element.namespaceURI === HTML_NAMESPACE) {\n // The only way to switch from SVG to HTML is via\n // HTML integration points, and from MathML to HTML\n // is via MathML text integration points\n if (parent.namespaceURI === SVG_NAMESPACE && !HTML_INTEGRATION_POINTS[parentTagName]) {\n return false;\n }\n\n if (parent.namespaceURI === MATHML_NAMESPACE && !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]) {\n return false;\n }\n\n // Certain elements are allowed in both SVG and HTML\n // namespace. We need to specify them explicitly\n // so that they don't get erronously deleted from\n // HTML namespace.\n var commonSvgAndHTMLElements = addToSet({}, ['title', 'style', 'font', 'a', 'script']);\n\n // We disallow tags that are specific for MathML\n // or SVG and should never appear in HTML namespace\n return !ALL_MATHML_TAGS[tagName] && (commonSvgAndHTMLElements[tagName] || !ALL_SVG_TAGS[tagName]);\n }\n\n // The code should never reach this place (this means\n // that the element somehow got namespace that is not\n // HTML, SVG or MathML). Return false just in case.\n return false;\n };\n\n /**\n * _forceRemove\n *\n * @param {Node} node a DOM node\n */\n var _forceRemove = function _forceRemove(node) {\n arrayPush(DOMPurify.removed, { element: node });\n try {\n // eslint-disable-next-line unicorn/prefer-dom-node-remove\n node.parentNode.removeChild(node);\n } catch (_) {\n try {\n node.outerHTML = emptyHTML;\n } catch (_) {\n node.remove();\n }\n }\n };\n\n /**\n * _removeAttribute\n *\n * @param {String} name an Attribute name\n * @param {Node} node a DOM node\n */\n var _removeAttribute = function _removeAttribute(name, node) {\n try {\n arrayPush(DOMPurify.removed, {\n attribute: node.getAttributeNode(name),\n from: node\n });\n } catch (_) {\n arrayPush(DOMPurify.removed, {\n attribute: null,\n from: node\n });\n }\n\n node.removeAttribute(name);\n\n // We void attribute values for unremovable \"is\"\" attributes\n if (name === 'is' && !ALLOWED_ATTR[name]) {\n if (RETURN_DOM || RETURN_DOM_FRAGMENT) {\n try {\n _forceRemove(node);\n } catch (_) {}\n } else {\n try {\n node.setAttribute(name, '');\n } catch (_) {}\n }\n }\n };\n\n /**\n * _initDocument\n *\n * @param {String} dirty a string of dirty markup\n * @return {Document} a DOM, filled with the dirty markup\n */\n var _initDocument = function _initDocument(dirty) {\n /* Create a HTML document */\n var doc = void 0;\n var leadingWhitespace = void 0;\n\n if (FORCE_BODY) {\n dirty = '<remove></remove>' + dirty;\n } else {\n /* If FORCE_BODY isn't used, leading whitespace needs to be preserved manually */\n var matches = stringMatch(dirty, /^[\\r\\n\\t ]+/);\n leadingWhitespace = matches && matches[0];\n }\n\n if (PARSER_MEDIA_TYPE === 'application/xhtml+xml') {\n // Root of XHTML doc must contain xmlns declaration (see https://www.w3.org/TR/xhtml1/normative.html#strict)\n dirty = '<html xmlns=\"http://www.w3.org/1999/xhtml\"><head></head><body>' + dirty + '</body></html>';\n }\n\n var dirtyPayload = trustedTypesPolicy ? trustedTypesPolicy.createHTML(dirty) : dirty;\n /*\n * Use the DOMParser API by default, fallback later if needs be\n * DOMParser not work for svg when has multiple root element.\n */\n if (NAMESPACE === HTML_NAMESPACE) {\n try {\n doc = new DOMParser().parseFromString(dirtyPayload, PARSER_MEDIA_TYPE);\n } catch (_) {}\n }\n\n /* Use createHTMLDocument in case DOMParser is not available */\n if (!doc || !doc.documentElement) {\n doc = implementation.createDocument(NAMESPACE, 'template', null);\n try {\n doc.documentElement.innerHTML = IS_EMPTY_INPUT ? '' : dirtyPayload;\n } catch (_) {\n // Syntax error if dirtyPayload is invalid xml\n }\n }\n\n var body = doc.body || doc.documentElement;\n\n if (dirty && leadingWhitespace) {\n body.insertBefore(document.createTextNode(leadingWhitespace), body.childNodes[0] || null);\n }\n\n /* Work on whole document or just its body */\n if (NAMESPACE === HTML_NAMESPACE) {\n return getElementsByTagName.call(doc, WHOLE_DOCUMENT ? 'html' : 'body')[0];\n }\n\n return WHOLE_DOCUMENT ? doc.documentElement : body;\n };\n\n /**\n * _createIterator\n *\n * @param {Document} root document/fragment to create iterator for\n * @return {Iterator} iterator instance\n */\n var _createIterator = function _createIterator(root) {\n return createNodeIterator.call(root.ownerDocument || root, root, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT, null, false);\n };\n\n /**\n * _isClobbered\n *\n * @param {Node} elm element to check for clobbering attacks\n * @return {Boolean} true if clobbered, false if safe\n */\n var _isClobbered = function _isClobbered(elm) {\n return elm instanceof HTMLFormElement && (typeof elm.nodeName !== 'string' || typeof elm.textContent !== 'string' || typeof elm.removeChild !== 'function' || !(elm.attributes instanceof NamedNodeMap) || typeof elm.removeAttribute !== 'function' || typeof elm.setAttribute !== 'function' || typeof elm.namespaceURI !== 'string' || typeof elm.insertBefore !== 'function');\n };\n\n /**\n * _isNode\n *\n * @param {Node} obj object to check whether it's a DOM node\n * @return {Boolean} true is object is a DOM node\n */\n var _isNode = function _isNode(object) {\n return (typeof Node === 'undefined' ? 'undefined' : _typeof(Node)) === 'object' ? object instanceof Node : object && (typeof object === 'undefined' ? 'undefined' : _typeof(object)) === 'object' && typeof object.nodeType === 'number' && typeof object.nodeName === 'string';\n };\n\n /**\n * _executeHook\n * Execute user configurable hooks\n *\n * @param {String} entryPoint Name of the hook's entry point\n * @param {Node} currentNode node to work on with the hook\n * @param {Object} data additional hook parameters\n */\n var _executeHook = function _executeHook(entryPoint, currentNode, data) {\n if (!hooks[entryPoint]) {\n return;\n }\n\n arrayForEach(hooks[entryPoint], function (hook) {\n hook.call(DOMPurify, currentNode, data, CONFIG);\n });\n };\n\n /**\n * _sanitizeElements\n *\n * @protect nodeName\n * @protect textContent\n * @protect removeChild\n *\n * @param {Node} currentNode to check for permission to exist\n * @return {Boolean} true if node was killed, false if left alive\n */\n var _sanitizeElements = function _sanitizeElements(currentNode) {\n var content = void 0;\n\n /* Execute a hook if present */\n _executeHook('beforeSanitizeElements', currentNode, null);\n\n /* Check if element is clobbered or can clobber */\n if (_isClobbered(currentNode)) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Check if tagname contains Unicode */\n if (stringMatch(currentNode.nodeName, /[\\u0080-\\uFFFF]/)) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Now let's check the element's type and name */\n var tagName = transformCaseFunc(currentNode.nodeName);\n\n /* Execute a hook if present */\n _executeHook('uponSanitizeElement', currentNode, {\n tagName: tagName,\n allowedTags: ALLOWED_TAGS\n });\n\n /* Detect mXSS attempts abusing namespace confusion */\n if (!_isNode(currentNode.firstElementChild) && (!_isNode(currentNode.content) || !_isNode(currentNode.content.firstElementChild)) && regExpTest(/<[/\\w]/g, currentNode.innerHTML) && regExpTest(/<[/\\w]/g, currentNode.textContent)) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Mitigate a problem with templates inside select */\n if (tagName === 'select' && regExpTest(/<template/i, currentNode.innerHTML)) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Remove element if anything forbids its presence */\n if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n /* Keep content except for bad-listed elements */\n if (KEEP_CONTENT && !FORBID_CONTENTS[tagName]) {\n var parentNode = getParentNode(currentNode) || currentNode.parentNode;\n var childNodes = getChildNodes(currentNode) || currentNode.childNodes;\n\n if (childNodes && parentNode) {\n var childCount = childNodes.length;\n\n for (var i = childCount - 1; i >= 0; --i) {\n parentNode.insertBefore(cloneNode(childNodes[i], true), getNextSibling(currentNode));\n }\n }\n }\n\n if (!FORBID_TAGS[tagName] && _basicCustomElementTest(tagName)) {\n if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, tagName)) return false;\n if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(tagName)) return false;\n }\n\n _forceRemove(currentNode);\n return true;\n }\n\n /* Check whether element has a valid namespace */\n if (currentNode instanceof Element && !_checkValidNamespace(currentNode)) {\n _forceRemove(currentNode);\n return true;\n }\n\n if ((tagName === 'noscript' || tagName === 'noembed') && regExpTest(/<\\/no(script|embed)/i, currentNode.innerHTML)) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Sanitize element content to be template-safe */\n if (SAFE_FOR_TEMPLATES && currentNode.nodeType === 3) {\n /* Get the element's text content */\n content = currentNode.textContent;\n content = stringReplace(content, MUSTACHE_EXPR$$1, ' ');\n content = stringReplace(content, ERB_EXPR$$1, ' ');\n if (currentNode.textContent !== content) {\n arrayPush(DOMPurify.removed, { element: currentNode.cloneNode() });\n currentNode.textContent = content;\n }\n }\n\n /* Execute a hook if present */\n _executeHook('afterSanitizeElements', currentNode, null);\n\n return false;\n };\n\n /**\n * _isValidAttribute\n *\n * @param {string} lcTag Lowercase tag name of containing element.\n * @param {string} lcName Lowercase attribute name.\n * @param {string} value Attribute value.\n * @return {Boolean} Returns true if `value` is valid, otherwise false.\n */\n // eslint-disable-next-line complexity\n var _isValidAttribute = function _isValidAttribute(lcTag, lcName, value) {\n /* Make sure attribute cannot clobber */\n if (SANITIZE_DOM && (lcName === 'id' || lcName === 'name') && (value in document || value in formElement)) {\n return false;\n }\n\n /* Allow valid data-* attributes: At least one character after \"-\"\n (https://html.spec.whatwg.org/multipage/dom.html#embedding-custom-non-visible-data-with-the-data-*-attributes)\n XML-compatible (https://html.spec.whatwg.org/multipage/infrastructure.html#xml-compatible and http://www.w3.org/TR/xml/#d0e804)\n We don't need to check the value; it's always URI safe. */\n if (ALLOW_DATA_ATTR && !FORBID_ATTR[lcName] && regExpTest(DATA_ATTR$$1, lcName)) ; else if (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR$$1, lcName)) ; else if (!ALLOWED_ATTR[lcName] || FORBID_ATTR[lcName]) {\n if (\n // First condition does a very basic check if a) it's basically a valid custom element tagname AND\n // b) if the tagName passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n // and c) if the attribute name passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.attributeNameCheck\n _basicCustomElementTest(lcTag) && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, lcTag) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(lcTag)) && (CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.attributeNameCheck, lcName) || CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.attributeNameCheck(lcName)) ||\n // Alternative, second condition checks if it's an `is`-attribute, AND\n // the value passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n lcName === 'is' && CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, value) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(value))) ; else {\n return false;\n }\n /* Check value is safe. First, is attr inert? If so, is safe */\n } else if (URI_SAFE_ATTRIBUTES[lcName]) ; else if (regExpTest(IS_ALLOWED_URI$$1, stringReplace(value, ATTR_WHITESPACE$$1, ''))) ; else if ((lcName === 'src' || lcName === 'xlink:href' || lcName === 'href') && lcTag !== 'script' && stringIndexOf(value, 'data:') === 0 && DATA_URI_TAGS[lcTag]) ; else if (ALLOW_UNKNOWN_PROTOCOLS && !regExpTest(IS_SCRIPT_OR_DATA$$1, stringReplace(value, ATTR_WHITESPACE$$1, ''))) ; else if (!value) ; else {\n return false;\n }\n\n return true;\n };\n\n /**\n * _basicCustomElementCheck\n * checks if at least one dash is included in tagName, and it's not the first char\n * for more sophisticated checking see https://github.com/sindresorhus/validate-element-name\n * @param {string} tagName name of the tag of the node to sanitize\n */\n var _basicCustomElementTest = function _basicCustomElementTest(tagName) {\n return tagName.indexOf('-') > 0;\n };\n\n /**\n * _sanitizeAttributes\n *\n * @protect attributes\n * @protect nodeName\n * @protect removeAttribute\n * @protect setAttribute\n *\n * @param {Node} currentNode to sanitize\n */\n var _sanitizeAttributes = function _sanitizeAttributes(currentNode) {\n var attr = void 0;\n var value = void 0;\n var lcName = void 0;\n var l = void 0;\n /* Execute a hook if present */\n _executeHook('beforeSanitizeAttributes', currentNode, null);\n\n var attributes = currentNode.attributes;\n\n /* Check if we have attributes; if not we might have a text node */\n\n if (!attributes) {\n return;\n }\n\n var hookEvent = {\n attrName: '',\n attrValue: '',\n keepAttr: true,\n allowedAttributes: ALLOWED_ATTR\n };\n l = attributes.length;\n\n /* Go backwards over all attributes; safely remove bad ones */\n while (l--) {\n attr = attributes[l];\n var _attr = attr,\n name = _attr.name,\n namespaceURI = _attr.namespaceURI;\n\n value = stringTrim(attr.value);\n lcName = transformCaseFunc(name);\n\n /* Execute a hook if present */\n hookEvent.attrName = lcName;\n hookEvent.attrValue = value;\n hookEvent.keepAttr = true;\n hookEvent.forceKeepAttr = undefined; // Allows developers to see this is a property they can set\n _executeHook('uponSanitizeAttribute', currentNode, hookEvent);\n value = hookEvent.attrValue;\n /* Did the hooks approve of the attribute? */\n if (hookEvent.forceKeepAttr) {\n continue;\n }\n\n /* Remove attribute */\n _removeAttribute(name, currentNode);\n\n /* Did the hooks approve of the attribute? */\n if (!hookEvent.keepAttr) {\n continue;\n }\n\n /* Work around a security issue in jQuery 3.0 */\n if (regExpTest(/\\/>/i, value)) {\n _removeAttribute(name, currentNode);\n continue;\n }\n\n /* Sanitize attribute content to be template-safe */\n if (SAFE_FOR_TEMPLATES) {\n value = stringReplace(value, MUSTACHE_EXPR$$1, ' ');\n value = stringReplace(value, ERB_EXPR$$1, ' ');\n }\n\n /* Is `value` valid for this attribute? */\n var lcTag = transformCaseFunc(currentNode.nodeName);\n if (!_isValidAttribute(lcTag, lcName, value)) {\n continue;\n }\n\n /* Handle invalid data-* attribute set by try-catching it */\n try {\n if (namespaceURI) {\n currentNode.setAttributeNS(namespaceURI, name, value);\n } else {\n /* Fallback to setAttribute() for browser-unrecognized namespaces e.g. \"x-schema\". */\n currentNode.setAttribute(name, value);\n }\n\n arrayPop(DOMPurify.removed);\n } catch (_) {}\n }\n\n /* Execute a hook if present */\n _executeHook('afterSanitizeAttributes', currentNode, null);\n };\n\n /**\n * _sanitizeShadowDOM\n *\n * @param {DocumentFragment} fragment to iterate over recursively\n */\n var _sanitizeShadowDOM = function _sanitizeShadowDOM(fragment) {\n var shadowNode = void 0;\n var shadowIterator = _createIterator(fragment);\n\n /* Execute a hook if present */\n _executeHook('beforeSanitizeShadowDOM', fragment, null);\n\n while (shadowNode = shadowIterator.nextNode()) {\n /* Execute a hook if present */\n _executeHook('uponSanitizeShadowNode', shadowNode, null);\n\n /* Sanitize tags and elements */\n if (_sanitizeElements(shadowNode)) {\n continue;\n }\n\n /* Deep shadow DOM detected */\n if (shadowNode.content instanceof DocumentFragment) {\n _sanitizeShadowDOM(shadowNode.content);\n }\n\n /* Check attributes, sanitize if necessary */\n _sanitizeAttributes(shadowNode);\n }\n\n /* Execute a hook if present */\n _executeHook('afterSanitizeShadowDOM', fragment, null);\n };\n\n /**\n * Sanitize\n * Public method providing core sanitation functionality\n *\n * @param {String|Node} dirty string or DOM node\n * @param {Object} configuration object\n */\n // eslint-disable-next-line complexity\n DOMPurify.sanitize = function (dirty, cfg) {\n var body = void 0;\n var importedNode = void 0;\n var currentNode = void 0;\n var oldNode = void 0;\n var returnNode = void 0;\n /* Make sure we have a string to sanitize.\n DO NOT return early, as this will return the wrong type if\n the user has requested a DOM object rather than a string */\n IS_EMPTY_INPUT = !dirty;\n if (IS_EMPTY_INPUT) {\n dirty = '<!-->';\n }\n\n /* Stringify, in case dirty is an object */\n if (typeof dirty !== 'string' && !_isNode(dirty)) {\n // eslint-disable-next-line no-negated-condition\n if (typeof dirty.toString !== 'function') {\n throw typeErrorCreate('toString is not a function');\n } else {\n dirty = dirty.toString();\n if (typeof dirty !== 'string') {\n throw typeErrorCreate('dirty is not a string, aborting');\n }\n }\n }\n\n /* Check we can run. Otherwise fall back or ignore */\n if (!DOMPurify.isSupported) {\n if (_typeof(window.toStaticHTML) === 'object' || typeof window.toStaticHTML === 'function') {\n if (typeof dirty === 'string') {\n return window.toStaticHTML(dirty);\n }\n\n if (_isNode(dirty)) {\n return window.toStaticHTML(dirty.outerHTML);\n }\n }\n\n return dirty;\n }\n\n /* Assign config vars */\n if (!SET_CONFIG) {\n _parseConfig(cfg);\n }\n\n /* Clean up removed elements */\n DOMPurify.removed = [];\n\n /* Check if dirty is correctly typed for IN_PLACE */\n if (typeof dirty === 'string') {\n IN_PLACE = false;\n }\n\n if (IN_PLACE) ; else if (dirty instanceof Node) {\n /* If dirty is a DOM element, append to an empty document to avoid\n elements being stripped by the parser */\n body = _initDocument('<!---->');\n importedNode = body.ownerDocument.importNode(dirty, true);\n if (importedNode.nodeType === 1 && importedNode.nodeName === 'BODY') {\n /* Node is already a body, use as is */\n body = importedNode;\n } else if (importedNode.nodeName === 'HTML') {\n body = importedNode;\n } else {\n // eslint-disable-next-line unicorn/prefer-dom-node-append\n body.appendChild(importedNode);\n }\n } else {\n /* Exit directly if we have nothing to do */\n if (!RETURN_DOM && !SAFE_FOR_TEMPLATES && !WHOLE_DOCUMENT &&\n // eslint-disable-next-line unicorn/prefer-includes\n dirty.indexOf('<') === -1) {\n return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(dirty) : dirty;\n }\n\n /* Initialize the document to work on */\n body = _initDocument(dirty);\n\n /* Check we have a DOM node from the data */\n if (!body) {\n return RETURN_DOM ? null : emptyHTML;\n }\n }\n\n /* Remove first element node (ours) if FORCE_BODY is set */\n if (body && FORCE_BODY) {\n _forceRemove(body.firstChild);\n }\n\n /* Get node iterator */\n var nodeIterator = _createIterator(IN_PLACE ? dirty : body);\n\n /* Now start iterating over the created document */\n while (currentNode = nodeIterator.nextNode()) {\n /* Fix IE's strange behavior with manipulated textNodes #89 */\n if (currentNode.nodeType === 3 && currentNode === oldNode) {\n continue;\n }\n\n /* Sanitize tags and elements */\n if (_sanitizeElements(currentNode)) {\n continue;\n }\n\n /* Shadow DOM detected, sanitize it */\n if (currentNode.content instanceof DocumentFragment) {\n _sanitizeShadowDOM(currentNode.content);\n }\n\n /* Check attributes, sanitize if necessary */\n _sanitizeAttributes(currentNode);\n\n oldNode = currentNode;\n }\n\n oldNode = null;\n\n /* If we sanitized `dirty` in-place, return it. */\n if (IN_PLACE) {\n return dirty;\n }\n\n /* Return sanitized string or DOM */\n if (RETURN_DOM) {\n if (RETURN_DOM_FRAGMENT) {\n returnNode = createDocumentFragment.call(body.ownerDocument);\n\n while (body.firstChild) {\n // eslint-disable-next-line unicorn/prefer-dom-node-append\n returnNode.appendChild(body.firstChild);\n }\n } else {\n returnNode = body;\n }\n\n if (ALLOWED_ATTR.shadowroot) {\n /*\n AdoptNode() is not used because internal state is not reset\n (e.g. the past names map of a HTMLFormElement), this is safe\n in theory but we would rather not risk another attack vector.\n The state that is cloned by importNode() is explicitly defined\n by the specs.\n */\n returnNode = importNode.call(originalDocument, returnNode, true);\n }\n\n return returnNode;\n }\n\n var serializedHTML = WHOLE_DOCUMENT ? body.outerHTML : body.innerHTML;\n\n /* Sanitize final string template-safe */\n if (SAFE_FOR_TEMPLATES) {\n serializedHTML = stringReplace(serializedHTML, MUSTACHE_EXPR$$1, ' ');\n serializedHTML = stringReplace(serializedHTML, ERB_EXPR$$1, ' ');\n }\n\n return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(serializedHTML) : serializedHTML;\n };\n\n /**\n * Public method to set the configuration once\n * setConfig\n *\n * @param {Object} cfg configuration object\n */\n DOMPurify.setConfig = function (cfg) {\n _parseConfig(cfg);\n SET_CONFIG = true;\n };\n\n /**\n * Public method to remove the configuration\n * clearConfig\n *\n */\n DOMPurify.clearConfig = function () {\n CONFIG = null;\n SET_CONFIG = false;\n };\n\n /**\n * Public method to check if an attribute value is valid.\n * Uses last set config, if any. Otherwise, uses config defaults.\n * isValidAttribute\n *\n * @param {string} tag Tag name of containing element.\n * @param {string} attr Attribute name.\n * @param {string} value Attribute value.\n * @return {Boolean} Returns true if `value` is valid. Otherwise, returns false.\n */\n DOMPurify.isValidAttribute = function (tag, attr, value) {\n /* Initialize shared config vars if necessary. */\n if (!CONFIG) {\n _parseConfig({});\n }\n\n var lcTag = transformCaseFunc(tag);\n var lcName = transformCaseFunc(attr);\n return _isValidAttribute(lcTag, lcName, value);\n };\n\n /**\n * AddHook\n * Public method to add DOMPurify hooks\n *\n * @param {String} entryPoint entry point for the hook to add\n * @param {Function} hookFunction function to execute\n */\n DOMPurify.addHook = function (entryPoint, hookFunction) {\n if (typeof hookFunction !== 'function') {\n return;\n }\n\n hooks[entryPoint] = hooks[entryPoint] || [];\n arrayPush(hooks[entryPoint], hookFunction);\n };\n\n /**\n * RemoveHook\n * Public method to remove a DOMPurify hook at a given entryPoint\n * (pops it from the stack of hooks if more are present)\n *\n * @param {String} entryPoint entry point for the hook to remove\n */\n DOMPurify.removeHook = function (entryPoint) {\n if (hooks[entryPoint]) {\n arrayPop(hooks[entryPoint]);\n }\n };\n\n /**\n * RemoveHooks\n * Public method to remove all DOMPurify hooks at a given entryPoint\n *\n * @param {String} entryPoint entry point for the hooks to remove\n */\n DOMPurify.removeHooks = function (entryPoint) {\n if (hooks[entryPoint]) {\n hooks[entryPoint] = [];\n }\n };\n\n /**\n * RemoveAllHooks\n * Public method to remove all DOMPurify hooks\n *\n */\n DOMPurify.removeAllHooks = function () {\n hooks = {};\n };\n\n return DOMPurify;\n }\n\n var purify = createDOMPurify();\n\n return purify;\n\n}));\n//# sourceMappingURL=purify.js.map\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar noOp = function noOp() {};\n\nvar defaultProps = {\n aspectRatio: 'inherit',\n file: '',\n isAutoPlay: undefined,\n isMuted: undefined,\n onAdPlay: noOp,\n onAdResume: noOp,\n onAdSkipped: noOp,\n onAdComplete: noOp,\n onEnterFullScreen: noOp,\n onExitFullScreen: noOp,\n onMute: noOp,\n onUnmute: noOp,\n onAutoStart: noOp,\n onResume: noOp,\n onPlay: noOp,\n onClose: noOp,\n onReady: noOp,\n onError: noOp,\n onAdPause: noOp,\n onPause: noOp,\n onVideoLoad: noOp,\n onOneHundredPercent: noOp,\n onThreeSeconds: noOp,\n onTenSeconds: noOp,\n onThirtySeconds: noOp,\n onTwentyFivePercent: noOp,\n onFiftyPercent: noOp,\n onSeventyFivePercent: noOp,\n onNinetyFivePercent: noOp,\n onTime: noOp,\n onBuffer: noOp,\n onBufferChange: noOp,\n playlist: '',\n useMultiplePlayerScripts: false\n};\n\nexports.default = defaultProps;","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n"],"sourceRoot":""}