{"version":3,"sources":["maps.js","slick.js","popper.js","scripts.js","util.js","alert.js","button.js","carousel.js","collapse.js","dropdown.js","modal.js","scrollspy.js","tab.js","tooltip.js","popover.js","slick.min.js","animations.js","forms.js","index.js","typewritter.js"],"names":["new_map","$el","$markers","find","args","zoom","center","google","maps","LatLng","streetViewControl","mapTypeControl","mapTypeId","MapTypeId","ROADMAP","styles","featureType","elementType","stylers","invert_lightness","saturation","lightness","gamma","hue","visibility","color","map","Map","markers","each","add_marker","jQuery","this","center_map","$marker","latlng","attr","marker","Marker","position","push","html","infowindow","InfoWindow","content","event","addListener","open","bounds","LatLngBounds","i","lat","lng","extend","length","setCenter","getCenter","setZoom","fitBounds","zeroFill","number","width","toString","Array","test","join","global","factory","exports","module","define","amd","Popper","microtaskDebounce","fn","called","window","Promise","resolve","then","taskDebounce","scheduled","setTimeout","timeoutDuration","isFunction","functionToCheck","getType","call","getStyleComputedProperty","element","property","nodeType","ownerDocument","defaultView","css","getComputedStyle","getParentNode","nodeName","parentNode","host","getScrollParent","document","body","_getStyleComputedProp","overflow","overflowX","overflowY","isIE","version","isIE11","isIE10","getOffsetParent","documentElement","noOffsetParent","offsetParent","nextElementSibling","indexOf","isOffsetContainer","firstElementChild","getRoot","node","findCommonOffsetParent","element1","element2","order","compareDocumentPosition","Node","DOCUMENT_POSITION_FOLLOWING","start","end","range","createRange","setStart","setEnd","commonAncestorContainer","contains","element1root","getScroll","side","arguments","undefined","upperSide","scrollingElement","includeScroll","rect","subtract","scrollTop","scrollLeft","modifier","top","bottom","left","right","getBordersSize","axis","sideA","sideB","parseFloat","getSize","computedStyle","Math","max","parseInt","getWindowSizes","height","getClientRect","offsets","_extends","getBoundingClientRect","e","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","reference","padding","boundariesElement","boundaries","boundariesNode","_getWindowSizes","isPaddingNumber","getArea","_ref","computeAutoPlacement","placement","refRect","rects","sortedAreas","Object","keys","key","area","sort","a","b","filteredAreas","filter","_ref2","computedPlacement","variation","split","getReferenceOffsets","state","commonOffsetParent","getOuterSizes","x","marginBottom","y","marginRight","getOppositePlacement","hash","replace","matched","getPopperOffsets","referenceOffsets","popperRect","popperOffsets","isHoriz","mainSide","secondarySide","measurement","secondaryMeasurement","arr","check","prototype","findIndex","prop","value","cur","match","obj","runModifiers","modifiers","data","ends","modifiersToRun","slice","forEach","console","warn","enabled","update","isDestroyed","instance","arrowStyles","attributes","flipped","options","positionFixed","flip","originalPlacement","isCreated","onUpdate","onCreate","isModifierEnabled","modifierName","some","name","getSupportedPropertyName","prefixes","upperProp","charAt","toUpperCase","prefix","toCheck","style","destroy","removeAttribute","willChange","disableEventListeners","removeOnDestroy","removeChild","getWindow","attachToScrollParents","callback","scrollParents","isBody","target","addEventListener","passive","setupEventListeners","updateBound","scrollElement","eventsEnabled","enableEventListeners","scheduleUpdate","removeEventListeners","removeEventListener","cancelAnimationFrame","isNumeric","n","isNaN","isFinite","setStyles","unit","setAttributes","setAttribute","applyStyle","arrowElement","applyStyleOnLoad","modifierOptions","getRoundedOffsets","shouldRound","_data$offsets","round","floor","noRound","v","referenceWidth","popperWidth","isVertical","isVariation","sameWidthParity","bothOddWidth","horizontalToInteger","verticalToInteger","computeStyle","legacyGpuAccelerationOption","gpuAcceleration","offsetParentRect","devicePixelRatio","isFirefox","prefixedProperty","invertTop","invertLeft","x-placement","arrow","isModifierRequired","requestingName","requestedName","requesting","isRequired","_requesting","requested","_data$offsets$arrow","querySelector","len","sideCapitalized","toLowerCase","altSide","opSide","arrowElementSize","popperMarginSide","popperBorderSide","sideValue","min","defineProperty","getOppositeVariation","clockwise","counter","index","validPlacements","concat","reverse","placementOpposite","flipOrder","behavior","BEHAVIORS","FLIP","CLOCKWISE","COUNTERCLOCKWISE","step","refOffsets","overlapsRef","overflowsLeft","overflowsRight","overflowsTop","overflowsBottom","overflowsBoundaries","flippedVariation","flipVariations","keepTogether","toValue","str","size","parseOffset","basePlacement","useHeight","fragments","frag","trim","divider","search","splitRegex","ops","op","mergeWithPrevious","reduce","index2","preventOverflow","transformProp","popperStyles","transform","priority","primary","escapeWithReference","secondary","shift","shiftvariation","shiftOffsets","hide","bound","inner","subtractLength","isBrowser","longerTimeoutBrowsers","navigator","userAgent","supportsMicroTasks","debounce","MSInputMethodContext","documentMode","classCallCheck","Constructor","TypeError","createClass","defineProperties","props","descriptor","enumerable","configurable","writable","protoProps","staticProps","assign","source","hasOwnProperty","placements","onLoad","Defaults","_this","requestAnimationFrame","bind","jquery","Utils","PopperUtils","_typeof","Symbol","iterator","constructor","require","self","Util","$","toType","getSpecialTransitionEndEvent","bindType","TRANSITION_END","delegateType","handle","is","handleObj","handler","apply","transitionEndEmulator","duration","one","triggerTransitionEnd","setTransitionEndSupport","emulateTransitionEnd","special","MAX_UID","MILLISECONDS_MULTIPLIER","getUID","random","getElementById","getSelectorFromElement","selector","getAttribute","hrefAttr","err","getTransitionDurationFromElement","transitionDuration","transitionDelay","floatTransitionDuration","floatTransitionDelay","reflow","trigger","supportsTransitionEnd","Boolean","isElement","typeCheckConfig","componentName","config","configTypes","expectedTypes","valueType","RegExp","Error","findShadowRoot","attachShadow","getRootNode","root","ShadowRoot","Alert","_defineProperties","_createClass","NAME","VERSION","DATA_KEY","EVENT_KEY","DATA_API_KEY","JQUERY_NO_CONFLICT","Selector","DISMISS","Event","CLOSE","CLOSED","CLICK_DATA_API","ClassName","ALERT","FADE","SHOW","_element","_proto","close","rootElement","_getRootElement","customEvent","_triggerCloseEvent","isDefaultPrevented","_removeElement","dispose","removeData","closest","closeEvent","removeClass","hasClass","_destroyElement","detach","remove","_jQueryInterface","$element","_handleDismiss","alertInstance","preventDefault","get","on","noConflict","Button","ACTIVE","BUTTON","FOCUS","DATA_TOGGLE_CARROT","DATA_TOGGLE","INPUT","FOCUS_BLUR_DATA_API","toggle","triggerChangeEvent","addAriaPressed","input","type","checked","classList","activeElement","hasAttribute","focus","toggleClass","button","Carousel","_defineProperty","_objectSpread","ownKeys","getOwnPropertySymbols","sym","getOwnPropertyDescriptor","ARROW_LEFT_KEYCODE","ARROW_RIGHT_KEYCODE","TOUCHEVENT_COMPAT_WAIT","SWIPE_THRESHOLD","Default","interval","keyboard","slide","pause","wrap","touch","DefaultType","Direction","NEXT","PREV","LEFT","RIGHT","SLIDE","SLID","KEYDOWN","MOUSEENTER","MOUSELEAVE","TOUCHSTART","TOUCHMOVE","TOUCHEND","POINTERDOWN","POINTERUP","DRAG_START","LOAD_DATA_API","CAROUSEL","ITEM","POINTER_EVENT","ACTIVE_ITEM","ITEM_IMG","NEXT_PREV","INDICATORS","DATA_SLIDE","DATA_RIDE","PointerType","TOUCH","PEN","_items","_interval","_activeElement","_isPaused","_isSliding","touchTimeout","touchStartX","touchDeltaX","_config","_getConfig","_indicatorsElement","_touchSupported","maxTouchPoints","_pointerEvent","PointerEvent","MSPointerEvent","_addEventListeners","next","_slide","nextWhenVisible","hidden","prev","cycle","clearInterval","setInterval","visibilityState","to","activeIndex","_getItemIndex","direction","off","_handleSwipe","absDeltax","abs","_this2","_keydown","_addTouchEventListeners","_this3","originalEvent","pointerType","clientX","touches","move","clearTimeout","querySelectorAll","add","tagName","which","_getItemByDirection","isNextDirection","isPrevDirection","lastItemIndex","isGoingToWrap","delta","itemIndex","_triggerSlideEvent","relatedTarget","eventDirectionName","targetIndex","fromIndex","slideEvent","from","_setActiveIndicatorElement","indicators","nextIndicator","addClass","directionalClassName","orderClassName","_this4","activeElementIndex","nextElement","nextElementIndex","isCycling","slidEvent","nextElementInterval","defaultInterval","action","ride","_dataApiClickHandler","slideIndex","carousels","$carousel","Collapse","SHOWN","HIDE","HIDDEN","COLLAPSE","COLLAPSING","COLLAPSED","Dimension","WIDTH","HEIGHT","ACTIVES","_isTransitioning","_triggerArray","id","toggleList","elem","filterElement","foundElem","_selector","_parent","_getParent","_addAriaAndCollapsedClass","show","actives","activesData","not","startEvent","dimension","_getDimension","setTransitioning","complete","capitalizedDimension","scrollSize","triggerArrayLength","$elem","isTransitioning","hasWidth","_getTargetFromElement","triggerArray","isOpen","$this","currentTarget","$trigger","selectors","$target","Dropdown","ESCAPE_KEYCODE","SPACE_KEYCODE","TAB_KEYCODE","ARROW_UP_KEYCODE","ARROW_DOWN_KEYCODE","RIGHT_MOUSE_BUTTON_WHICH","REGEXP_KEYDOWN","CLICK","KEYDOWN_DATA_API","KEYUP_DATA_API","DISABLED","DROPUP","DROPRIGHT","DROPLEFT","MENURIGHT","MENULEFT","POSITION_STATIC","FORM_CHILD","MENU","NAVBAR_NAV","VISIBLE_ITEMS","AttachmentMap","TOP","TOPEND","BOTTOM","BOTTOMEND","RIGHTEND","LEFTEND","boundary","display","_popper","_menu","_getMenuElement","_inNavbar","_detectNavbar","disabled","_getParentFromElement","isActive","_clearMenus","showEvent","referenceElement","_getPopperConfig","noop","hideEvent","stopPropagation","_getPlacement","$parentDropdown","_getOffset","popperConfig","toggles","context","clickEvent","dropdownMenu","_dataApiKeydownHandler","items","Modal","backdrop","FOCUSIN","RESIZE","CLICK_DISMISS","KEYDOWN_DISMISS","MOUSEUP_DISMISS","MOUSEDOWN_DISMISS","SCROLLABLE","SCROLLBAR_MEASURER","BACKDROP","OPEN","DIALOG","MODAL_BODY","DATA_DISMISS","FIXED_CONTENT","STICKY_CONTENT","_dialog","_backdrop","_isShown","_isBodyOverflowing","_ignoreBackdropClick","_scrollbarWidth","_checkScrollbar","_setScrollbar","_adjustDialog","_setEscapeEvent","_setResizeEvent","_showBackdrop","_showElement","transition","_hideModal","htmlElement","handleUpdate","ELEMENT_NODE","appendChild","_enforceFocus","shownEvent","transitionComplete","has","_this5","_this6","_this7","_resetAdjustments","_resetScrollbar","_removeBackdrop","_this8","animate","createElement","className","appendTo","backdropTransitionDuration","callbackRemove","_backdropTransitionDuration","isModalOverflowing","scrollHeight","paddingLeft","paddingRight","_getScrollbarWidth","_this9","fixedContent","stickyContent","actualPadding","calculatedPadding","actualMargin","calculatedMargin","elements","margin","scrollDiv","scrollbarWidth","_this10","ScrollSpy","method","ACTIVATE","SCROLL","DROPDOWN_ITEM","DROPDOWN_MENU","DATA_SPY","NAV_LIST_GROUP","NAV_LINKS","NAV_ITEMS","LIST_ITEMS","DROPDOWN","DROPDOWN_ITEMS","DROPDOWN_TOGGLE","OffsetMethod","OFFSET","POSITION","_scrollElement","_offsets","_targets","_activeTarget","_scrollHeight","_process","refresh","autoMethod","offsetMethod","offsetBase","_getScrollTop","_getScrollHeight","targets","targetSelector","targetBCR","item","pageYOffset","_getOffsetHeight","maxScroll","_activate","_clear","offsetLength","isActiveTarget","queries","$link","parents","scrollSpys","scrollSpysLength","$spy","Tab","ACTIVE_UL","DROPDOWN_ACTIVE_CHILD","previous","listElement","itemSelector","makeArray","hiddenEvent","container","activeElements","active","_transitionComplete","dropdownChild","dropdownElement","dropdownToggleList","Tooltip","allowedAttribute","allowedAttributeList","attrName","uriAttrs","nodeValue","SAFE_URL_PATTERN","DATA_URL_PATTERN","regExp","attrRegex","l","sanitizeHtml","unsafeHtml","whiteList","sanitizeFn","domParser","DOMParser","createdDocument","parseFromString","whitelistKeys","_loop","elName","attributeList","whitelistedAttributes","innerHTML","ARIA_ATTRIBUTE_PATTERN","DefaultWhitelist","*","br","col","code","div","em","hr","h1","h2","h3","h4","h5","h6","img","li","ol","p","pre","s","small","span","sub","sup","strong","u","ul","CLASS_PREFIX","BSCLS_PREFIX_REGEX","DISALLOWED_ATTRIBUTES","animation","template","title","delay","fallbackPlacement","sanitize","AUTO","HoverState","OUT","INSERTED","FOCUSOUT","TOOLTIP","TOOLTIP_INNER","ARROW","Trigger","HOVER","MANUAL","_isEnabled","_timeout","_hoverState","_activeTrigger","tip","_setListeners","enable","disable","toggleEnabled","dataKey","_getDelegateConfig","click","_isWithActiveTrigger","_enter","_leave","getTipElement","isWithContent","shadowRoot","isInTheDom","tipId","setContent","attachment","_getAttachment","addAttachmentClass","_getContainer","_handlePopperPlacementChange","_fixTransition","prevHoverState","_cleanTipClass","getTitle","setElementContent","empty","append","text","triggers","eventIn","eventOut","_fixTitle","titleType","dataAttributes","dataAttr","$tip","tabClass","popperData","popperInstance","initConfigAnimation","Popover","_inheritsLoose","subClass","superClass","create","__proto__","TITLE","CONTENT","_Tooltip","_getContent","Slick","t","o","defaults","accessibility","adaptiveHeight","appendArrows","appendDots","arrows","asNavFor","prevArrow","nextArrow","autoplay","autoplaySpeed","centerMode","centerPadding","cssEase","customPaging","dots","dotsClass","draggable","easing","edgeFriction","fade","focusOnSelect","focusOnChange","infinite","initialSlide","lazyLoad","mobileFirst","pauseOnHover","pauseOnFocus","pauseOnDotsHover","respondTo","responsive","rows","rtl","slidesPerRow","slidesToShow","slidesToScroll","speed","swipe","swipeToSlide","touchMove","touchThreshold","useCSS","useTransform","variableWidth","vertical","verticalSwiping","waitForAnimate","zIndex","initials","animating","dragging","autoPlayTimer","currentDirection","currentLeft","currentSlide","$dots","listWidth","listHeight","loadIndex","$nextArrow","$prevArrow","scrolling","slideCount","slideWidth","$slideTrack","$slides","sliding","slideOffset","swipeLeft","swiping","$list","touchObject","transformsEnabled","unslicked","activeBreakpoint","animType","animProp","breakpoints","breakpointSettings","cssTransitions","focussed","interrupted","paused","positionProp","rowCount","shouldClick","$slider","$slidesCache","transformType","transitionType","visibilityChange","windowWidth","windowTimer","originalSettings","mozHidden","webkitHidden","autoPlay","proxy","autoPlayClear","autoPlayIterator","changeSlide","clickHandler","selectHandler","setPosition","swipeHandler","dragHandler","keyHandler","instanceUid","htmlExpr","registerBreakpoints","init","activateADA","aria-hidden","tabindex","addSlide","slickAdd","unload","insertBefore","eq","insertAfter","prependTo","reinit","animateHeight","outerHeight","animateSlide","animStart","ceil","applyTransition","disableTransition","getNavTarget","slick","slideHandler","buildArrows","removeAttr","aria-disabled","buildDots","getDotCount","first","buildOut","wrapAll","setupInfinite","updateDots","setSlideClasses","buildRows","r","createDocumentFragment","d","c","checkResponsive","unslick","message","checkNavigable","getNavigableIndexes","cleanUpEvents","interrupt","cleanUpSlideEvents","orientationChange","resize","cleanUpRows","stopImmediatePropagation","fadeSlide","opacity","fadeSlideOut","filterSlides","slickFilter","focusHandler","getCurrent","slickCurrentSlide","getLeft","offsetLeft","outerWidth","getOption","slickGetOption","getSlick","getSlideCount","goTo","slickGoTo","setProps","startLoad","loadSlider","initializeEvents","updateArrows","initADA","role","aria-describedby","aria-controls","aria-label","aria-selected","initArrowEvents","initDotEvents","initSlideEvents","initUI","keyCode","onload","onerror","src","progressiveLazyLoad","slickNext","slickPause","play","slickPlay","postSlide","slickPrev","breakpoint","splice","settings","windowDelay","removeSlide","slickRemove","setCSS","setDimensions","setFade","setHeight","setOption","slickSetOption","WebkitTransition","MozTransition","msTransition","OTransform","perspectiveProperty","webkitPerspective","MozTransform","MozPerspective","webkitTransform","msTransform","clone","swipeDirection","startX","curX","startY","curY","atan2","PI","swipeEnd","swipeLength","edgeHit","minSwipe","fingerCount","swipeStart","swipeMove","pageX","pageY","clientY","sqrt","pow","unfilterSlides","slickUnfilter","isVisibleTop","$window","topView","botView","topElement","setStartOnVisibleTop","ready","$startOnVisible","scroll","$archiveYear","$content","contentTop","$parent","originalTop","parentTop","parentHeight","windowTop","$gRecaptchaForm","getScript","url","cache","submit","grecaptcha","reset","execute","$mainNavbar","$navbarToggler","$navbarCollapse","$acfMap","done","$testimonialsSlick","arrowSvg","$testimonialsPaging","$projectGallerySlick","$projectGalleryPaging","isVisible","botElement","startTypeWritter","$typewritter"],"mappings":"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","file":"scripts.js","sourcesContent":["/*\n* new_map\n*\n* This function will render a Google Map onto the selected jQuery element\n*\n* @type\tfunction\n* @date\t8/11/2013\n* @since\t4.3.0\n*\n* @param\t$el (jQuery element)\n* @return\tn/a\n*/\nfunction new_map($el) {\n\n // var\n var $markers = $el.find('.marker');\n\n // vars\n var args = {\n zoom: 10,\n center: new google.maps.LatLng(0, 0),\n streetViewControl: false,\n mapTypeControl: false,\n mapTypeId: google.maps.MapTypeId.ROADMAP,\n styles: [\n {\n \"featureType\": \"all\",\n \"elementType\": \"all\",\n \"stylers\": [\n {\n \"invert_lightness\": true\n },\n {\n \"saturation\": 20\n },\n {\n \"lightness\": 50\n },\n {\n \"gamma\": 0.4\n },\n {\n \"hue\": \"#00ffee\"\n }\n ]\n },\n {\n \"featureType\": \"all\",\n \"elementType\": \"geometry\",\n \"stylers\": [\n {\n \"visibility\": \"simplified\"\n }\n ]\n },\n {\n \"featureType\": \"all\",\n \"elementType\": \"labels\",\n \"stylers\": [\n {\n \"visibility\": \"on\"\n }\n ]\n },\n {\n \"featureType\": \"administrative\",\n \"elementType\": \"all\",\n \"stylers\": [\n {\n \"color\": \"#ffffff\"\n },\n {\n \"visibility\": \"simplified\"\n }\n ]\n },\n {\n \"featureType\": \"administrative.land_parcel\",\n \"elementType\": \"geometry.stroke\",\n \"stylers\": [\n {\n \"visibility\": \"simplified\"\n }\n ]\n },\n {\n \"featureType\": \"landscape\",\n \"elementType\": \"all\",\n \"stylers\": [\n {\n \"color\": \"#405769\"\n }\n ]\n },\n {\n \"featureType\": \"poi.attraction\",\n \"elementType\": \"all\",\n \"stylers\": [\n {\n \"visibility\": \"on\"\n }\n ]\n },\n {\n \"featureType\": \"poi.attraction\",\n \"elementType\": \"labels.icon\",\n \"stylers\": [\n {\n \"visibility\": \"off\"\n }\n ]\n },\n {\n \"featureType\": \"poi.business\",\n \"elementType\": \"all\",\n \"stylers\": [\n {\n \"visibility\": \"on\"\n }\n ]\n },\n {\n \"featureType\": \"poi.business\",\n \"elementType\": \"labels.icon\",\n \"stylers\": [\n {\n \"visibility\": \"off\"\n }\n ]\n },\n {\n \"featureType\": \"poi.government\",\n \"elementType\": \"all\",\n \"stylers\": [\n {\n \"visibility\": \"on\"\n }\n ]\n },\n {\n \"featureType\": \"poi.government\",\n \"elementType\": \"labels.icon\",\n \"stylers\": [\n {\n \"visibility\": \"off\"\n }\n ]\n },\n {\n \"featureType\": \"poi.medical\",\n \"elementType\": \"all\",\n \"stylers\": [\n {\n \"visibility\": \"on\"\n }\n ]\n },\n {\n \"featureType\": \"poi.medical\",\n \"elementType\": \"labels.icon\",\n \"stylers\": [\n {\n \"visibility\": \"off\"\n }\n ]\n },\n {\n \"featureType\": \"poi.park\",\n \"elementType\": \"all\",\n \"stylers\": [\n {\n \"visibility\": \"on\"\n }\n ]\n },\n {\n \"featureType\": \"poi.park\",\n \"elementType\": \"labels.icon\",\n \"stylers\": [\n {\n \"visibility\": \"off\"\n }\n ]\n },\n {\n \"featureType\": \"poi.place_of_worship\",\n \"elementType\": \"all\",\n \"stylers\": [\n {\n \"visibility\": \"on\"\n }\n ]\n },\n {\n \"featureType\": \"poi.place_of_worship\",\n \"elementType\": \"labels.icon\",\n \"stylers\": [\n {\n \"visibility\": \"off\"\n }\n ]\n },\n {\n \"featureType\": \"poi.school\",\n \"elementType\": \"all\",\n \"stylers\": [\n {\n \"visibility\": \"on\"\n }\n ]\n },\n {\n \"featureType\": \"poi.school\",\n \"elementType\": \"labels.icon\",\n \"stylers\": [\n {\n \"visibility\": \"off\"\n }\n ]\n },\n {\n \"featureType\": \"poi.sports_complex\",\n \"elementType\": \"all\",\n \"stylers\": [\n {\n \"visibility\": \"on\"\n }\n ]\n },\n {\n \"featureType\": \"poi.sports_complex\",\n \"elementType\": \"labels.icon\",\n \"stylers\": [\n {\n \"visibility\": \"off\"\n }\n ]\n },\n {\n \"featureType\": \"water\",\n \"elementType\": \"geometry.fill\",\n \"stylers\": [\n {\n \"color\": \"#232f3a\"\n }\n ]\n }\n ]\n };\n\n // create map\t \t\n var map = new google.maps.Map($el[0], args);\n\n // add a markers reference\n map.markers = [];\n\n // add markers\n $markers.each(function () {\n add_marker(jQuery(this), map);\n });\n\n // center map\n center_map(map);\n\n // return\n return map;\n\n}\n\n/*\n* add_marker\n*\n* This function will add a marker to the selected Google Map\n*\n* @type\tfunction\n* @date\t8/11/2013\n* @since\t4.3.0\n*\n* @param\t$marker (jQuery element)\n* @param\tmap (Google Map object)\n* @return\tn/a\n*/\nfunction add_marker($marker, map) {\n\n // var\n var latlng = new google.maps.LatLng($marker.attr('data-lat'), $marker.attr('data-lng'));\n\n // create marker\n var marker = new google.maps.Marker({\n position: latlng,\n map: map\n });\n\n // add to array\n map.markers.push(marker);\n\n // if marker contains HTML, add it to an infoWindow\n if ($marker.html()) {\n // create info window\n var infowindow = new google.maps.InfoWindow({\n content: $marker.html()\n });\n\n // show info window when marker is clicked\n google.maps.event.addListener(marker, 'click', () => {\n infowindow.open(map, marker);\n });\n }\n\n}\n\n/*\n* center_map\n*\n* This function will center the map, showing all markers attached to this map\n*\n* @type\tfunction\n* @date\t8/11/2013\n* @since\t4.3.0\n*\n* @param\tmap (Google Map object)\n* @return\tn/a\n*/\nfunction center_map(map) {\n\n // vars\n var bounds = new google.maps.LatLngBounds();\n\n // loop through all markers and create bounds\n jQuery.each(map.markers, (i, marker) => {\n var latlng = new google.maps.LatLng(marker.position.lat(), marker.position.lng());\n bounds.extend(latlng);\n });\n\n // only 1 marker?\n if (map.markers.length == 1) {\n // set center of map\n map.setCenter(bounds.getCenter());\n map.setZoom(13);\n }\n else {\n // fit to bounds\n map.fitBounds(bounds);\n }\n\n}\n\njQuery(document).ready(() => {\n\n const $acfMap = jQuery('.acf-map');\n if ($acfMap.length) {\n\n jQuery.getScript('https://maps.googleapis.com/maps/api/js?key=AIzaSyDUw9HbFYXuMosdQuWqG3nCVBVSq8aKtbE')\n .done(() => {\n\n $acfMap.each(function () {\n new_map(jQuery(this));\n });\n\n });\n\n }\n\n});","function zeroFill(number, width) {\n width -= number.toString().length;\n if (width > 0) {\n return new Array(width + (/\\./.test(number) ? 2 : 1)).join('0') + number;\n }\n return number + \"\"; // always return a string\n}\n\njQuery(document).ready(() => {\n\n const $testimonialsSlick = jQuery('.testimonials-slick');\n\n if ($testimonialsSlick.length) {\n const arrowSvg = '';\n const $testimonialsPaging = jQuery('.testimonials-paging');\n\n $testimonialsSlick.on('init reInit afterChange', (event, slick, currentSlide) => {\n const i = (currentSlide ? currentSlide : 0) + 1;\n $testimonialsPaging.text(zeroFill(i, 2) + '/' + zeroFill(slick.slideCount, 2));\n });\n\n $testimonialsSlick.slick({\n arrows: true,\n prevArrow: '',\n nextArrow: '',\n appendArrows: jQuery('.testimonials-arrows-wrapper'),\n });\n }\n\n const $projectGallerySlick = jQuery('.project-gallery-slick');\n\n if ($projectGallerySlick.length) {\n const arrowSvg = '';\n const $projectGalleryPaging = jQuery('.project-gallery-paging');\n\n $projectGallerySlick.on('init reInit afterChange', (event, slick, currentSlide) => {\n const i = (currentSlide ? currentSlide : 0) + 1;\n $projectGalleryPaging.text(zeroFill(i, 2) + '/' + zeroFill(slick.slideCount, 2));\n });\n\n $projectGallerySlick.slick({\n arrows: true,\n prevArrow: '',\n nextArrow: '',\n appendArrows: jQuery('.project-gallery-arrows-wrapper'),\n });\n }\n\n});","/**!\n * @fileOverview Kickass library to create and place poppers near their reference elements.\n * @version 1.14.7\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 */\n(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n\ttypeof define === 'function' && define.amd ? define(factory) :\n\t(global.Popper = factory());\n}(this, (function () { 'use strict';\n\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined';\n\nvar longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];\nvar timeoutDuration = 0;\nfor (var i = 0; i < longerTimeoutBrowsers.length; i += 1) {\n if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {\n timeoutDuration = 1;\n break;\n }\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\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'], 10) + parseFloat(styles['border' + sideB + 'Width'], 10);\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.right - result.left;\n var height = sizes.height || element.clientHeight || result.bottom - result.top;\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, 10);\n var borderLeftWidth = parseFloat(styles.borderLeftWidth, 10);\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, 10);\n var marginLeft = parseFloat(styles.marginLeft, 10);\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, 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, 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.
\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 explicity 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 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.
\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], 10);\n var popperBorderSide = parseFloat(css['border' + sideCapitalized + 'Width'], 10);\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.
\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.
\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 var flippedVariation = !!options.flipVariations && (isVertical && variation === 'start' && overflowsLeft || isVertical && variation === 'end' && overflowsRight || !isVertical && variation === 'start' && overflowsTop || !isVertical && variation === 'end' && overflowsBottom);\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.
\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.
\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.
\n * It will read the variation of the `placement` property.
\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.
\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.
\n * The latter is a deprecated method because it leads to confusion and will be\n * removed in v2.
\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.
\n * We can say it has \"escaped the boundaries\" — or just \"escaped\".
\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\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.
\n * These can be overridden using the `options` argument of Popper.js.
\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.
\n * By default, it is set to no-op.
\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.
\n * By default, it is set to no-op.
\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 {HTMLElement|referenceObject} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML 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.
\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\nreturn Popper;\n\n})));\n//# sourceMappingURL=popper.js.map\n","/**!\n * @fileOverview Kickass library to create and place poppers near their reference elements.\n * @version 1.14.7\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 */\n(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n\ttypeof define === 'function' && define.amd ? define(factory) :\n\t(global.Popper = factory());\n}(this, (function () { 'use strict';\n\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined';\n\nvar longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];\nvar timeoutDuration = 0;\nfor (var i = 0; i < longerTimeoutBrowsers.length; i += 1) {\n if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {\n timeoutDuration = 1;\n break;\n }\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\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'], 10) + parseFloat(styles['border' + sideB + 'Width'], 10);\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.right - result.left;\n var height = sizes.height || element.clientHeight || result.bottom - result.top;\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, 10);\n var borderLeftWidth = parseFloat(styles.borderLeftWidth, 10);\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, 10);\n var marginLeft = parseFloat(styles.marginLeft, 10);\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, 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, 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.
\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 explicity 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 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.
\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], 10);\n var popperBorderSide = parseFloat(css['border' + sideCapitalized + 'Width'], 10);\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.
\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.
\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 var flippedVariation = !!options.flipVariations && (isVertical && variation === 'start' && overflowsLeft || isVertical && variation === 'end' && overflowsRight || !isVertical && variation === 'start' && overflowsTop || !isVertical && variation === 'end' && overflowsBottom);\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.
\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.
\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.
\n * It will read the variation of the `placement` property.
\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.
\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.
\n * The latter is a deprecated method because it leads to confusion and will be\n * removed in v2.
\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.
\n * We can say it has \"escaped the boundaries\" — or just \"escaped\".
\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\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.
\n * These can be overridden using the `options` argument of Popper.js.
\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.
\n * By default, it is set to no-op.
\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.
\n * By default, it is set to no-op.
\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 {HTMLElement|referenceObject} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML 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.
\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\nreturn Popper;\n\n})));\n//# sourceMappingURL=popper.js.map\n\n'use strict';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 * Bootstrap util.js v4.3.1 (https://getbootstrap.com/)\n * Copyright 2011-2019 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */(function(global,factory){(typeof exports==='undefined'?'undefined':_typeof(exports))==='object'&&typeof module!=='undefined'?module.exports=factory(require('jquery')):typeof define==='function'&&define.amd?define(['jquery'],factory):(global=global||self,global.Util=factory(global.jQuery));})(undefined,function($){'use strict';$=$&&$.hasOwnProperty('default')?$['default']:$;/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): util.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n *//**\n * ------------------------------------------------------------------------\n * Private TransitionEnd Helpers\n * ------------------------------------------------------------------------\n */var TRANSITION_END='transitionend';var MAX_UID=1000000;var MILLISECONDS_MULTIPLIER=1000;// Shoutout AngusCroll (https://goo.gl/pxwQGp)\nfunction toType(obj){return{}.toString.call(obj).match(/\\s([a-z]+)/i)[1].toLowerCase();}function getSpecialTransitionEndEvent(){return{bindType:TRANSITION_END,delegateType:TRANSITION_END,handle:function handle(event){if($(event.target).is(this)){return event.handleObj.handler.apply(this,arguments);// eslint-disable-line prefer-rest-params\n}return undefined;// eslint-disable-line no-undefined\n}};}function transitionEndEmulator(duration){var _this=this;var called=false;$(this).one(Util.TRANSITION_END,function(){called=true;});setTimeout(function(){if(!called){Util.triggerTransitionEnd(_this);}},duration);return this;}function setTransitionEndSupport(){$.fn.emulateTransitionEnd=transitionEndEmulator;$.event.special[Util.TRANSITION_END]=getSpecialTransitionEndEvent();}/**\n * --------------------------------------------------------------------------\n * Public Util Api\n * --------------------------------------------------------------------------\n */var Util={TRANSITION_END:'bsTransitionEnd',getUID:function getUID(prefix){do{// eslint-disable-next-line no-bitwise\nprefix+=~~(Math.random()*MAX_UID);// \"~~\" acts like a faster Math.floor() here\n}while(document.getElementById(prefix));return prefix;},getSelectorFromElement:function getSelectorFromElement(element){var selector=element.getAttribute('data-target');if(!selector||selector==='#'){var hrefAttr=element.getAttribute('href');selector=hrefAttr&&hrefAttr!=='#'?hrefAttr.trim():'';}try{return document.querySelector(selector)?selector:null;}catch(err){return null;}},getTransitionDurationFromElement:function getTransitionDurationFromElement(element){if(!element){return 0;}// Get transition-duration of the element\nvar transitionDuration=$(element).css('transition-duration');var transitionDelay=$(element).css('transition-delay');var floatTransitionDuration=parseFloat(transitionDuration);var floatTransitionDelay=parseFloat(transitionDelay);// Return 0 if element or transition duration is not found\nif(!floatTransitionDuration&&!floatTransitionDelay){return 0;}// If multiple durations are defined, take the first\ntransitionDuration=transitionDuration.split(',')[0];transitionDelay=transitionDelay.split(',')[0];return(parseFloat(transitionDuration)+parseFloat(transitionDelay))*MILLISECONDS_MULTIPLIER;},reflow:function reflow(element){return element.offsetHeight;},triggerTransitionEnd:function triggerTransitionEnd(element){$(element).trigger(TRANSITION_END);},// TODO: Remove in v5\nsupportsTransitionEnd:function supportsTransitionEnd(){return Boolean(TRANSITION_END);},isElement:function isElement(obj){return(obj[0]||obj).nodeType;},typeCheckConfig:function typeCheckConfig(componentName,config,configTypes){for(var property in configTypes){if(Object.prototype.hasOwnProperty.call(configTypes,property)){var expectedTypes=configTypes[property];var value=config[property];var valueType=value&&Util.isElement(value)?'element':toType(value);if(!new RegExp(expectedTypes).test(valueType)){throw new Error(componentName.toUpperCase()+\": \"+(\"Option \\\"\"+property+\"\\\" provided type \\\"\"+valueType+\"\\\" \")+(\"but expected type \\\"\"+expectedTypes+\"\\\".\"));}}}},findShadowRoot:function findShadowRoot(element){if(!document.documentElement.attachShadow){return null;}// Can find the shadow root otherwise it'll return the document\nif(typeof element.getRootNode==='function'){var root=element.getRootNode();return root instanceof ShadowRoot?root:null;}if(element instanceof ShadowRoot){return element;}// when we don't find a shadow root\nif(!element.parentNode){return null;}return Util.findShadowRoot(element.parentNode);}};setTransitionEndSupport();return Util;});//# sourceMappingURL=util.js.map\n'use strict';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 * Bootstrap alert.js v4.3.1 (https://getbootstrap.com/)\n * Copyright 2011-2019 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */(function(global,factory){(typeof exports==='undefined'?'undefined':_typeof(exports))==='object'&&typeof module!=='undefined'?module.exports=factory(require('jquery'),require('./util.js')):typeof define==='function'&&define.amd?define(['jquery','./util.js'],factory):(global=global||self,global.Alert=factory(global.jQuery,global.Util));})(undefined,function($,Util){'use strict';$=$&&$.hasOwnProperty('default')?$['default']:$;Util=Util&&Util.hasOwnProperty('default')?Util['default']:Util;function _defineProperties(target,props){for(var i=0;i0;this._pointerEvent=Boolean(window.PointerEvent||window.MSPointerEvent);this._addEventListeners();}// Getters\nvar _proto=Carousel.prototype;// Public\n_proto.next=function next(){if(!this._isSliding){this._slide(Direction.NEXT);}};_proto.nextWhenVisible=function nextWhenVisible(){// Don't call next when the page isn't visible\n// or the carousel or its parent isn't visible\nif(!document.hidden&&$(this._element).is(':visible')&&$(this._element).css('visibility')!=='hidden'){this.next();}};_proto.prev=function prev(){if(!this._isSliding){this._slide(Direction.PREV);}};_proto.pause=function pause(event){if(!event){this._isPaused=true;}if(this._element.querySelector(Selector.NEXT_PREV)){Util.triggerTransitionEnd(this._element);this.cycle(true);}clearInterval(this._interval);this._interval=null;};_proto.cycle=function cycle(event){if(!event){this._isPaused=false;}if(this._interval){clearInterval(this._interval);this._interval=null;}if(this._config.interval&&!this._isPaused){this._interval=setInterval((document.visibilityState?this.nextWhenVisible:this.next).bind(this),this._config.interval);}};_proto.to=function to(index){var _this=this;this._activeElement=this._element.querySelector(Selector.ACTIVE_ITEM);var activeIndex=this._getItemIndex(this._activeElement);if(index>this._items.length-1||index<0){return;}if(this._isSliding){$(this._element).one(Event.SLID,function(){return _this.to(index);});return;}if(activeIndex===index){this.pause();this.cycle();return;}var direction=index>activeIndex?Direction.NEXT:Direction.PREV;this._slide(direction,this._items[index]);};_proto.dispose=function dispose(){$(this._element).off(EVENT_KEY);$.removeData(this._element,DATA_KEY);this._items=null;this._config=null;this._element=null;this._interval=null;this._isPaused=null;this._isSliding=null;this._activeElement=null;this._indicatorsElement=null;}// Private\n;_proto._getConfig=function _getConfig(config){config=_objectSpread({},Default,config);Util.typeCheckConfig(NAME,config,DefaultType);return config;};_proto._handleSwipe=function _handleSwipe(){var absDeltax=Math.abs(this.touchDeltaX);if(absDeltax<=SWIPE_THRESHOLD){return;}var direction=absDeltax/this.touchDeltaX;// swipe left\nif(direction>0){this.prev();}// swipe right\nif(direction<0){this.next();}};_proto._addEventListeners=function _addEventListeners(){var _this2=this;if(this._config.keyboard){$(this._element).on(Event.KEYDOWN,function(event){return _this2._keydown(event);});}if(this._config.pause==='hover'){$(this._element).on(Event.MOUSEENTER,function(event){return _this2.pause(event);}).on(Event.MOUSELEAVE,function(event){return _this2.cycle(event);});}if(this._config.touch){this._addTouchEventListeners();}};_proto._addTouchEventListeners=function _addTouchEventListeners(){var _this3=this;if(!this._touchSupported){return;}var start=function start(event){if(_this3._pointerEvent&&PointerType[event.originalEvent.pointerType.toUpperCase()]){_this3.touchStartX=event.originalEvent.clientX;}else if(!_this3._pointerEvent){_this3.touchStartX=event.originalEvent.touches[0].clientX;}};var move=function move(event){// ensure swiping with one touch and not pinching\nif(event.originalEvent.touches&&event.originalEvent.touches.length>1){_this3.touchDeltaX=0;}else{_this3.touchDeltaX=event.originalEvent.touches[0].clientX-_this3.touchStartX;}};var end=function end(event){if(_this3._pointerEvent&&PointerType[event.originalEvent.pointerType.toUpperCase()]){_this3.touchDeltaX=event.originalEvent.clientX-_this3.touchStartX;}_this3._handleSwipe();if(_this3._config.pause==='hover'){// 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();if(_this3.touchTimeout){clearTimeout(_this3.touchTimeout);}_this3.touchTimeout=setTimeout(function(event){return _this3.cycle(event);},TOUCHEVENT_COMPAT_WAIT+_this3._config.interval);}};$(this._element.querySelectorAll(Selector.ITEM_IMG)).on(Event.DRAG_START,function(e){return e.preventDefault();});if(this._pointerEvent){$(this._element).on(Event.POINTERDOWN,function(event){return start(event);});$(this._element).on(Event.POINTERUP,function(event){return end(event);});this._element.classList.add(ClassName.POINTER_EVENT);}else{$(this._element).on(Event.TOUCHSTART,function(event){return start(event);});$(this._element).on(Event.TOUCHMOVE,function(event){return move(event);});$(this._element).on(Event.TOUCHEND,function(event){return end(event);});}};_proto._keydown=function _keydown(event){if(/input|textarea/i.test(event.target.tagName)){return;}switch(event.which){case ARROW_LEFT_KEYCODE:event.preventDefault();this.prev();break;case ARROW_RIGHT_KEYCODE:event.preventDefault();this.next();break;default:}};_proto._getItemIndex=function _getItemIndex(element){this._items=element&&element.parentNode?[].slice.call(element.parentNode.querySelectorAll(Selector.ITEM)):[];return this._items.indexOf(element);};_proto._getItemByDirection=function _getItemByDirection(direction,activeElement){var isNextDirection=direction===Direction.NEXT;var isPrevDirection=direction===Direction.PREV;var activeIndex=this._getItemIndex(activeElement);var lastItemIndex=this._items.length-1;var isGoingToWrap=isPrevDirection&&activeIndex===0||isNextDirection&&activeIndex===lastItemIndex;if(isGoingToWrap&&!this._config.wrap){return activeElement;}var delta=direction===Direction.PREV?-1:1;var itemIndex=(activeIndex+delta)%this._items.length;return itemIndex===-1?this._items[this._items.length-1]:this._items[itemIndex];};_proto._triggerSlideEvent=function _triggerSlideEvent(relatedTarget,eventDirectionName){var targetIndex=this._getItemIndex(relatedTarget);var fromIndex=this._getItemIndex(this._element.querySelector(Selector.ACTIVE_ITEM));var slideEvent=$.Event(Event.SLIDE,{relatedTarget:relatedTarget,direction:eventDirectionName,from:fromIndex,to:targetIndex});$(this._element).trigger(slideEvent);return slideEvent;};_proto._setActiveIndicatorElement=function _setActiveIndicatorElement(element){if(this._indicatorsElement){var indicators=[].slice.call(this._indicatorsElement.querySelectorAll(Selector.ACTIVE));$(indicators).removeClass(ClassName.ACTIVE);var nextIndicator=this._indicatorsElement.children[this._getItemIndex(element)];if(nextIndicator){$(nextIndicator).addClass(ClassName.ACTIVE);}}};_proto._slide=function _slide(direction,element){var _this4=this;var activeElement=this._element.querySelector(Selector.ACTIVE_ITEM);var activeElementIndex=this._getItemIndex(activeElement);var nextElement=element||activeElement&&this._getItemByDirection(direction,activeElement);var nextElementIndex=this._getItemIndex(nextElement);var isCycling=Boolean(this._interval);var directionalClassName;var orderClassName;var eventDirectionName;if(direction===Direction.NEXT){directionalClassName=ClassName.LEFT;orderClassName=ClassName.NEXT;eventDirectionName=Direction.LEFT;}else{directionalClassName=ClassName.RIGHT;orderClassName=ClassName.PREV;eventDirectionName=Direction.RIGHT;}if(nextElement&&$(nextElement).hasClass(ClassName.ACTIVE)){this._isSliding=false;return;}var slideEvent=this._triggerSlideEvent(nextElement,eventDirectionName);if(slideEvent.isDefaultPrevented()){return;}if(!activeElement||!nextElement){// Some weirdness is happening, so we bail\nreturn;}this._isSliding=true;if(isCycling){this.pause();}this._setActiveIndicatorElement(nextElement);var slidEvent=$.Event(Event.SLID,{relatedTarget:nextElement,direction:eventDirectionName,from:activeElementIndex,to:nextElementIndex});if($(this._element).hasClass(ClassName.SLIDE)){$(nextElement).addClass(orderClassName);Util.reflow(nextElement);$(activeElement).addClass(directionalClassName);$(nextElement).addClass(directionalClassName);var nextElementInterval=parseInt(nextElement.getAttribute('data-interval'),10);if(nextElementInterval){this._config.defaultInterval=this._config.defaultInterval||this._config.interval;this._config.interval=nextElementInterval;}else{this._config.interval=this._config.defaultInterval||this._config.interval;}var transitionDuration=Util.getTransitionDurationFromElement(activeElement);$(activeElement).one(Util.TRANSITION_END,function(){$(nextElement).removeClass(directionalClassName+\" \"+orderClassName).addClass(ClassName.ACTIVE);$(activeElement).removeClass(ClassName.ACTIVE+\" \"+orderClassName+\" \"+directionalClassName);_this4._isSliding=false;setTimeout(function(){return $(_this4._element).trigger(slidEvent);},0);}).emulateTransitionEnd(transitionDuration);}else{$(activeElement).removeClass(ClassName.ACTIVE);$(nextElement).addClass(ClassName.ACTIVE);this._isSliding=false;$(this._element).trigger(slidEvent);}if(isCycling){this.cycle();}}// Static\n;Carousel._jQueryInterface=function _jQueryInterface(config){return this.each(function(){var data=$(this).data(DATA_KEY);var _config=_objectSpread({},Default,$(this).data());if((typeof config==='undefined'?'undefined':_typeof(config))==='object'){_config=_objectSpread({},_config,config);}var action=typeof config==='string'?config:_config.slide;if(!data){data=new Carousel(this,_config);$(this).data(DATA_KEY,data);}if(typeof config==='number'){data.to(config);}else if(typeof action==='string'){if(typeof data[action]==='undefined'){throw new TypeError(\"No method named \\\"\"+action+\"\\\"\");}data[action]();}else if(_config.interval&&_config.ride){data.pause();data.cycle();}});};Carousel._dataApiClickHandler=function _dataApiClickHandler(event){var selector=Util.getSelectorFromElement(this);if(!selector){return;}var target=$(selector)[0];if(!target||!$(target).hasClass(ClassName.CAROUSEL)){return;}var config=_objectSpread({},$(target).data(),$(this).data());var slideIndex=this.getAttribute('data-slide-to');if(slideIndex){config.interval=false;}Carousel._jQueryInterface.call($(target),config);if(slideIndex){$(target).data(DATA_KEY).to(slideIndex);}event.preventDefault();};_createClass(Carousel,null,[{key:\"VERSION\",get:function get(){return VERSION;}},{key:\"Default\",get:function get(){return Default;}}]);return Carousel;}();/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */$(document).on(Event.CLICK_DATA_API,Selector.DATA_SLIDE,Carousel._dataApiClickHandler);$(window).on(Event.LOAD_DATA_API,function(){var carousels=[].slice.call(document.querySelectorAll(Selector.DATA_RIDE));for(var i=0,len=carousels.length;i0){this._selector=selector;this._triggerArray.push(elem);}}this._parent=this._config.parent?this._getParent():null;if(!this._config.parent){this._addAriaAndCollapsedClass(this._element,this._triggerArray);}if(this._config.toggle){this.toggle();}}// Getters\nvar _proto=Collapse.prototype;// Public\n_proto.toggle=function toggle(){if($(this._element).hasClass(ClassName.SHOW)){this.hide();}else{this.show();}};_proto.show=function show(){var _this=this;if(this._isTransitioning||$(this._element).hasClass(ClassName.SHOW)){return;}var actives;var activesData;if(this._parent){actives=[].slice.call(this._parent.querySelectorAll(Selector.ACTIVES)).filter(function(elem){if(typeof _this._config.parent==='string'){return elem.getAttribute('data-parent')===_this._config.parent;}return elem.classList.contains(ClassName.COLLAPSE);});if(actives.length===0){actives=null;}}if(actives){activesData=$(actives).not(this._selector).data(DATA_KEY);if(activesData&&activesData._isTransitioning){return;}}var startEvent=$.Event(Event.SHOW);$(this._element).trigger(startEvent);if(startEvent.isDefaultPrevented()){return;}if(actives){Collapse._jQueryInterface.call($(actives).not(this._selector),'hide');if(!activesData){$(actives).data(DATA_KEY,null);}}var dimension=this._getDimension();$(this._element).removeClass(ClassName.COLLAPSE).addClass(ClassName.COLLAPSING);this._element.style[dimension]=0;if(this._triggerArray.length){$(this._triggerArray).removeClass(ClassName.COLLAPSED).attr('aria-expanded',true);}this.setTransitioning(true);var complete=function complete(){$(_this._element).removeClass(ClassName.COLLAPSING).addClass(ClassName.COLLAPSE).addClass(ClassName.SHOW);_this._element.style[dimension]='';_this.setTransitioning(false);$(_this._element).trigger(Event.SHOWN);};var capitalizedDimension=dimension[0].toUpperCase()+dimension.slice(1);var scrollSize=\"scroll\"+capitalizedDimension;var transitionDuration=Util.getTransitionDurationFromElement(this._element);$(this._element).one(Util.TRANSITION_END,complete).emulateTransitionEnd(transitionDuration);this._element.style[dimension]=this._element[scrollSize]+\"px\";};_proto.hide=function hide(){var _this2=this;if(this._isTransitioning||!$(this._element).hasClass(ClassName.SHOW)){return;}var startEvent=$.Event(Event.HIDE);$(this._element).trigger(startEvent);if(startEvent.isDefaultPrevented()){return;}var dimension=this._getDimension();this._element.style[dimension]=this._element.getBoundingClientRect()[dimension]+\"px\";Util.reflow(this._element);$(this._element).addClass(ClassName.COLLAPSING).removeClass(ClassName.COLLAPSE).removeClass(ClassName.SHOW);var triggerArrayLength=this._triggerArray.length;if(triggerArrayLength>0){for(var i=0;i elements (which change the URL) not inside the collapsible element\nif(event.currentTarget.tagName==='A'){event.preventDefault();}var $trigger=$(this);var selector=Util.getSelectorFromElement(this);var selectors=[].slice.call(document.querySelectorAll(selector));$(selectors).each(function(){var $target=$(this);var data=$target.data(DATA_KEY);var config=data?'toggle':$trigger.data();Collapse._jQueryInterface.call($target,config);});});/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */$.fn[NAME]=Collapse._jQueryInterface;$.fn[NAME].Constructor=Collapse;$.fn[NAME].noConflict=function(){$.fn[NAME]=JQUERY_NO_CONFLICT;return Collapse._jQueryInterface;};return Collapse;});//# sourceMappingURL=collapse.js.map\n'use strict';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 * Bootstrap dropdown.js v4.3.1 (https://getbootstrap.com/)\n * Copyright 2011-2019 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */(function(global,factory){(typeof exports==='undefined'?'undefined':_typeof(exports))==='object'&&typeof module!=='undefined'?module.exports=factory(require('jquery'),require('popper.js'),require('./util.js')):typeof define==='function'&&define.amd?define(['jquery','popper.js','./util.js'],factory):(global=global||self,global.Dropdown=factory(global.jQuery,global.Popper,global.Util));})(undefined,function($,Popper,Util){'use strict';$=$&&$.hasOwnProperty('default')?$['default']:$;Popper=Popper&&Popper.hasOwnProperty('default')?Popper['default']:Popper;Util=Util&&Util.hasOwnProperty('default')?Util['default']:Util;function _defineProperties(target,props){for(var i=0;i0;};_proto._getOffset=function _getOffset(){var _this2=this;var offset={};if(typeof this._config.offset==='function'){offset.fn=function(data){data.offsets=_objectSpread({},data.offsets,_this2._config.offset(data.offsets,_this2._element)||{});return data;};}else{offset.offset=this._config.offset;}return offset;};_proto._getPopperConfig=function _getPopperConfig(){var popperConfig={placement:this._getPlacement(),modifiers:{offset:this._getOffset(),flip:{enabled:this._config.flip},preventOverflow:{boundariesElement:this._config.boundary}// Disable Popper.js if we have a static display\n}};if(this._config.display==='static'){popperConfig.modifiers.applyStyle={enabled:false};}return popperConfig;}// Static\n;Dropdown._jQueryInterface=function _jQueryInterface(config){return this.each(function(){var data=$(this).data(DATA_KEY);var _config=(typeof config==='undefined'?'undefined':_typeof(config))==='object'?config:null;if(!data){data=new Dropdown(this,_config);$(this).data(DATA_KEY,data);}if(typeof config==='string'){if(typeof data[config]==='undefined'){throw new TypeError(\"No method named \\\"\"+config+\"\\\"\");}data[config]();}});};Dropdown._clearMenus=function _clearMenus(event){if(event&&(event.which===RIGHT_MOUSE_BUTTON_WHICH||event.type==='keyup'&&event.which!==TAB_KEYCODE)){return;}var toggles=[].slice.call(document.querySelectorAll(Selector.DATA_TOGGLE));for(var i=0,len=toggles.length;i 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\nif(/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||$(event.target).closest(Selector.MENU).length):!REGEXP_KEYDOWN.test(event.which)){return;}event.preventDefault();event.stopPropagation();if(this.disabled||$(this).hasClass(ClassName.DISABLED)){return;}var parent=Dropdown._getParentFromElement(this);var isActive=$(parent).hasClass(ClassName.SHOW);if(!isActive||isActive&&(event.which===ESCAPE_KEYCODE||event.which===SPACE_KEYCODE)){if(event.which===ESCAPE_KEYCODE){var toggle=parent.querySelector(Selector.DATA_TOGGLE);$(toggle).trigger('focus');}$(this).trigger('click');return;}var items=[].slice.call(parent.querySelectorAll(Selector.VISIBLE_ITEMS));if(items.length===0){return;}var index=items.indexOf(event.target);if(event.which===ARROW_UP_KEYCODE&&index>0){// Up\nindex--;}if(event.which===ARROW_DOWN_KEYCODE&&indexdocument.documentElement.clientHeight;if(!this._isBodyOverflowing&&isModalOverflowing){this._element.style.paddingLeft=this._scrollbarWidth+\"px\";}if(this._isBodyOverflowing&&!isModalOverflowing){this._element.style.paddingRight=this._scrollbarWidth+\"px\";}};_proto._resetAdjustments=function _resetAdjustments(){this._element.style.paddingLeft='';this._element.style.paddingRight='';};_proto._checkScrollbar=function _checkScrollbar(){var rect=document.body.getBoundingClientRect();this._isBodyOverflowing=rect.left+rect.right=maxScroll){var target=this._targets[this._targets.length-1];if(this._activeTarget!==target){this._activate(target);}return;}if(this._activeTarget&&scrollTop0){this._activeTarget=null;this._clear();return;}var offsetLength=this._offsets.length;for(var i=offsetLength;i--;){var isActiveTarget=this._activeTarget!==this._targets[i]&&scrollTop>=this._offsets[i]&&(typeof this._offsets[i+1]==='undefined'||scrollTop and