Welcome to mirror list, hosted at ThFree Co, Russian Federation.

bootstrap.bundle.min.js.map « js « dist - github.com/twbs/bootstrap.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: ec6bdd3801e726983e186ee96106939233b0d255 (plain)
1
{"version":3,"sources":["../../node_modules/popper.js/dist/esm/popper.js","../../js/src/util.js","../../js/src/alert.js","../../js/src/button.js","../../js/src/carousel.js","../../js/src/collapse.js","../../js/src/dropdown.js","../../js/src/modal.js","../../js/src/tooltip.js","../../js/src/popover.js","../../js/src/scrollspy.js","../../js/src/tab.js","../../js/src/index.js"],"names":["isFunction","functionToCheck","toString","call","getStyleComputedProperty","element","property","nodeType","css","window","getComputedStyle","getParentNode","nodeName","parentNode","host","getScrollParent","document","body","ownerDocument","_getStyleComputedProp","overflow","overflowX","overflowY","test","getOffsetParent","offsetParent","indexOf","documentElement","isOffsetContainer","firstElementChild","getRoot","node","findCommonOffsetParent","element1","element2","order","compareDocumentPosition","Node","DOCUMENT_POSITION_FOLLOWING","start","end","range","createRange","setStart","setEnd","commonAncestorContainer","contains","element1root","getScroll","upperSide","arguments","length","undefined","html","scrollingElement","includeScroll","rect","subtract","scrollTop","scrollLeft","modifier","top","bottom","left","right","getBordersSize","styles","axis","sideA","sideB","split","getSize","computedStyle","Math","max","isIE10$1","getWindowSizes","height","width","getClientRect","offsets","_extends","getBoundingClientRect","err","result","sizes","clientWidth","clientHeight","horizScrollbar","offsetWidth","vertScrollbar","offsetHeight","getOffsetRectRelativeToArbitraryNode","children","parent","isIE10","isHTML","childrenRect","parentRect","scrollParent","borderTopWidth","borderLeftWidth","marginTop","marginLeft","getViewportOffsetRectRelativeToArtbitraryNode","relativeOffset","innerWidth","innerHeight","isFixed","getBoundaries","popper","reference","padding","boundariesElement","boundaries","boundariesNode","_getWindowSizes","getArea","_ref","computeAutoPlacement","placement","refRect","rects","sortedAreas","Object","keys","map","key","area","sort","a","b","filteredAreas","filter","_ref2","computedPlacement","variation","getReferenceOffsets","state","getOuterSizes","x","parseFloat","marginBottom","y","marginRight","getOppositePlacement","hash","replace","matched","getPopperOffsets","referenceOffsets","popperRect","popperOffsets","isHoriz","mainSide","secondarySide","measurement","secondaryMeasurement","find","arr","check","Array","prototype","findIndex","prop","value","cur","match","obj","runModifiers","modifiers","data","ends","slice","forEach","console","warn","fn","enabled","update","this","isDestroyed","instance","arrowStyles","attributes","flipped","options","flip","originalPlacement","position","isCreated","onUpdate","onCreate","isModifierEnabled","modifierName","some","name","getSupportedPropertyName","prefixes","upperProp","charAt","toUpperCase","i","prefix","toCheck","style","destroy","removeAttribute","disableEventListeners","removeOnDestroy","removeChild","getWindow","defaultView","attachToScrollParents","event","callback","scrollParents","isBody","target","addEventListener","passive","push","setupEventListeners","updateBound","scrollElement","eventsEnabled","enableEventListeners","scheduleUpdate","removeEventListeners","removeEventListener","cancelAnimationFrame","isNumeric","n","isNaN","isFinite","setStyles","unit","setAttributes","setAttribute","isModifierRequired","requestingName","requestedName","requesting","isRequired","_requesting","requested","getOppositeVariation","clockwise","counter","index","validPlacements","concat","reverse","toValue","str","parseOffset","offset","basePlacement","useHeight","fragments","frag","trim","divider","search","splitRegex","ops","op","mergeWithPrevious","reduce","index2","Util","$","toType","toLowerCase","getSpecialTransitionEndEvent","transition","is","handleObj","handler","apply","transitionEndTest","QUnit","el","createElement","TransitionEndEvent","transitionEndEmulator","duration","called","one","TRANSITION_END","triggerTransitionEnd","_this","random","getElementById","selector","getAttribute","error","trigger","Boolean","componentName","config","configTypes","hasOwnProperty","expectedTypes","valueType","isElement","RegExp","Error","emulateTransitionEnd","supportsTransitionEnd","special","Alert","NAME","JQUERY_NO_CONFLICT","Event","ClassName","_element","close","rootElement","_getRootElement","_triggerCloseEvent","isDefaultPrevented","_removeElement","dispose","removeData","getSelectorFromElement","closest","ALERT","closeEvent","CLOSE","removeClass","SHOW","hasClass","FADE","_destroyElement","detach","CLOSED","remove","_jQueryInterface","each","$element","_handleDismiss","alertInstance","preventDefault","on","CLICK_DATA_API","DISMISS","Constructor","noConflict","Button","Selector","toggle","triggerChangeEvent","addAriaPressed","DATA_TOGGLE","input","INPUT","type","checked","ACTIVE","activeElement","hasAttribute","classList","focus","toggleClass","DATA_TOGGLE_CARROT","button","BUTTON","FOCUS_BLUR_DATA_API","FOCUS","Carousel","DATA_KEY","EVENT_KEY","Default","DefaultType","Direction","_items","_interval","_activeElement","_isPaused","_isSliding","touchTimeout","_config","_getConfig","_indicatorsElement","INDICATORS","_addEventListeners","next","_slide","NEXT","nextWhenVisible","hidden","prev","PREV","pause","NEXT_PREV","cycle","interval","setInterval","visibilityState","bind","to","ACTIVE_ITEM","activeIndex","_getItemIndex","SLID","direction","off","extend","typeCheckConfig","keyboard","KEYDOWN","_this2","_keydown","MOUSEENTER","MOUSELEAVE","TOUCHEND","setTimeout","tagName","which","makeArray","ITEM","_getItemByDirection","isNextDirection","isPrevDirection","lastItemIndex","wrap","itemIndex","_triggerSlideEvent","relatedTarget","eventDirectionName","targetIndex","fromIndex","slideEvent","SLIDE","_setActiveIndicatorElement","nextIndicator","addClass","directionalClassName","orderClassName","activeElementIndex","nextElement","nextElementIndex","isCycling","LEFT","RIGHT","slidEvent","reflow","_this3","action","slide","_dataApiClickHandler","CAROUSEL","slideIndex","DATA_SLIDE","LOAD_DATA_API","DATA_RIDE","$carousel","Collapse","Dimension","_isTransitioning","_triggerArray","id","tabToggles","elem","_parent","_getParent","_addAriaAndCollapsedClass","hide","show","actives","activesData","ACTIVES","startEvent","dimension","_getDimension","COLLAPSE","COLLAPSING","COLLAPSED","attr","setTransitioning","complete","SHOWN","scrollSize","HIDE","HIDDEN","isTransitioning","WIDTH","HEIGHT","jquery","_getTargetFromElement","triggerArray","isOpen","$this","currentTarget","$trigger","$target","isBrowser","longerTimeoutBrowsers","timeoutDuration","navigator","userAgent","debounce","Promise","resolve","then","scheduled","appVersion","classCallCheck","TypeError","createClass","defineProperties","props","descriptor","enumerable","configurable","writable","defineProperty","protoProps","staticProps","assign","source","placements","BEHAVIORS","FLIP","CLOCKWISE","COUNTERCLOCKWISE","Defaults","shift","shiftvariation","_data$offsets","isVertical","side","shiftOffsets","preventOverflow","priority","primary","escapeWithReference","secondary","min","keepTogether","floor","opSide","arrow","arrowElement","querySelector","len","sideCapitalized","altSide","arrowElementSize","center","popperMarginSide","sideValue","round","placementOpposite","flipOrder","behavior","step","refOffsets","overlapsRef","overflowsLeft","overflowsRight","overflowsTop","overflowsBottom","overflowsBoundaries","flippedVariation","flipVariations","inner","subtractLength","bound","computeStyle","legacyGpuAccelerationOption","gpuAcceleration","offsetParentRect","prefixedProperty","willChange","invertTop","invertLeft","x-placement","applyStyle","onLoad","modifierOptions","Popper","requestAnimationFrame","Utils","global","PopperUtils","Dropdown","REGEXP_KEYDOWN","ARROW_UP_KEYCODE","AttachmentMap","_popper","_menu","_getMenuElement","_inNavbar","_detectNavbar","disabled","DISABLED","_getParentFromElement","isActive","_clearMenus","showEvent","DROPUP","MENULEFT","MENURIGHT","_getPopperConfig","NAVBAR_NAV","noop","CLICK","stopPropagation","constructor","MENU","_getPlacement","$parentDropdown","BOTTOM","TOP","TOPEND","DROPRIGHT","DROPLEFT","BOTTOMEND","offsetConf","toggles","context","dropdownMenu","hideEvent","_dataApiKeydownHandler","items","VISIBLE_ITEMS","get","KEYDOWN_DATA_API","KEYUP_DATA_API","FORM_CHILD","e","Modal","_dialog","DIALOG","_backdrop","_isShown","_isBodyOverflowing","_ignoreBackdropClick","_originalBodyPadding","_scrollbarWidth","_checkScrollbar","_setScrollbar","_adjustDialog","OPEN","_setEscapeEvent","_setResizeEvent","CLICK_DISMISS","DATA_DISMISS","MOUSEDOWN_DISMISS","MOUSEUP_DISMISS","_showBackdrop","_showElement","FOCUSIN","_hideModal","handleUpdate","ELEMENT_NODE","appendChild","display","_enforceFocus","shownEvent","transitionComplete","_this4","has","KEYDOWN_DISMISS","RESIZE","_this6","_resetAdjustments","_resetScrollbar","_this7","_removeBackdrop","animate","backdrop","doAnimate","className","BACKDROP","appendTo","_this8","callbackRemove","isModalOverflowing","scrollHeight","paddingLeft","paddingRight","_getScrollbarWidth","FIXED_CONTENT","actualPadding","calculatedPadding","_this9","STICKY_CONTENT","actualMargin","calculatedMargin","NAVBAR_TOGGLER","margin","scrollDiv","SCROLLBAR_MEASURER","scrollbarWidth","Tooltip","BSCLS_PREFIX_REGEX","HoverState","Trigger","_isEnabled","_timeout","_hoverState","_activeTrigger","tip","_setListeners","enable","disable","toggleEnabled","dataKey","_getDelegateConfig","click","_isWithActiveTrigger","_enter","_leave","getTipElement","isWithContent","isInTheDom","tipId","getUID","setContent","animation","attachment","_getAttachment","addAttachmentClass","container","INSERTED","fallbackPlacement","ARROW","_handlePopperPlacementChange","_fixTransition","prevHoverState","OUT","_TRANSITION_DURATION","_cleanTipClass","HOVER","getTitle","CLASS_PREFIX","template","$tip","setElementContent","TOOLTIP_INNER","content","empty","append","text","title","MANUAL","eventIn","eventOut","FOCUSOUT","_fixTitle","titleType","delay","tabClass","join","initConfigAnimation","Popover","_getContent","TITLE","CONTENT","ScrollSpy","OffsetMethod","_scrollElement","_selector","NAV_LINKS","LIST_ITEMS","DROPDOWN_ITEMS","_offsets","_targets","_activeTarget","_scrollHeight","SCROLL","_process","refresh","autoMethod","POSITION","OFFSET","offsetMethod","method","offsetBase","_getScrollTop","_getScrollHeight","targetSelector","targetBCR","item","pageYOffset","_getOffsetHeight","maxScroll","_activate","_clear","queries","$link","DROPDOWN_ITEM","DROPDOWN","DROPDOWN_TOGGLE","parents","NAV_LIST_GROUP","NAV_ITEMS","ACTIVATE","scrollSpys","DATA_SPY","$spy","Tab","previous","listElement","itemSelector","ACTIVE_UL","hiddenEvent","activeElements","active","_transitionComplete","dropdownChild","DROPDOWN_ACTIVE_CHILD","DROPDOWN_MENU","dropdownElement","version"],"mappings":"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","sourcesContent":["/**!\n * @fileOverview Kickass library to create and place poppers near their reference elements.\n * @version 1.12.6\n * @license\n * Copyright (c) 2016 Federico Zivolo and contributors\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nvar isBrowser = typeof window !== 'undefined' && typeof window.document !== 'undefined';\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    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 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 window.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)/.test(overflow + overflowY + overflowX)) {\n    return element;\n  }\n\n  return getScrollParent(getParentNode(element));\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  // NOTE: 1 DOM access here\n  var offsetParent = element && element.offsetParent;\n  var nodeName = offsetParent && offsetParent.nodeName;\n\n  if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {\n    if (element) {\n      return element.ownerDocument.documentElement;\n    }\n\n    return window.document.documentElement;\n  }\n\n  // .offsetParent will return the closest TD or TABLE in case\n  // no offsetParent is present, I hate this job...\n  if (['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 window.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 +styles['border' + sideA + 'Width'].split('px')[0] + +styles['border' + sideB + 'Width'].split('px')[0];\n}\n\n/**\n * Tells if you are running Internet Explorer 10\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean} isIE10\n */\nvar isIE10 = undefined;\n\nvar isIE10$1 = function () {\n  if (isIE10 === undefined) {\n    isIE10 = navigator.appVersion.indexOf('MSIE 10') !== -1;\n  }\n  return isIE10;\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], isIE10$1() ? html['offset' + axis] + computedStyle['margin' + (axis === 'Height' ? 'Top' : 'Left')] + computedStyle['margin' + (axis === 'Height' ? 'Bottom' : 'Right')] : 0);\n}\n\nfunction getWindowSizes() {\n  var body = window.document.body;\n  var html = window.document.documentElement;\n  var computedStyle = isIE10$1() && window.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  if (isIE10$1()) {\n    try {\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    } catch (err) {}\n  } else {\n    rect = element.getBoundingClientRect();\n  }\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() : {};\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 isIE10 = isIE10$1();\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 = +styles.borderTopWidth.split('px')[0];\n  var borderLeftWidth = +styles.borderLeftWidth.split('px')[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 = +styles.marginTop.split('px')[0];\n    var marginLeft = +styles.marginLeft.split('px')[0];\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 ? 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 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 = getScroll(html);\n  var scrollLeft = getScroll(html, 'left');\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  return isFixed(getParentNode(element));\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 * @returns {Object} Coordinates of the boundaries\n */\nfunction getBoundaries(popper, reference, padding, boundariesElement) {\n  // NOTE: 1 DOM access here\n  var boundaries = { top: 0, left: 0 };\n  var offsetParent = findCommonOffsetParent(popper, reference);\n\n  // Handle viewport case\n  if (boundariesElement === 'viewport') {\n    boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent);\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(popper));\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);\n\n    // In case of HTML, we need a different computation\n    if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {\n      var _getWindowSizes = getWindowSizes(),\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  boundaries.left += padding;\n  boundaries.top += padding;\n  boundaries.right -= padding;\n  boundaries.bottom -= padding;\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 * @returns {Object} An object containing the offsets which will be applied to the popper\n */\nfunction getReferenceOffsets(state, popper, reference) {\n  var commonOffsetParent = findCommonOffsetParent(popper, reference);\n  return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent);\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 styles = window.getComputedStyle(element);\n  var x = parseFloat(styles.marginTop) + parseFloat(styles.marginBottom);\n  var y = parseFloat(styles.marginLeft) + parseFloat(styles.marginRight);\n  var result = {\n    width: element.offsetWidth + y,\n    height: element.offsetHeight + x\n  };\n  return result;\n}\n\n/**\n * Get the opposite placement of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement\n * @returns {String} flipped placement\n */\nfunction getOppositePlacement(placement) {\n  var hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };\n  return placement.replace(/left|right|bottom|top/g, function (matched) {\n    return hash[matched];\n  });\n}\n\n/**\n * Get offsets to the popper\n * @method\n * @memberof Popper.Utils\n * @param {Object} position - CSS position the Popper will get applied\n * @param {HTMLElement} popper - the popper element\n * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this)\n * @param {String} placement - one of the valid placement options\n * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper\n */\nfunction getPopperOffsets(popper, referenceOffsets, placement) {\n  placement = placement.split('-')[0];\n\n  // Get popper node sizes\n  var popperRect = getOuterSizes(popper);\n\n  // Add position, width and height to our offsets object\n  var popperOffsets = {\n    width: popperRect.width,\n    height: popperRect.height\n  };\n\n  // depending by the popper placement we have to compute its offsets slightly differently\n  var isHoriz = ['right', 'left'].indexOf(placement) !== -1;\n  var mainSide = isHoriz ? 'top' : 'left';\n  var secondarySide = isHoriz ? 'left' : 'top';\n  var measurement = isHoriz ? 'height' : 'width';\n  var secondaryMeasurement = !isHoriz ? 'height' : 'width';\n\n  popperOffsets[mainSide] = referenceOffsets[mainSide] + referenceOffsets[measurement] / 2 - popperRect[measurement] / 2;\n  if (placement === secondarySide) {\n    popperOffsets[secondarySide] = referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];\n  } else {\n    popperOffsets[secondarySide] = referenceOffsets[getOppositePlacement(secondarySide)];\n  }\n\n  return popperOffsets;\n}\n\n/**\n * Mimics the `find` method of Array\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nfunction find(arr, check) {\n  // use native find if supported\n  if (Array.prototype.find) {\n    return arr.find(check);\n  }\n\n  // use `filter` to obtain the same behavior of `find`\n  return arr.filter(check)[0];\n}\n\n/**\n * Return the index of the matching object\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nfunction findIndex(arr, prop, value) {\n  // use native findIndex if supported\n  if (Array.prototype.findIndex) {\n    return arr.findIndex(function (cur) {\n      return cur[prop] === value;\n    });\n  }\n\n  // use `find` + `indexOf` if `findIndex` isn't supported\n  var match = find(arr, function (obj) {\n    return obj[prop] === value;\n  });\n  return arr.indexOf(match);\n}\n\n/**\n * Loop trough the list of modifiers and run them in order,\n * each of them will then edit the data object.\n * @method\n * @memberof Popper.Utils\n * @param {dataObject} data\n * @param {Array} modifiers\n * @param {String} ends - Optional modifier name used as stopper\n * @returns {dataObject}\n */\nfunction runModifiers(modifiers, data, ends) {\n  var modifiersToRun = ends === undefined ? modifiers : modifiers.slice(0, findIndex(modifiers, 'name', ends));\n\n  modifiersToRun.forEach(function (modifier) {\n    if (modifier['function']) {\n      // eslint-disable-line dot-notation\n      console.warn('`modifier.function` is deprecated, use `modifier.fn`!');\n    }\n    var fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation\n    if (modifier.enabled && isFunction(fn)) {\n      // Add properties to offsets to make them a complete clientRect object\n      // we do this before each modifier to make sure the previous one doesn't\n      // mess with these values\n      data.offsets.popper = getClientRect(data.offsets.popper);\n      data.offsets.reference = getClientRect(data.offsets.reference);\n\n      data = fn(data, modifier);\n    }\n  });\n\n  return data;\n}\n\n/**\n * Updates the position of the popper, computing the new offsets and applying\n * the new style.<br />\n * Prefer `scheduleUpdate` over `update` because of performance reasons.\n * @method\n * @memberof Popper\n */\nfunction update() {\n  // if popper is destroyed, don't perform any further update\n  if (this.state.isDestroyed) {\n    return;\n  }\n\n  var data = {\n    instance: this,\n    styles: {},\n    arrowStyles: {},\n    attributes: {},\n    flipped: false,\n    offsets: {}\n  };\n\n  // compute reference element offsets\n  data.offsets.reference = getReferenceOffsets(this.state, this.popper, this.reference);\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  // compute the popper offsets\n  data.offsets.popper = getPopperOffsets(this.popper, data.offsets.reference, data.placement);\n  data.offsets.popper.position = '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 - 1; i++) {\n    var prefix = prefixes[i];\n    var toCheck = prefix ? '' + prefix + upperProp : property;\n    if (typeof window.document.body.style[toCheck] !== 'undefined') {\n      return toCheck;\n    }\n  }\n  return null;\n}\n\n/**\n * Destroy 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.left = '';\n    this.popper.style.position = '';\n    this.popper.style.top = '';\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    window.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);\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: 'absolute' });\n\n  return options;\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 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  // floor sides to avoid blurry text\n  var offsets = {\n    left: Math.floor(popper.left),\n    top: Math.floor(popper.top),\n    bottom: Math.floor(popper.bottom),\n    right: Math.floor(popper.right)\n  };\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    top = -offsetParentRect.height + offsets.bottom;\n  } else {\n    top = offsets.top;\n  }\n  if (sideB === 'right') {\n    left = -offsetParentRect.width + offsets.right;\n  } else {\n    left = offsets.left;\n  }\n  if (gpuAcceleration && prefixedProperty) {\n    styles[prefixedProperty] = 'translate3d(' + left + 'px, ' + top + 'px, 0)';\n    styles[sideA] = 0;\n    styles[sideB] = 0;\n    styles.willChange = 'transform';\n  } else {\n    // othwerise, we use the standard `top`, `left`, `bottom` and `right` properties\n    var invertTop = sideA === 'bottom' ? -1 : 1;\n    var invertLeft = sideB === 'right' ? -1 : 1;\n    styles[sideA] = top * invertTop;\n    styles[sideB] = left * invertLeft;\n    styles.willChange = sideA + ', ' + sideB;\n  }\n\n  // Attributes\n  var attributes = {\n    'x-placement': data.placement\n  };\n\n  // Update `data` attributes, styles and arrowStyles\n  data.attributes = _extends({}, attributes, data.attributes);\n  data.styles = _extends({}, styles, data.styles);\n  data.arrowStyles = _extends({}, data.offsets.arrow, data.arrowStyles);\n\n  return data;\n}\n\n/**\n * Helper used to know if the given modifier depends from another one.<br />\n * It checks if the needed modifier is listed and enabled.\n * @method\n * @memberof Popper.Utils\n * @param {Array} modifiers - list of modifiers\n * @param {String} requestingName - name of requesting modifier\n * @param {String} requestedName - name of requested modifier\n * @returns {Boolean}\n */\nfunction isModifierRequired(modifiers, requestingName, requestedName) {\n  var requesting = find(modifiers, function (_ref) {\n    var name = _ref.name;\n    return name === requestingName;\n  });\n\n  var isRequired = !!requesting && modifiers.some(function (modifier) {\n    return modifier.name === requestedName && modifier.enabled && modifier.order < requesting.order;\n  });\n\n  if (!isRequired) {\n    var _requesting = '`' + requestingName + '`';\n    var requested = '`' + requestedName + '`';\n    console.warn(requested + ' modifier is required by ' + _requesting + ' modifier in order to work, be sure to include it before ' + _requesting + '!');\n  }\n  return isRequired;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction arrow(data, options) {\n  // 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 conjuction\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\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 popperMarginSide = getStyleComputedProperty(data.instance.popper, 'margin' + sideCapitalized).replace('px', '');\n  var sideValue = center - getClientRect(data.offsets.popper)[side] - popperMarginSide;\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 = {};\n  data.offsets.arrow[side] = Math.round(sideValue);\n  data.offsets.arrow[altSide] = ''; // make sure to unset any eventual altSide value from the DOM node\n\n  return data;\n}\n\n/**\n * Get the opposite placement variation of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement variation\n * @returns {String} flipped placement variation\n */\nfunction getOppositeVariation(variation) {\n  if (variation === 'end') {\n    return 'start';\n  } else if (variation === 'start') {\n    return 'end';\n  }\n  return variation;\n}\n\n/**\n * List of accepted placements to use as values of the `placement` option.<br />\n * Valid placements are:\n * - `auto`\n * - `top`\n * - `right`\n * - `bottom`\n * - `left`\n *\n * Each placement can have a variation from this list:\n * - `-start`\n * - `-end`\n *\n * Variations are interpreted easily if you think of them as the left to right\n * written languages. Horizontally (`top` and `bottom`), `start` is left and `end`\n * is right.<br />\n * Vertically (`left` and `right`), `start` is top and `end` is bottom.\n *\n * Some valid examples are:\n * - `top-end` (on top of reference, right aligned)\n * - `right-start` (on right of reference, top aligned)\n * - `bottom` (on bottom, centered)\n * - `auto-right` (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);\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  var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, boundariesElement);\n  options.boundaries = boundaries;\n\n  var order = options.priority;\n  var popper = data.offsets.popper;\n\n  var check = {\n    primary: function primary(placement) {\n      var value = popper[placement];\n      if (popper[placement] < boundaries[placement] && !options.escapeWithReference) {\n        value = Math.max(popper[placement], boundaries[placement]);\n      }\n      return defineProperty({}, placement, value);\n    },\n    secondary: function secondary(placement) {\n      var mainSide = placement === 'right' ? 'left' : 'top';\n      var value = popper[mainSide];\n      if (popper[placement] > boundaries[placement] && !options.escapeWithReference) {\n        value = Math.min(popper[mainSide], boundaries[placement] - (placement === 'right' ? popper.width : popper.height));\n      }\n      return defineProperty({}, mainSide, value);\n    }\n  };\n\n  order.forEach(function (placement) {\n    var side = ['left', 'top'].indexOf(placement) !== -1 ? 'primary' : 'secondary';\n    popper = _extends({}, popper, check[side](placement));\n  });\n\n  data.offsets.popper = popper;\n\n  return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction shift(data) {\n  var placement = data.placement;\n  var basePlacement = placement.split('-')[0];\n  var shiftvariation = placement.split('-')[1];\n\n  // if shift shiftvariation is specified, run the modifier\n  if (shiftvariation) {\n    var _data$offsets = data.offsets,\n        reference = _data$offsets.reference,\n        popper = _data$offsets.popper;\n\n    var isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;\n    var side = isVertical ? 'left' : 'top';\n    var measurement = isVertical ? 'width' : 'height';\n\n    var shiftOffsets = {\n      start: defineProperty({}, side, reference[side]),\n      end: defineProperty({}, side, reference[side] + reference[measurement] - popper[measurement])\n    };\n\n    data.offsets.popper = _extends({}, popper, shiftOffsets[shiftvariation]);\n  }\n\n  return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction hide(data) {\n  if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) {\n    return data;\n  }\n\n  var refRect = data.offsets.reference;\n  var bound = find(data.instance.modifiers, function (modifier) {\n    return modifier.name === 'preventOverflow';\n  }).boundaries;\n\n  if (refRect.bottom < bound.top || refRect.left > bound.right || refRect.top > bound.bottom || refRect.right < bound.left) {\n    // Avoid unnecessary DOM access if visibility hasn't changed\n    if (data.hide === true) {\n      return data;\n    }\n\n    data.hide = true;\n    data.attributes['x-out-of-boundaries'] = '';\n  } else {\n    // Avoid unnecessary DOM access if visibility hasn't changed\n    if (data.hide === false) {\n      return data;\n    }\n\n    data.hide = false;\n    data.attributes['x-out-of-boundaries'] = false;\n  }\n\n  return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction inner(data) {\n  var placement = data.placement;\n  var basePlacement = placement.split('-')[0];\n  var _data$offsets = data.offsets,\n      popper = _data$offsets.popper,\n      reference = _data$offsets.reference;\n\n  var isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1;\n\n  var subtractLength = ['top', 'left'].indexOf(basePlacement) === -1;\n\n  popper[isHoriz ? 'left' : 'top'] = reference[basePlacement] - (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0);\n\n  data.placement = getOppositePlacement(placement);\n  data.offsets.popper = getClientRect(popper);\n\n  return data;\n}\n\n/**\n * Modifier function, each modifier can have a function of this type assigned\n * to its `fn` property.<br />\n * These functions will be called on each update, this means that you must\n * make sure they are performant enough to avoid performance bottlenecks.\n *\n * @function ModifierFn\n * @argument {dataObject} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {dataObject} The data object, properly modified\n */\n\n/**\n * Modifiers are plugins used to alter the behavior of your poppers.<br />\n * Popper.js uses a set of 9 modifiers to provide all the basic functionalities\n * needed by the library.\n *\n * Usually you don't want to override the `order`, `fn` and `onLoad` props.\n * All the other properties are configurations that could be tweaked.\n * @namespace modifiers\n */\nvar modifiers = {\n  /**\n   * Modifier used to shift the popper on the start or end of its reference\n   * element.<br />\n   * It will read the variation of the `placement` property.<br />\n   * It can be one either `-end` or `-start`.\n   * @memberof modifiers\n   * @inner\n   */\n  shift: {\n    /** @prop {number} order=100 - Index used to define the order of execution */\n    order: 100,\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n    /** @prop {ModifierFn} */\n    fn: shift\n  },\n\n  /**\n   * The `offset` modifier can shift your popper on both its axis.\n   *\n   * It accepts the following units:\n   * - `px` or unitless, interpreted as pixels\n   * - `%` or `%r`, percentage relative to the length of the reference element\n   * - `%p`, percentage relative to the length of the popper element\n   * - `vw`, CSS viewport width unit\n   * - `vh`, CSS viewport height unit\n   *\n   * For length is intended the main axis relative to the placement of the popper.<br />\n   * This means that if the placement is `top` or `bottom`, the length will be the\n   * `width`. In case of `left` or `right`, it will be the height.\n   *\n   * You can provide a single value (as `Number` or `String`), or a pair of values\n   * as `String` divided by a comma or one (or more) white spaces.<br />\n   * The latter is a deprecated method because it leads to confusion and will be\n   * removed in v2.<br />\n   * Additionally, it accepts additions and subtractions between different units.\n   * Note that multiplications and divisions aren't supported.\n   *\n   * Valid examples are:\n   * ```\n   * 10\n   * '10%'\n   * '10, 10'\n   * '10%, 10'\n   * '10 + 10%'\n   * '10 - 5vh + 3%'\n   * '-10px + 5vh, 5px - 6%'\n   * ```\n   * > **NB**: If you desire to apply offsets to your poppers in a way that may make them overlap\n   * > with their reference element, unfortunately, you will have to disable the `flip` modifier.\n   * > More on this [reading 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   * An scenario exists where the reference itself is not within the boundaries.<br />\n   * We can say it has \"escaped the boundaries\" — or just \"escaped\".<br />\n   * In this case we need to decide whether the popper should either:\n   *\n   * - detach from the reference and remain \"trapped\" in the boundaries, or\n   * - if it should ignore the boundary and \"escape with its reference\"\n   *\n   * When `escapeWithReference` is set to`true` and reference is completely\n   * outside its boundaries, the popper will overflow (or completely leave)\n   * the boundaries in order to remain attached to the edge of the reference.\n   *\n   * @memberof modifiers\n   * @inner\n   */\n  preventOverflow: {\n    /** @prop {number} order=300 - Index used to define the order of execution */\n    order: 300,\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n    /** @prop {ModifierFn} */\n    fn: preventOverflow,\n    /**\n     * @prop {Array} [priority=['left','right','top','bottom']]\n     * Popper will try to prevent overflow following these priorities by default,\n     * then, it could overflow on the left and on top of the `boundariesElement`\n     */\n    priority: ['left', 'right', 'top', 'bottom'],\n    /**\n     * @prop {number} padding=5\n     * Amount of pixel used to define a minimum distance between the boundaries\n     * and the popper this makes sure the popper has always 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 eachothers\n   * without leaving any gap between the two. Expecially useful when the arrow is\n   * enabled and you want to assure it to point 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 conjuction 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 you 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 informations used by Popper.js\n * this object get passed to modifiers and to the `onCreate` and `onUpdate` callbacks.\n * @name dataObject\n * @property {Object} data.instance The Popper.js instance\n * @property {String} data.placement Placement applied to popper\n * @property {String} data.originalPlacement Placement originally defined on init\n * @property {Boolean} data.flipped True if popper has been flipped by flip modifier\n * @property {Boolean} data.hide True if the reference element is out of boundaries, useful to know when to hide the popper.\n * @property {HTMLElement} data.arrowElement Node used as arrow by arrow modifier\n * @property {Object} data.styles Any CSS property defined here will be applied to the popper, it expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.arrowStyles Any CSS property defined here will be applied to the popper arrow, it expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.boundaries Offsets of the popper boundaries\n * @property {Object} data.offsets The measurements of popper, reference and arrow elements.\n * @property {Object} data.offsets.popper `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.reference `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.arrow] `top` and `left` offsets, only one of them will be different from 0\n */\n\n/**\n * Default options provided to Popper.js constructor.<br />\n * These can be overriden using the `options` argument of Popper.js.<br />\n * To override an option, simply pass as 3rd argument an object with the same\n * structure of this object, 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   * Whether events (resize, scroll) are initially enabled\n   * @prop {Boolean} eventsEnabled=true\n   */\n  eventsEnabled: true,\n\n  /**\n   * Set to true if you want to automatically remove the popper when\n   * you call the `destroy` method.\n   * @prop {Boolean} removeOnDestroy=false\n   */\n  removeOnDestroy: false,\n\n  /**\n   * Callback called when the popper is created.<br />\n   * By default, is set to no-op.<br />\n   * Access Popper.js instance with `data.instance`.\n   * @prop {onCreate}\n   */\n  onCreate: function onCreate() {},\n\n  /**\n   * Callback called when the popper is updated, this callback is not called\n   * on the initialization/creation of the popper, but only on subsequent\n   * updates.<br />\n   * By default, is set to no-op.<br />\n   * Access Popper.js instance with `data.instance`.\n   * @prop {onUpdate}\n   */\n  onUpdate: function onUpdate() {},\n\n  /**\n   * List of modifiers used to modify the offsets before they are applied to the popper.\n   * They provide most of the functionalities of Popper.js\n   * @prop {modifiers}\n   */\n  modifiers: modifiers\n};\n\n/**\n * @callback onCreate\n * @param {dataObject} data\n */\n\n/**\n * @callback onUpdate\n * @param {dataObject} data\n */\n\n// Utils\n// Methods\nvar Popper = function () {\n  /**\n   * Create 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 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     * Schedule an update, it will run on the next UI update available\n     * @method scheduleUpdate\n     * @memberof Popper\n     */\n\n\n    /**\n     * Collection of utilities useful when writing custom modifiers.\n     * Starting from version 1.7, this method is available only if you\n     * include `popper-utils.js` before `popper.js`.\n     *\n     * **DEPRECATION**: This way to access PopperUtils is deprecated\n     * and will be removed in v2! Use the PopperUtils module directly instead.\n     * Due to the high instability of the methods contained in Utils, we can't\n     * guarantee them to follow semver. Use them at your own risk!\n     * @static\n     * @private\n     * @type {Object}\n     * @deprecated since version 1.8\n     * @member Utils\n     * @memberof Popper\n     */\n\n  }]);\n  return Popper;\n}();\n\n/**\n * The `referenceObject` is an object that provides an interface compatible with Popper.js\n * and lets you use it as replacement of a real DOM node.<br />\n * You can use this method to position a popper relatively to a set of coordinates\n * in case you don't have a DOM node to use as reference.\n *\n * ```\n * new Popper(referenceObject, popperNode);\n * ```\n *\n * NB: This feature isn't supported in Internet Explorer 10\n * @name referenceObject\n * @property {Function} data.getBoundingClientRect\n * A function that returns a set of coordinates compatible with the native `getBoundingClientRect` method.\n * @property {number} data.clientWidth\n * An ES6 getter that will return the width of the virtual reference element.\n * @property {number} data.clientHeight\n * An ES6 getter that will return the height of the virtual reference element.\n */\n\n\nPopper.Utils = (typeof window !== 'undefined' ? window : global).PopperUtils;\nPopper.placements = placements;\nPopper.Defaults = Defaults;\n\nexport default Popper;\n//# sourceMappingURL=popper.js.map\n","import $ from 'jquery'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.0.0-beta.2): util.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst Util = (($) => {\n\n\n  /**\n   * ------------------------------------------------------------------------\n   * Private TransitionEnd Helpers\n   * ------------------------------------------------------------------------\n   */\n\n  let transition = false\n\n  const MAX_UID = 1000000\n\n  const TransitionEndEvent = {\n    WebkitTransition : 'webkitTransitionEnd',\n    transition       : 'transitionend'\n  }\n\n  // shoutout AngusCroll (https://goo.gl/pxwQGp)\n  function toType(obj) {\n    return {}.toString.call(obj).match(/\\s([a-zA-Z]+)/)[1].toLowerCase()\n  }\n\n  function getSpecialTransitionEndEvent() {\n    return {\n      bindType: transition.end,\n      delegateType: transition.end,\n      handle(event) {\n        if ($(event.target).is(this)) {\n          return event.handleObj.handler.apply(this, arguments) // eslint-disable-line prefer-rest-params\n        }\n        return undefined // eslint-disable-line no-undefined\n      }\n    }\n  }\n\n  function transitionEndTest() {\n    if (window.QUnit) {\n      return false\n    }\n\n    const el = document.createElement('bootstrap')\n\n    for (const name in TransitionEndEvent) {\n      if (typeof el.style[name] !== 'undefined') {\n        return {\n          end: TransitionEndEvent[name]\n        }\n      }\n    }\n\n    return false\n  }\n\n  function transitionEndEmulator(duration) {\n    let called = false\n\n    $(this).one(Util.TRANSITION_END, () => {\n      called = true\n    })\n\n    setTimeout(() => {\n      if (!called) {\n        Util.triggerTransitionEnd(this)\n      }\n    }, duration)\n\n    return this\n  }\n\n  function setTransitionEndSupport() {\n    transition = transitionEndTest()\n\n    $.fn.emulateTransitionEnd = transitionEndEmulator\n\n    if (Util.supportsTransitionEnd()) {\n      $.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent()\n    }\n  }\n\n\n  /**\n   * --------------------------------------------------------------------------\n   * Public Util Api\n   * --------------------------------------------------------------------------\n   */\n\n  const Util = {\n\n    TRANSITION_END: 'bsTransitionEnd',\n\n    getUID(prefix) {\n      do {\n        // eslint-disable-next-line no-bitwise\n        prefix += ~~(Math.random() * MAX_UID) // \"~~\" acts like a faster Math.floor() here\n      } while (document.getElementById(prefix))\n      return prefix\n    },\n\n    getSelectorFromElement(element) {\n      let selector = element.getAttribute('data-target')\n      if (!selector || selector === '#') {\n        selector = element.getAttribute('href') || ''\n      }\n\n      try {\n        const $selector = $(document).find(selector)\n        return $selector.length > 0 ? selector : null\n      } catch (error) {\n        return null\n      }\n    },\n\n    reflow(element) {\n      return element.offsetHeight\n    },\n\n    triggerTransitionEnd(element) {\n      $(element).trigger(transition.end)\n    },\n\n    supportsTransitionEnd() {\n      return Boolean(transition)\n    },\n\n    isElement(obj) {\n      return (obj[0] || obj).nodeType\n    },\n\n    typeCheckConfig(componentName, config, configTypes) {\n      for (const property in configTypes) {\n        if (Object.prototype.hasOwnProperty.call(configTypes, property)) {\n          const expectedTypes = configTypes[property]\n          const value         = config[property]\n          const valueType     = value && Util.isElement(value) ?\n                                'element' : toType(value)\n\n          if (!new RegExp(expectedTypes).test(valueType)) {\n            throw new Error(\n              `${componentName.toUpperCase()}: ` +\n              `Option \"${property}\" provided type \"${valueType}\" ` +\n              `but expected type \"${expectedTypes}\".`)\n          }\n        }\n      }\n    }\n  }\n\n  setTransitionEndSupport()\n\n  return Util\n\n})($)\n\nexport default Util\n","import $ from 'jquery'\nimport Util from './util'\n\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.0.0-beta.2): alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst Alert = (($) => {\n\n\n  /**\n   * ------------------------------------------------------------------------\n   * Constants\n   * ------------------------------------------------------------------------\n   */\n\n  const NAME                = 'alert'\n  const VERSION             = '4.0.0-beta.2'\n  const DATA_KEY            = 'bs.alert'\n  const EVENT_KEY           = `.${DATA_KEY}`\n  const DATA_API_KEY        = '.data-api'\n  const JQUERY_NO_CONFLICT  = $.fn[NAME]\n  const TRANSITION_DURATION = 150\n\n  const Selector = {\n    DISMISS : '[data-dismiss=\"alert\"]'\n  }\n\n  const Event = {\n    CLOSE          : `close${EVENT_KEY}`,\n    CLOSED         : `closed${EVENT_KEY}`,\n    CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`\n  }\n\n  const ClassName = {\n    ALERT : 'alert',\n    FADE  : 'fade',\n    SHOW  : 'show'\n  }\n\n\n  /**\n   * ------------------------------------------------------------------------\n   * Class Definition\n   * ------------------------------------------------------------------------\n   */\n\n  class Alert {\n\n    constructor(element) {\n      this._element = element\n    }\n\n\n    // getters\n\n    static get VERSION() {\n      return VERSION\n    }\n\n\n    // public\n\n    close(element) {\n      element = element || this._element\n\n      const rootElement = this._getRootElement(element)\n      const customEvent = this._triggerCloseEvent(rootElement)\n\n      if (customEvent.isDefaultPrevented()) {\n        return\n      }\n\n      this._removeElement(rootElement)\n    }\n\n    dispose() {\n      $.removeData(this._element, DATA_KEY)\n      this._element = null\n    }\n\n\n    // private\n\n    _getRootElement(element) {\n      const selector = Util.getSelectorFromElement(element)\n      let parent     = false\n\n      if (selector) {\n        parent = $(selector)[0]\n      }\n\n      if (!parent) {\n        parent = $(element).closest(`.${ClassName.ALERT}`)[0]\n      }\n\n      return parent\n    }\n\n    _triggerCloseEvent(element) {\n      const closeEvent = $.Event(Event.CLOSE)\n\n      $(element).trigger(closeEvent)\n      return closeEvent\n    }\n\n    _removeElement(element) {\n      $(element).removeClass(ClassName.SHOW)\n\n      if (!Util.supportsTransitionEnd() ||\n          !$(element).hasClass(ClassName.FADE)) {\n        this._destroyElement(element)\n        return\n      }\n\n      $(element)\n        .one(Util.TRANSITION_END, (event) => this._destroyElement(element, event))\n        .emulateTransitionEnd(TRANSITION_DURATION)\n    }\n\n    _destroyElement(element) {\n      $(element)\n        .detach()\n        .trigger(Event.CLOSED)\n        .remove()\n    }\n\n\n    // static\n\n    static _jQueryInterface(config) {\n      return this.each(function () {\n        const $element = $(this)\n        let data       = $element.data(DATA_KEY)\n\n        if (!data) {\n          data = new Alert(this)\n          $element.data(DATA_KEY, data)\n        }\n\n        if (config === 'close') {\n          data[config](this)\n        }\n      })\n    }\n\n    static _handleDismiss(alertInstance) {\n      return function (event) {\n        if (event) {\n          event.preventDefault()\n        }\n\n        alertInstance.close(this)\n      }\n    }\n\n  }\n\n\n  /**\n   * ------------------------------------------------------------------------\n   * Data Api implementation\n   * ------------------------------------------------------------------------\n   */\n\n  $(document).on(\n    Event.CLICK_DATA_API,\n    Selector.DISMISS,\n    Alert._handleDismiss(new Alert())\n  )\n\n\n  /**\n   * ------------------------------------------------------------------------\n   * jQuery\n   * ------------------------------------------------------------------------\n   */\n\n  $.fn[NAME]             = Alert._jQueryInterface\n  $.fn[NAME].Constructor = Alert\n  $.fn[NAME].noConflict  = function () {\n    $.fn[NAME] = JQUERY_NO_CONFLICT\n    return Alert._jQueryInterface\n  }\n\n  return Alert\n\n})($)\n\nexport default Alert\n","import $ from 'jquery'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.0.0-beta.2): button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst Button = (($) => {\n\n\n  /**\n   * ------------------------------------------------------------------------\n   * Constants\n   * ------------------------------------------------------------------------\n   */\n\n  const NAME                = 'button'\n  const VERSION             = '4.0.0-beta.2'\n  const DATA_KEY            = 'bs.button'\n  const EVENT_KEY           = `.${DATA_KEY}`\n  const DATA_API_KEY        = '.data-api'\n  const JQUERY_NO_CONFLICT  = $.fn[NAME]\n\n  const ClassName = {\n    ACTIVE : 'active',\n    BUTTON : 'btn',\n    FOCUS  : 'focus'\n  }\n\n  const Selector = {\n    DATA_TOGGLE_CARROT : '[data-toggle^=\"button\"]',\n    DATA_TOGGLE        : '[data-toggle=\"buttons\"]',\n    INPUT              : 'input',\n    ACTIVE             : '.active',\n    BUTTON             : '.btn'\n  }\n\n  const Event = {\n    CLICK_DATA_API      : `click${EVENT_KEY}${DATA_API_KEY}`,\n    FOCUS_BLUR_DATA_API : `focus${EVENT_KEY}${DATA_API_KEY} `\n                        + `blur${EVENT_KEY}${DATA_API_KEY}`\n  }\n\n\n  /**\n   * ------------------------------------------------------------------------\n   * Class Definition\n   * ------------------------------------------------------------------------\n   */\n\n  class Button {\n\n    constructor(element) {\n      this._element = element\n    }\n\n\n    // getters\n\n    static get VERSION() {\n      return VERSION\n    }\n\n\n    // public\n\n    toggle() {\n      let triggerChangeEvent = true\n      let addAriaPressed = true\n      const rootElement      = $(this._element).closest(\n        Selector.DATA_TOGGLE\n      )[0]\n\n      if (rootElement) {\n        const input = $(this._element).find(Selector.INPUT)[0]\n\n        if (input) {\n          if (input.type === 'radio') {\n            if (input.checked &&\n              $(this._element).hasClass(ClassName.ACTIVE)) {\n              triggerChangeEvent = false\n\n            } else {\n              const activeElement = $(rootElement).find(Selector.ACTIVE)[0]\n\n              if (activeElement) {\n                $(activeElement).removeClass(ClassName.ACTIVE)\n              }\n            }\n          }\n\n          if (triggerChangeEvent) {\n            if (input.hasAttribute('disabled') ||\n              rootElement.hasAttribute('disabled') ||\n              input.classList.contains('disabled') ||\n              rootElement.classList.contains('disabled')) {\n              return\n            }\n            input.checked = !$(this._element).hasClass(ClassName.ACTIVE)\n            $(input).trigger('change')\n          }\n\n          input.focus()\n          addAriaPressed = false\n        }\n\n      }\n\n      if (addAriaPressed) {\n        this._element.setAttribute('aria-pressed',\n          !$(this._element).hasClass(ClassName.ACTIVE))\n      }\n\n      if (triggerChangeEvent) {\n        $(this._element).toggleClass(ClassName.ACTIVE)\n      }\n    }\n\n    dispose() {\n      $.removeData(this._element, DATA_KEY)\n      this._element = null\n    }\n\n\n    // static\n\n    static _jQueryInterface(config) {\n      return this.each(function () {\n        let data = $(this).data(DATA_KEY)\n\n        if (!data) {\n          data = new Button(this)\n          $(this).data(DATA_KEY, data)\n        }\n\n        if (config === 'toggle') {\n          data[config]()\n        }\n      })\n    }\n\n  }\n\n\n  /**\n   * ------------------------------------------------------------------------\n   * Data Api implementation\n   * ------------------------------------------------------------------------\n   */\n\n  $(document)\n    .on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE_CARROT, (event) => {\n      event.preventDefault()\n\n      let button = event.target\n\n      if (!$(button).hasClass(ClassName.BUTTON)) {\n        button = $(button).closest(Selector.BUTTON)\n      }\n\n      Button._jQueryInterface.call($(button), 'toggle')\n    })\n    .on(Event.FOCUS_BLUR_DATA_API, Selector.DATA_TOGGLE_CARROT, (event) => {\n      const button = $(event.target).closest(Selector.BUTTON)[0]\n      $(button).toggleClass(ClassName.FOCUS, /^focus(in)?$/.test(event.type))\n    })\n\n\n  /**\n   * ------------------------------------------------------------------------\n   * jQuery\n   * ------------------------------------------------------------------------\n   */\n\n  $.fn[NAME]             = Button._jQueryInterface\n  $.fn[NAME].Constructor = Button\n  $.fn[NAME].noConflict  = function () {\n    $.fn[NAME] = JQUERY_NO_CONFLICT\n    return Button._jQueryInterface\n  }\n\n  return Button\n\n})($)\n\nexport default Button\n","import $ from 'jquery'\nimport Util from './util'\n\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.0.0-beta.2): carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst Carousel = (($) => {\n\n\n  /**\n   * ------------------------------------------------------------------------\n   * Constants\n   * ------------------------------------------------------------------------\n   */\n\n  const NAME                   = 'carousel'\n  const VERSION                = '4.0.0-beta.2'\n  const DATA_KEY               = 'bs.carousel'\n  const EVENT_KEY              = `.${DATA_KEY}`\n  const DATA_API_KEY           = '.data-api'\n  const JQUERY_NO_CONFLICT     = $.fn[NAME]\n  const TRANSITION_DURATION    = 600\n  const ARROW_LEFT_KEYCODE     = 37 // KeyboardEvent.which value for left arrow key\n  const ARROW_RIGHT_KEYCODE    = 39 // KeyboardEvent.which value for right arrow key\n  const TOUCHEVENT_COMPAT_WAIT = 500 // Time for mouse compat events to fire after touch\n\n  const Default = {\n    interval : 5000,\n    keyboard : true,\n    slide    : false,\n    pause    : 'hover',\n    wrap     : true\n  }\n\n  const DefaultType = {\n    interval : '(number|boolean)',\n    keyboard : 'boolean',\n    slide    : '(boolean|string)',\n    pause    : '(string|boolean)',\n    wrap     : 'boolean'\n  }\n\n  const Direction = {\n    NEXT     : 'next',\n    PREV     : 'prev',\n    LEFT     : 'left',\n    RIGHT    : 'right'\n  }\n\n  const Event = {\n    SLIDE          : `slide${EVENT_KEY}`,\n    SLID           : `slid${EVENT_KEY}`,\n    KEYDOWN        : `keydown${EVENT_KEY}`,\n    MOUSEENTER     : `mouseenter${EVENT_KEY}`,\n    MOUSELEAVE     : `mouseleave${EVENT_KEY}`,\n    TOUCHEND       : `touchend${EVENT_KEY}`,\n    LOAD_DATA_API  : `load${EVENT_KEY}${DATA_API_KEY}`,\n    CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`\n  }\n\n  const ClassName = {\n    CAROUSEL : 'carousel',\n    ACTIVE   : 'active',\n    SLIDE    : 'slide',\n    RIGHT    : 'carousel-item-right',\n    LEFT     : 'carousel-item-left',\n    NEXT     : 'carousel-item-next',\n    PREV     : 'carousel-item-prev',\n    ITEM     : 'carousel-item'\n  }\n\n  const Selector = {\n    ACTIVE      : '.active',\n    ACTIVE_ITEM : '.active.carousel-item',\n    ITEM        : '.carousel-item',\n    NEXT_PREV   : '.carousel-item-next, .carousel-item-prev',\n    INDICATORS  : '.carousel-indicators',\n    DATA_SLIDE  : '[data-slide], [data-slide-to]',\n    DATA_RIDE   : '[data-ride=\"carousel\"]'\n  }\n\n\n  /**\n   * ------------------------------------------------------------------------\n   * Class Definition\n   * ------------------------------------------------------------------------\n   */\n\n  class Carousel {\n\n    constructor(element, config) {\n      this._items             = null\n      this._interval          = null\n      this._activeElement     = null\n\n      this._isPaused          = false\n      this._isSliding         = false\n\n      this.touchTimeout       = null\n\n      this._config            = this._getConfig(config)\n      this._element           = $(element)[0]\n      this._indicatorsElement = $(this._element).find(Selector.INDICATORS)[0]\n\n      this._addEventListeners()\n    }\n\n\n    // getters\n\n    static get VERSION() {\n      return VERSION\n    }\n\n    static get Default() {\n      return Default\n    }\n\n\n    // public\n\n    next() {\n      if (!this._isSliding) {\n        this._slide(Direction.NEXT)\n      }\n    }\n\n    nextWhenVisible() {\n      // Don't call next when the page isn't visible\n      // or the carousel or its parent isn't visible\n      if (!document.hidden &&\n        ($(this._element).is(':visible') && $(this._element).css('visibility') !== 'hidden')) {\n        this.next()\n      }\n    }\n\n    prev() {\n      if (!this._isSliding) {\n        this._slide(Direction.PREV)\n      }\n    }\n\n    pause(event) {\n      if (!event) {\n        this._isPaused = true\n      }\n\n      if ($(this._element).find(Selector.NEXT_PREV)[0] &&\n        Util.supportsTransitionEnd()) {\n        Util.triggerTransitionEnd(this._element)\n        this.cycle(true)\n      }\n\n      clearInterval(this._interval)\n      this._interval = null\n    }\n\n    cycle(event) {\n      if (!event) {\n        this._isPaused = false\n      }\n\n      if (this._interval) {\n        clearInterval(this._interval)\n        this._interval = null\n      }\n\n      if (this._config.interval && !this._isPaused) {\n        this._interval = setInterval(\n          (document.visibilityState ? this.nextWhenVisible : this.next).bind(this),\n          this._config.interval\n        )\n      }\n    }\n\n    to(index) {\n      this._activeElement = $(this._element).find(Selector.ACTIVE_ITEM)[0]\n\n      const activeIndex = this._getItemIndex(this._activeElement)\n\n      if (index > this._items.length - 1 || index < 0) {\n        return\n      }\n\n      if (this._isSliding) {\n        $(this._element).one(Event.SLID, () => this.to(index))\n        return\n      }\n\n      if (activeIndex === index) {\n        this.pause()\n        this.cycle()\n        return\n      }\n\n      const direction = index > activeIndex ?\n        Direction.NEXT :\n        Direction.PREV\n\n      this._slide(direction, this._items[index])\n    }\n\n    dispose() {\n      $(this._element).off(EVENT_KEY)\n      $.removeData(this._element, DATA_KEY)\n\n      this._items             = null\n      this._config            = null\n      this._element           = null\n      this._interval          = null\n      this._isPaused          = null\n      this._isSliding         = null\n      this._activeElement     = null\n      this._indicatorsElement = null\n    }\n\n\n    // private\n\n    _getConfig(config) {\n      config = $.extend({}, Default, config)\n      Util.typeCheckConfig(NAME, config, DefaultType)\n      return config\n    }\n\n    _addEventListeners() {\n      if (this._config.keyboard) {\n        $(this._element)\n          .on(Event.KEYDOWN, (event) => this._keydown(event))\n      }\n\n      if (this._config.pause === 'hover') {\n        $(this._element)\n          .on(Event.MOUSEENTER, (event) => this.pause(event))\n          .on(Event.MOUSELEAVE, (event) => this.cycle(event))\n        if ('ontouchstart' in document.documentElement) {\n          // if it's a touch-enabled device, mouseenter/leave are fired as\n          // part of the mouse compatibility events on first tap - the carousel\n          // would stop cycling until user tapped out of it;\n          // here, we listen for touchend, explicitly pause the carousel\n          // (as if it's the second time we tap on it, mouseenter compat event\n          // is NOT fired) and after a timeout (to allow for mouse compatibility\n          // events to fire) we explicitly restart cycling\n          $(this._element).on(Event.TOUCHEND, () => {\n            this.pause()\n            if (this.touchTimeout) {\n              clearTimeout(this.touchTimeout)\n            }\n            this.touchTimeout = setTimeout((event) => this.cycle(event), TOUCHEVENT_COMPAT_WAIT + this._config.interval)\n          })\n        }\n      }\n    }\n\n    _keydown(event) {\n      if (/input|textarea/i.test(event.target.tagName)) {\n        return\n      }\n\n      switch (event.which) {\n        case ARROW_LEFT_KEYCODE:\n          event.preventDefault()\n          this.prev()\n          break\n        case ARROW_RIGHT_KEYCODE:\n          event.preventDefault()\n          this.next()\n          break\n        default:\n          return\n      }\n    }\n\n    _getItemIndex(element) {\n      this._items = $.makeArray($(element).parent().find(Selector.ITEM))\n      return this._items.indexOf(element)\n    }\n\n    _getItemByDirection(direction, activeElement) {\n      const isNextDirection = direction === Direction.NEXT\n      const isPrevDirection = direction === Direction.PREV\n      const activeIndex     = this._getItemIndex(activeElement)\n      const lastItemIndex   = this._items.length - 1\n      const isGoingToWrap   = isPrevDirection && activeIndex === 0 ||\n                              isNextDirection && activeIndex === lastItemIndex\n\n      if (isGoingToWrap && !this._config.wrap) {\n        return activeElement\n      }\n\n      const delta     = direction === Direction.PREV ? -1 : 1\n      const itemIndex = (activeIndex + delta) % this._items.length\n\n      return itemIndex === -1 ?\n        this._items[this._items.length - 1] : this._items[itemIndex]\n    }\n\n\n    _triggerSlideEvent(relatedTarget, eventDirectionName) {\n      const targetIndex = this._getItemIndex(relatedTarget)\n      const fromIndex = this._getItemIndex($(this._element).find(Selector.ACTIVE_ITEM)[0])\n      const slideEvent = $.Event(Event.SLIDE, {\n        relatedTarget,\n        direction: eventDirectionName,\n        from: fromIndex,\n        to: targetIndex\n      })\n\n      $(this._element).trigger(slideEvent)\n\n      return slideEvent\n    }\n\n    _setActiveIndicatorElement(element) {\n      if (this._indicatorsElement) {\n        $(this._indicatorsElement)\n          .find(Selector.ACTIVE)\n          .removeClass(ClassName.ACTIVE)\n\n        const nextIndicator = this._indicatorsElement.children[\n          this._getItemIndex(element)\n        ]\n\n        if (nextIndicator) {\n          $(nextIndicator).addClass(ClassName.ACTIVE)\n        }\n      }\n    }\n\n    _slide(direction, element) {\n      const activeElement = $(this._element).find(Selector.ACTIVE_ITEM)[0]\n      const activeElementIndex = this._getItemIndex(activeElement)\n      const nextElement   = element || activeElement &&\n        this._getItemByDirection(direction, activeElement)\n      const nextElementIndex = this._getItemIndex(nextElement)\n      const isCycling = Boolean(this._interval)\n\n      let directionalClassName\n      let orderClassName\n      let eventDirectionName\n\n      if (direction === Direction.NEXT) {\n        directionalClassName = ClassName.LEFT\n        orderClassName = ClassName.NEXT\n        eventDirectionName = Direction.LEFT\n      } else {\n        directionalClassName = ClassName.RIGHT\n        orderClassName = ClassName.PREV\n        eventDirectionName = Direction.RIGHT\n      }\n\n      if (nextElement && $(nextElement).hasClass(ClassName.ACTIVE)) {\n        this._isSliding = false\n        return\n      }\n\n      const slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName)\n      if (slideEvent.isDefaultPrevented()) {\n        return\n      }\n\n      if (!activeElement || !nextElement) {\n        // some weirdness is happening, so we bail\n        return\n      }\n\n      this._isSliding = true\n\n      if (isCycling) {\n        this.pause()\n      }\n\n      this._setActiveIndicatorElement(nextElement)\n\n      const slidEvent = $.Event(Event.SLID, {\n        relatedTarget: nextElement,\n        direction: eventDirectionName,\n        from: activeElementIndex,\n        to: nextElementIndex\n      })\n\n      if (Util.supportsTransitionEnd() &&\n        $(this._element).hasClass(ClassName.SLIDE)) {\n\n        $(nextElement).addClass(orderClassName)\n\n        Util.reflow(nextElement)\n\n        $(activeElement).addClass(directionalClassName)\n        $(nextElement).addClass(directionalClassName)\n\n        $(activeElement)\n          .one(Util.TRANSITION_END, () => {\n            $(nextElement)\n              .removeClass(`${directionalClassName} ${orderClassName}`)\n              .addClass(ClassName.ACTIVE)\n\n            $(activeElement).removeClass(`${ClassName.ACTIVE} ${orderClassName} ${directionalClassName}`)\n\n            this._isSliding = false\n\n            setTimeout(() => $(this._element).trigger(slidEvent), 0)\n\n          })\n          .emulateTransitionEnd(TRANSITION_DURATION)\n\n      } else {\n        $(activeElement).removeClass(ClassName.ACTIVE)\n        $(nextElement).addClass(ClassName.ACTIVE)\n\n        this._isSliding = false\n        $(this._element).trigger(slidEvent)\n      }\n\n      if (isCycling) {\n        this.cycle()\n      }\n    }\n\n\n    // static\n\n    static _jQueryInterface(config) {\n      return this.each(function () {\n        let data      = $(this).data(DATA_KEY)\n        const _config = $.extend({}, Default, $(this).data())\n\n        if (typeof config === 'object') {\n          $.extend(_config, config)\n        }\n\n        const action = typeof config === 'string' ? config : _config.slide\n\n        if (!data) {\n          data = new Carousel(this, _config)\n          $(this).data(DATA_KEY, data)\n        }\n\n        if (typeof config === 'number') {\n          data.to(config)\n        } else if (typeof action === 'string') {\n          if (typeof data[action] === 'undefined') {\n            throw new Error(`No method named \"${action}\"`)\n          }\n          data[action]()\n        } else if (_config.interval) {\n          data.pause()\n          data.cycle()\n        }\n      })\n    }\n\n    static _dataApiClickHandler(event) {\n      const selector = Util.getSelectorFromElement(this)\n\n      if (!selector) {\n        return\n      }\n\n      const target = $(selector)[0]\n\n      if (!target || !$(target).hasClass(ClassName.CAROUSEL)) {\n        return\n      }\n\n      const config     = $.extend({}, $(target).data(), $(this).data())\n      const slideIndex = this.getAttribute('data-slide-to')\n\n      if (slideIndex) {\n        config.interval = false\n      }\n\n      Carousel._jQueryInterface.call($(target), config)\n\n      if (slideIndex) {\n        $(target).data(DATA_KEY).to(slideIndex)\n      }\n\n      event.preventDefault()\n    }\n\n  }\n\n\n  /**\n   * ------------------------------------------------------------------------\n   * Data Api implementation\n   * ------------------------------------------------------------------------\n   */\n\n  $(document)\n    .on(Event.CLICK_DATA_API, Selector.DATA_SLIDE, Carousel._dataApiClickHandler)\n\n  $(window).on(Event.LOAD_DATA_API, () => {\n    $(Selector.DATA_RIDE).each(function () {\n      const $carousel = $(this)\n      Carousel._jQueryInterface.call($carousel, $carousel.data())\n    })\n  })\n\n\n  /**\n   * ------------------------------------------------------------------------\n   * jQuery\n   * ------------------------------------------------------------------------\n   */\n\n  $.fn[NAME]             = Carousel._jQueryInterface\n  $.fn[NAME].Constructor = Carousel\n  $.fn[NAME].noConflict  = function () {\n    $.fn[NAME] = JQUERY_NO_CONFLICT\n    return Carousel._jQueryInterface\n  }\n\n  return Carousel\n\n})($)\n\nexport default Carousel\n","import $ from 'jquery'\nimport Util from './util'\n\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.0.0-beta.2): collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst Collapse = (($) => {\n\n\n  /**\n   * ------------------------------------------------------------------------\n   * Constants\n   * ------------------------------------------------------------------------\n   */\n\n  const NAME                = 'collapse'\n  const VERSION             = '4.0.0-beta.2'\n  const DATA_KEY            = 'bs.collapse'\n  const EVENT_KEY           = `.${DATA_KEY}`\n  const DATA_API_KEY        = '.data-api'\n  const JQUERY_NO_CONFLICT  = $.fn[NAME]\n  const TRANSITION_DURATION = 600\n\n  const Default = {\n    toggle : true,\n    parent : ''\n  }\n\n  const DefaultType = {\n    toggle : 'boolean',\n    parent : '(string|element)'\n  }\n\n  const Event = {\n    SHOW           : `show${EVENT_KEY}`,\n    SHOWN          : `shown${EVENT_KEY}`,\n    HIDE           : `hide${EVENT_KEY}`,\n    HIDDEN         : `hidden${EVENT_KEY}`,\n    CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`\n  }\n\n  const ClassName = {\n    SHOW       : 'show',\n    COLLAPSE   : 'collapse',\n    COLLAPSING : 'collapsing',\n    COLLAPSED  : 'collapsed'\n  }\n\n  const Dimension = {\n    WIDTH  : 'width',\n    HEIGHT : 'height'\n  }\n\n  const Selector = {\n    ACTIVES     : '.show, .collapsing',\n    DATA_TOGGLE : '[data-toggle=\"collapse\"]'\n  }\n\n\n  /**\n   * ------------------------------------------------------------------------\n   * Class Definition\n   * ------------------------------------------------------------------------\n   */\n\n  class Collapse {\n\n    constructor(element, config) {\n      this._isTransitioning = false\n      this._element         = element\n      this._config          = this._getConfig(config)\n      this._triggerArray    = $.makeArray($(\n        `[data-toggle=\"collapse\"][href=\"#${element.id}\"],` +\n        `[data-toggle=\"collapse\"][data-target=\"#${element.id}\"]`\n      ))\n      const tabToggles = $(Selector.DATA_TOGGLE)\n      for (let i = 0; i < tabToggles.length; i++) {\n        const elem = tabToggles[i]\n        const selector = Util.getSelectorFromElement(elem)\n        if (selector !== null && $(selector).filter(element).length > 0) {\n          this._triggerArray.push(elem)\n        }\n      }\n\n      this._parent = this._config.parent ? this._getParent() : null\n\n      if (!this._config.parent) {\n        this._addAriaAndCollapsedClass(this._element, this._triggerArray)\n      }\n\n      if (this._config.toggle) {\n        this.toggle()\n      }\n    }\n\n\n    // getters\n\n    static get VERSION() {\n      return VERSION\n    }\n\n    static get Default() {\n      return Default\n    }\n\n\n    // public\n\n    toggle() {\n      if ($(this._element).hasClass(ClassName.SHOW)) {\n        this.hide()\n      } else {\n        this.show()\n      }\n    }\n\n    show() {\n      if (this._isTransitioning ||\n        $(this._element).hasClass(ClassName.SHOW)) {\n        return\n      }\n\n      let actives\n      let activesData\n\n      if (this._parent) {\n        actives = $.makeArray($(this._parent).children().children(Selector.ACTIVES))\n        if (!actives.length) {\n          actives = null\n        }\n      }\n\n      if (actives) {\n        activesData = $(actives).data(DATA_KEY)\n        if (activesData && activesData._isTransitioning) {\n          return\n        }\n      }\n\n      const startEvent = $.Event(Event.SHOW)\n      $(this._element).trigger(startEvent)\n      if (startEvent.isDefaultPrevented()) {\n        return\n      }\n\n      if (actives) {\n        Collapse._jQueryInterface.call($(actives), 'hide')\n        if (!activesData) {\n          $(actives).data(DATA_KEY, null)\n        }\n      }\n\n      const dimension = this._getDimension()\n\n      $(this._element)\n        .removeClass(ClassName.COLLAPSE)\n        .addClass(ClassName.COLLAPSING)\n\n      this._element.style[dimension] = 0\n\n      if (this._triggerArray.length) {\n        $(this._triggerArray)\n          .removeClass(ClassName.COLLAPSED)\n          .attr('aria-expanded', true)\n      }\n\n      this.setTransitioning(true)\n\n      const complete = () => {\n        $(this._element)\n          .removeClass(ClassName.COLLAPSING)\n          .addClass(ClassName.COLLAPSE)\n          .addClass(ClassName.SHOW)\n\n        this._element.style[dimension] = ''\n\n        this.setTransitioning(false)\n\n        $(this._element).trigger(Event.SHOWN)\n      }\n\n      if (!Util.supportsTransitionEnd()) {\n        complete()\n        return\n      }\n\n      const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1)\n      const scrollSize           = `scroll${capitalizedDimension}`\n\n      $(this._element)\n        .one(Util.TRANSITION_END, complete)\n        .emulateTransitionEnd(TRANSITION_DURATION)\n\n      this._element.style[dimension] = `${this._element[scrollSize]}px`\n    }\n\n    hide() {\n      if (this._isTransitioning ||\n        !$(this._element).hasClass(ClassName.SHOW)) {\n        return\n      }\n\n      const startEvent = $.Event(Event.HIDE)\n      $(this._element).trigger(startEvent)\n      if (startEvent.isDefaultPrevented()) {\n        return\n      }\n\n      const dimension       = this._getDimension()\n\n      this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`\n\n      Util.reflow(this._element)\n\n      $(this._element)\n        .addClass(ClassName.COLLAPSING)\n        .removeClass(ClassName.COLLAPSE)\n        .removeClass(ClassName.SHOW)\n\n      if (this._triggerArray.length) {\n        for (let i = 0; i < this._triggerArray.length; i++) {\n          const trigger = this._triggerArray[i]\n          const selector = Util.getSelectorFromElement(trigger)\n          if (selector !== null) {\n            const $elem = $(selector)\n            if (!$elem.hasClass(ClassName.SHOW)) {\n              $(trigger).addClass(ClassName.COLLAPSED)\n                   .attr('aria-expanded', false)\n            }\n          }\n        }\n      }\n\n      this.setTransitioning(true)\n\n      const complete = () => {\n        this.setTransitioning(false)\n        $(this._element)\n          .removeClass(ClassName.COLLAPSING)\n          .addClass(ClassName.COLLAPSE)\n          .trigger(Event.HIDDEN)\n      }\n\n      this._element.style[dimension] = ''\n\n      if (!Util.supportsTransitionEnd()) {\n        complete()\n        return\n      }\n\n      $(this._element)\n        .one(Util.TRANSITION_END, complete)\n        .emulateTransitionEnd(TRANSITION_DURATION)\n    }\n\n    setTransitioning(isTransitioning) {\n      this._isTransitioning = isTransitioning\n    }\n\n    dispose() {\n      $.removeData(this._element, DATA_KEY)\n\n      this._config          = null\n      this._parent          = null\n      this._element         = null\n      this._triggerArray    = null\n      this._isTransitioning = null\n    }\n\n\n    // private\n\n    _getConfig(config) {\n      config = $.extend({}, Default, config)\n      config.toggle = Boolean(config.toggle) // coerce string values\n      Util.typeCheckConfig(NAME, config, DefaultType)\n      return config\n    }\n\n    _getDimension() {\n      const hasWidth = $(this._element).hasClass(Dimension.WIDTH)\n      return hasWidth ? Dimension.WIDTH : Dimension.HEIGHT\n    }\n\n    _getParent() {\n      let parent = null\n      if (Util.isElement(this._config.parent)) {\n        parent = this._config.parent\n\n        // it's a jQuery object\n        if (typeof this._config.parent.jquery !== 'undefined') {\n          parent = this._config.parent[0]\n        }\n      } else {\n        parent = $(this._config.parent)[0]\n      }\n\n      const selector =\n        `[data-toggle=\"collapse\"][data-parent=\"${this._config.parent}\"]`\n\n      $(parent).find(selector).each((i, element) => {\n        this._addAriaAndCollapsedClass(\n          Collapse._getTargetFromElement(element),\n          [element]\n        )\n      })\n\n      return parent\n    }\n\n    _addAriaAndCollapsedClass(element, triggerArray) {\n      if (element) {\n        const isOpen = $(element).hasClass(ClassName.SHOW)\n\n        if (triggerArray.length) {\n          $(triggerArray)\n            .toggleClass(ClassName.COLLAPSED, !isOpen)\n            .attr('aria-expanded', isOpen)\n        }\n      }\n    }\n\n\n    // static\n\n    static _getTargetFromElement(element) {\n      const selector = Util.getSelectorFromElement(element)\n      return selector ? $(selector)[0] : null\n    }\n\n    static _jQueryInterface(config) {\n      return this.each(function () {\n        const $this   = $(this)\n        let data      = $this.data(DATA_KEY)\n        const _config = $.extend(\n          {},\n          Default,\n          $this.data(),\n          typeof config === 'object' && config\n        )\n\n        if (!data && _config.toggle && /show|hide/.test(config)) {\n          _config.toggle = false\n        }\n\n        if (!data) {\n          data = new Collapse(this, _config)\n          $this.data(DATA_KEY, data)\n        }\n\n        if (typeof config === 'string') {\n          if (typeof data[config] === 'undefined') {\n            throw new Error(`No method named \"${config}\"`)\n          }\n          data[config]()\n        }\n      })\n    }\n\n  }\n\n\n  /**\n   * ------------------------------------------------------------------------\n   * Data Api implementation\n   * ------------------------------------------------------------------------\n   */\n\n  $(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {\n    // preventDefault only for <a> elements (which change the URL) not inside the collapsible element\n    if (event.currentTarget.tagName === 'A') {\n      event.preventDefault()\n    }\n\n    const $trigger = $(this)\n    const selector = Util.getSelectorFromElement(this)\n    $(selector).each(function () {\n      const $target = $(this)\n      const data    = $target.data(DATA_KEY)\n      const config  = data ? 'toggle' : $trigger.data()\n      Collapse._jQueryInterface.call($target, config)\n    })\n  })\n\n\n  /**\n   * ------------------------------------------------------------------------\n   * jQuery\n   * ------------------------------------------------------------------------\n   */\n\n  $.fn[NAME]             = Collapse._jQueryInterface\n  $.fn[NAME].Constructor = Collapse\n  $.fn[NAME].noConflict  = function () {\n    $.fn[NAME] = JQUERY_NO_CONFLICT\n    return Collapse._jQueryInterface\n  }\n\n  return Collapse\n\n})($)\n\nexport default Collapse\n","import $ from 'jquery'\nimport Popper from 'popper.js'\nimport Util from './util'\n\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.0.0-beta.2): dropdown.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst Dropdown = (($) => {\n\n  /**\n   * ------------------------------------------------------------------------\n   * Constants\n   * ------------------------------------------------------------------------\n   */\n\n  const NAME                     = 'dropdown'\n  const VERSION                  = '4.0.0-beta.2'\n  const DATA_KEY                 = 'bs.dropdown'\n  const EVENT_KEY                = `.${DATA_KEY}`\n  const DATA_API_KEY             = '.data-api'\n  const JQUERY_NO_CONFLICT       = $.fn[NAME]\n  const ESCAPE_KEYCODE           = 27 // KeyboardEvent.which value for Escape (Esc) key\n  const SPACE_KEYCODE            = 32 // KeyboardEvent.which value for space key\n  const TAB_KEYCODE              = 9 // KeyboardEvent.which value for tab key\n  const ARROW_UP_KEYCODE         = 38 // KeyboardEvent.which value for up arrow key\n  const ARROW_DOWN_KEYCODE       = 40 // KeyboardEvent.which value for down arrow key\n  const RIGHT_MOUSE_BUTTON_WHICH = 3 // MouseEvent.which value for the right button (assuming a right-handed mouse)\n  const REGEXP_KEYDOWN           = new RegExp(`${ARROW_UP_KEYCODE}|${ARROW_DOWN_KEYCODE}|${ESCAPE_KEYCODE}`)\n\n  const Event = {\n    HIDE             : `hide${EVENT_KEY}`,\n    HIDDEN           : `hidden${EVENT_KEY}`,\n    SHOW             : `show${EVENT_KEY}`,\n    SHOWN            : `shown${EVENT_KEY}`,\n    CLICK            : `click${EVENT_KEY}`,\n    CLICK_DATA_API   : `click${EVENT_KEY}${DATA_API_KEY}`,\n    KEYDOWN_DATA_API : `keydown${EVENT_KEY}${DATA_API_KEY}`,\n    KEYUP_DATA_API   : `keyup${EVENT_KEY}${DATA_API_KEY}`\n  }\n\n  const ClassName = {\n    DISABLED  : 'disabled',\n    SHOW      : 'show',\n    DROPUP    : 'dropup',\n    DROPRIGHT : 'dropright',\n    DROPLEFT  : 'dropleft',\n    MENURIGHT : 'dropdown-menu-right',\n    MENULEFT  : 'dropdown-menu-left'\n  }\n\n  const Selector = {\n    DATA_TOGGLE   : '[data-toggle=\"dropdown\"]',\n    FORM_CHILD    : '.dropdown form',\n    MENU          : '.dropdown-menu',\n    NAVBAR_NAV    : '.navbar-nav',\n    VISIBLE_ITEMS : '.dropdown-menu .dropdown-item:not(.disabled)'\n  }\n\n  const AttachmentMap = {\n    TOP       : 'top-start',\n    TOPEND    : 'top-end',\n    BOTTOM    : 'bottom-start',\n    BOTTOMEND : 'bottom-end',\n    RIGHT     : 'right-start',\n    RIGHTEND  : 'right-end',\n    LEFT      : 'left-start',\n    LEFTEND   : 'left-end'\n  }\n\n  const Default = {\n    offset      : 0,\n    flip        : true\n  }\n\n  const DefaultType = {\n    offset      : '(number|string|function)',\n    flip        : 'boolean'\n  }\n\n\n  /**\n   * ------------------------------------------------------------------------\n   * Class Definition\n   * ------------------------------------------------------------------------\n   */\n\n  class Dropdown {\n\n    constructor(element, config) {\n      this._element  = element\n      this._popper   = null\n      this._config   = this._getConfig(config)\n      this._menu     = this._getMenuElement()\n      this._inNavbar = this._detectNavbar()\n\n      this._addEventListeners()\n    }\n\n\n    // getters\n\n    static get VERSION() {\n      return VERSION\n    }\n\n    static get Default() {\n      return Default\n    }\n\n    static get DefaultType() {\n      return DefaultType\n    }\n\n    // public\n\n    toggle() {\n      if (this._element.disabled || $(this._element).hasClass(ClassName.DISABLED)) {\n        return\n      }\n\n      const parent   = Dropdown._getParentFromElement(this._element)\n      const isActive = $(this._menu).hasClass(ClassName.SHOW)\n\n      Dropdown._clearMenus()\n\n      if (isActive) {\n        return\n      }\n\n      const relatedTarget = {\n        relatedTarget : this._element\n      }\n      const showEvent = $.Event(Event.SHOW, relatedTarget)\n\n      $(parent).trigger(showEvent)\n\n      if (showEvent.isDefaultPrevented()) {\n        return\n      }\n\n      // Disable totally Popper.js for Dropdown in Navbar\n      if (!this._inNavbar) {\n        /**\n         * Check for Popper dependency\n         * Popper - https://popper.js.org\n         */\n        if (typeof Popper === 'undefined') {\n          throw new Error('Bootstrap dropdown require Popper.js (https://popper.js.org)')\n        }\n        let element = this._element\n        // for dropup with alignment we use the parent as popper container\n        if ($(parent).hasClass(ClassName.DROPUP)) {\n          if ($(this._menu).hasClass(ClassName.MENULEFT) || $(this._menu).hasClass(ClassName.MENURIGHT)) {\n            element = parent\n          }\n        }\n        this._popper = new Popper(element, this._menu, this._getPopperConfig())\n      }\n\n\n      // if this is a touch-enabled device we add extra\n      // empty mouseover listeners to the body's immediate children;\n      // only needed because of broken event delegation on iOS\n      // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n      if ('ontouchstart' in document.documentElement &&\n         !$(parent).closest(Selector.NAVBAR_NAV).length) {\n        $('body').children().on('mouseover', null, $.noop)\n      }\n\n      this._element.focus()\n      this._element.setAttribute('aria-expanded', true)\n\n      $(this._menu).toggleClass(ClassName.SHOW)\n      $(parent)\n        .toggleClass(ClassName.SHOW)\n        .trigger($.Event(Event.SHOWN, relatedTarget))\n    }\n\n    dispose() {\n      $.removeData(this._element, DATA_KEY)\n      $(this._element).off(EVENT_KEY)\n      this._element = null\n      this._menu = null\n      if (this._popper !== null) {\n        this._popper.destroy()\n        this._popper = null\n      }\n    }\n\n    update() {\n      this._inNavbar = this._detectNavbar()\n      if (this._popper !== null) {\n        this._popper.scheduleUpdate()\n      }\n    }\n\n    // private\n\n    _addEventListeners() {\n      $(this._element).on(Event.CLICK, (event) => {\n        event.preventDefault()\n        event.stopPropagation()\n        this.toggle()\n      })\n    }\n\n    _getConfig(config) {\n      config = $.extend(\n        {},\n        this.constructor.Default,\n        $(this._element).data(),\n        config\n      )\n\n      Util.typeCheckConfig(\n        NAME,\n        config,\n        this.constructor.DefaultType\n      )\n\n      return config\n    }\n\n    _getMenuElement() {\n      if (!this._menu) {\n        const parent = Dropdown._getParentFromElement(this._element)\n        this._menu = $(parent).find(Selector.MENU)[0]\n      }\n      return this._menu\n    }\n\n    _getPlacement() {\n      const $parentDropdown = $(this._element).parent()\n      let placement         = AttachmentMap.BOTTOM\n\n      // Handle dropup\n      if ($parentDropdown.hasClass(ClassName.DROPUP)) {\n        placement = AttachmentMap.TOP\n        if ($(this._menu).hasClass(ClassName.MENURIGHT)) {\n          placement = AttachmentMap.TOPEND\n        }\n      } else if ($parentDropdown.hasClass(ClassName.DROPRIGHT)) {\n        placement = AttachmentMap.RIGHT\n      } else if ($parentDropdown.hasClass(ClassName.DROPLEFT)) {\n        placement = AttachmentMap.LEFT\n      } else if ($(this._menu).hasClass(ClassName.MENURIGHT)) {\n        placement = AttachmentMap.BOTTOMEND\n      }\n      return placement\n    }\n\n    _detectNavbar() {\n      return $(this._element).closest('.navbar').length > 0\n    }\n\n    _getPopperConfig() {\n      const offsetConf = {}\n      if (typeof this._config.offset === 'function') {\n        offsetConf.fn = (data) => {\n          data.offsets = $.extend({}, data.offsets, this._config.offset(data.offsets) || {})\n          return data\n        }\n      } else {\n        offsetConf.offset = this._config.offset\n      }\n      const popperConfig = {\n        placement : this._getPlacement(),\n        modifiers : {\n          offset : offsetConf,\n          flip : {\n            enabled : this._config.flip\n          }\n        }\n      }\n\n      return popperConfig\n    }\n\n    // static\n\n    static _jQueryInterface(config) {\n      return this.each(function () {\n        let data = $(this).data(DATA_KEY)\n        const _config = typeof config === 'object' ? config : null\n\n        if (!data) {\n          data = new Dropdown(this, _config)\n          $(this).data(DATA_KEY, data)\n        }\n\n        if (typeof config === 'string') {\n          if (typeof data[config] === 'undefined') {\n            throw new Error(`No method named \"${config}\"`)\n          }\n          data[config]()\n        }\n      })\n    }\n\n    static _clearMenus(event) {\n      if (event && (event.which === RIGHT_MOUSE_BUTTON_WHICH ||\n        event.type === 'keyup' && event.which !== TAB_KEYCODE)) {\n        return\n      }\n\n      const toggles = $.makeArray($(Selector.DATA_TOGGLE))\n      for (let i = 0; i < toggles.length; i++) {\n        const parent        = Dropdown._getParentFromElement(toggles[i])\n        const context       = $(toggles[i]).data(DATA_KEY)\n        const relatedTarget = {\n          relatedTarget : toggles[i]\n        }\n\n        if (!context) {\n          continue\n        }\n\n        const dropdownMenu = context._menu\n        if (!$(parent).hasClass(ClassName.SHOW)) {\n          continue\n        }\n\n        if (event && (event.type === 'click' &&\n            /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.which === TAB_KEYCODE)\n            && $.contains(parent, event.target)) {\n          continue\n        }\n\n        const hideEvent = $.Event(Event.HIDE, relatedTarget)\n        $(parent).trigger(hideEvent)\n        if (hideEvent.isDefaultPrevented()) {\n          continue\n        }\n\n        // if this is a touch-enabled device we remove the extra\n        // empty mouseover listeners we added for iOS support\n        if ('ontouchstart' in document.documentElement) {\n          $('body').children().off('mouseover', null, $.noop)\n        }\n\n        toggles[i].setAttribute('aria-expanded', 'false')\n\n        $(dropdownMenu).removeClass(ClassName.SHOW)\n        $(parent)\n          .removeClass(ClassName.SHOW)\n          .trigger($.Event(Event.HIDDEN, relatedTarget))\n      }\n    }\n\n    static _getParentFromElement(element) {\n      let parent\n      const selector = Util.getSelectorFromElement(element)\n\n      if (selector) {\n        parent = $(selector)[0]\n      }\n\n      return parent || element.parentNode\n    }\n\n    static _dataApiKeydownHandler(event) {\n      // If not input/textarea:\n      //  - And not a key in REGEXP_KEYDOWN => not a dropdown command\n      // If input/textarea:\n      //  - If space key => not a dropdown command\n      //  - If key is other than escape\n      //    - If key is not up or down => not a dropdown command\n      //    - If trigger inside the menu => not a dropdown command\n      if (/input|textarea/i.test(event.target.tagName) ?\n        event.which === SPACE_KEYCODE || event.which !== ESCAPE_KEYCODE &&\n        (event.which !== ARROW_DOWN_KEYCODE && event.which !== ARROW_UP_KEYCODE ||\n          $(event.target).closest(Selector.MENU).length) : !REGEXP_KEYDOWN.test(event.which)) {\n        return\n      }\n\n      event.preventDefault()\n      event.stopPropagation()\n\n      if (this.disabled || $(this).hasClass(ClassName.DISABLED)) {\n        return\n      }\n\n      const parent   = Dropdown._getParentFromElement(this)\n      const isActive = $(parent).hasClass(ClassName.SHOW)\n\n      if (!isActive && (event.which !== ESCAPE_KEYCODE || event.which !== SPACE_KEYCODE) ||\n           isActive && (event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE)) {\n\n        if (event.which === ESCAPE_KEYCODE) {\n          const toggle = $(parent).find(Selector.DATA_TOGGLE)[0]\n          $(toggle).trigger('focus')\n        }\n\n        $(this).trigger('click')\n        return\n      }\n\n      const items = $(parent).find(Selector.VISIBLE_ITEMS).get()\n\n      if (!items.length) {\n        return\n      }\n\n      let index = items.indexOf(event.target)\n\n      if (event.which === ARROW_UP_KEYCODE && index > 0) { // up\n        index--\n      }\n\n      if (event.which === ARROW_DOWN_KEYCODE && index < items.length - 1) { // down\n        index++\n      }\n\n      if (index < 0) {\n        index = 0\n      }\n\n      items[index].focus()\n    }\n\n  }\n\n\n  /**\n   * ------------------------------------------------------------------------\n   * Data Api implementation\n   * ------------------------------------------------------------------------\n   */\n\n  $(document)\n    .on(Event.KEYDOWN_DATA_API, Selector.DATA_TOGGLE,  Dropdown._dataApiKeydownHandler)\n    .on(Event.KEYDOWN_DATA_API, Selector.MENU, Dropdown._dataApiKeydownHandler)\n    .on(`${Event.CLICK_DATA_API} ${Event.KEYUP_DATA_API}`, Dropdown._clearMenus)\n    .on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {\n      event.preventDefault()\n      event.stopPropagation()\n      Dropdown._jQueryInterface.call($(this), 'toggle')\n    })\n    .on(Event.CLICK_DATA_API, Selector.FORM_CHILD, (e) => {\n      e.stopPropagation()\n    })\n\n\n  /**\n   * ------------------------------------------------------------------------\n   * jQuery\n   * ------------------------------------------------------------------------\n   */\n\n  $.fn[NAME]             = Dropdown._jQueryInterface\n  $.fn[NAME].Constructor = Dropdown\n  $.fn[NAME].noConflict  = function () {\n    $.fn[NAME] = JQUERY_NO_CONFLICT\n    return Dropdown._jQueryInterface\n  }\n\n  return Dropdown\n\n})($, Popper)\n\nexport default Dropdown\n","import $ from 'jquery'\nimport Util from './util'\n\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.0.0-beta.2): modal.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst Modal = (($) => {\n\n\n  /**\n   * ------------------------------------------------------------------------\n   * Constants\n   * ------------------------------------------------------------------------\n   */\n\n  const NAME                         = 'modal'\n  const VERSION                      = '4.0.0-beta.2'\n  const DATA_KEY                     = 'bs.modal'\n  const EVENT_KEY                    = `.${DATA_KEY}`\n  const DATA_API_KEY                 = '.data-api'\n  const JQUERY_NO_CONFLICT           = $.fn[NAME]\n  const TRANSITION_DURATION          = 300\n  const BACKDROP_TRANSITION_DURATION = 150\n  const ESCAPE_KEYCODE               = 27 // KeyboardEvent.which value for Escape (Esc) key\n\n  const Default = {\n    backdrop : true,\n    keyboard : true,\n    focus    : true,\n    show     : true\n  }\n\n  const DefaultType = {\n    backdrop : '(boolean|string)',\n    keyboard : 'boolean',\n    focus    : 'boolean',\n    show     : 'boolean'\n  }\n\n  const Event = {\n    HIDE              : `hide${EVENT_KEY}`,\n    HIDDEN            : `hidden${EVENT_KEY}`,\n    SHOW              : `show${EVENT_KEY}`,\n    SHOWN             : `shown${EVENT_KEY}`,\n    FOCUSIN           : `focusin${EVENT_KEY}`,\n    RESIZE            : `resize${EVENT_KEY}`,\n    CLICK_DISMISS     : `click.dismiss${EVENT_KEY}`,\n    KEYDOWN_DISMISS   : `keydown.dismiss${EVENT_KEY}`,\n    MOUSEUP_DISMISS   : `mouseup.dismiss${EVENT_KEY}`,\n    MOUSEDOWN_DISMISS : `mousedown.dismiss${EVENT_KEY}`,\n    CLICK_DATA_API    : `click${EVENT_KEY}${DATA_API_KEY}`\n  }\n\n  const ClassName = {\n    SCROLLBAR_MEASURER : 'modal-scrollbar-measure',\n    BACKDROP           : 'modal-backdrop',\n    OPEN               : 'modal-open',\n    FADE               : 'fade',\n    SHOW               : 'show'\n  }\n\n  const Selector = {\n    DIALOG             : '.modal-dialog',\n    DATA_TOGGLE        : '[data-toggle=\"modal\"]',\n    DATA_DISMISS       : '[data-dismiss=\"modal\"]',\n    FIXED_CONTENT      : '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top',\n    STICKY_CONTENT     : '.sticky-top',\n    NAVBAR_TOGGLER     : '.navbar-toggler'\n  }\n\n\n  /**\n   * ------------------------------------------------------------------------\n   * Class Definition\n   * ------------------------------------------------------------------------\n   */\n\n  class Modal {\n\n    constructor(element, config) {\n      this._config              = this._getConfig(config)\n      this._element             = element\n      this._dialog              = $(element).find(Selector.DIALOG)[0]\n      this._backdrop            = null\n      this._isShown             = false\n      this._isBodyOverflowing   = false\n      this._ignoreBackdropClick = false\n      this._originalBodyPadding = 0\n      this._scrollbarWidth      = 0\n    }\n\n\n    // getters\n\n    static get VERSION() {\n      return VERSION\n    }\n\n    static get Default() {\n      return Default\n    }\n\n\n    // public\n\n    toggle(relatedTarget) {\n      return this._isShown ? this.hide() : this.show(relatedTarget)\n    }\n\n    show(relatedTarget) {\n      if (this._isTransitioning || this._isShown) {\n        return\n      }\n\n      if (Util.supportsTransitionEnd() && $(this._element).hasClass(ClassName.FADE)) {\n        this._isTransitioning = true\n      }\n\n      const showEvent = $.Event(Event.SHOW, {\n        relatedTarget\n      })\n\n      $(this._element).trigger(showEvent)\n\n      if (this._isShown || showEvent.isDefaultPrevented()) {\n        return\n      }\n\n      this._isShown = true\n\n      this._checkScrollbar()\n      this._setScrollbar()\n\n      this._adjustDialog()\n\n      $(document.body).addClass(ClassName.OPEN)\n\n      this._setEscapeEvent()\n      this._setResizeEvent()\n\n      $(this._element).on(\n        Event.CLICK_DISMISS,\n        Selector.DATA_DISMISS,\n        (event) => this.hide(event)\n      )\n\n      $(this._dialog).on(Event.MOUSEDOWN_DISMISS, () => {\n        $(this._element).one(Event.MOUSEUP_DISMISS, (event) => {\n          if ($(event.target).is(this._element)) {\n            this._ignoreBackdropClick = true\n          }\n        })\n      })\n\n      this._showBackdrop(() => this._showElement(relatedTarget))\n    }\n\n    hide(event) {\n      if (event) {\n        event.preventDefault()\n      }\n\n      if (this._isTransitioning || !this._isShown) {\n        return\n      }\n\n      const hideEvent = $.Event(Event.HIDE)\n\n      $(this._element).trigger(hideEvent)\n\n      if (!this._isShown || hideEvent.isDefaultPrevented()) {\n        return\n      }\n\n      this._isShown = false\n\n      const transition = Util.supportsTransitionEnd() && $(this._element).hasClass(ClassName.FADE)\n\n      if (transition) {\n        this._isTransitioning = true\n      }\n\n      this._setEscapeEvent()\n      this._setResizeEvent()\n\n      $(document).off(Event.FOCUSIN)\n\n      $(this._element).removeClass(ClassName.SHOW)\n\n      $(this._element).off(Event.CLICK_DISMISS)\n      $(this._dialog).off(Event.MOUSEDOWN_DISMISS)\n\n      if (transition) {\n\n        $(this._element)\n          .one(Util.TRANSITION_END, (event) => this._hideModal(event))\n          .emulateTransitionEnd(TRANSITION_DURATION)\n      } else {\n        this._hideModal()\n      }\n    }\n\n    dispose() {\n      $.removeData(this._element, DATA_KEY)\n\n      $(window, document, this._element, this._backdrop).off(EVENT_KEY)\n\n      this._config              = null\n      this._element             = null\n      this._dialog              = null\n      this._backdrop            = null\n      this._isShown             = null\n      this._isBodyOverflowing   = null\n      this._ignoreBackdropClick = null\n      this._scrollbarWidth      = null\n    }\n\n    handleUpdate() {\n      this._adjustDialog()\n    }\n\n    // private\n\n    _getConfig(config) {\n      config = $.extend({}, Default, config)\n      Util.typeCheckConfig(NAME, config, DefaultType)\n      return config\n    }\n\n    _showElement(relatedTarget) {\n      const transition = Util.supportsTransitionEnd() &&\n        $(this._element).hasClass(ClassName.FADE)\n\n      if (!this._element.parentNode ||\n         this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {\n        // don't move modals dom position\n        document.body.appendChild(this._element)\n      }\n\n      this._element.style.display = 'block'\n      this._element.removeAttribute('aria-hidden')\n      this._element.scrollTop = 0\n\n      if (transition) {\n        Util.reflow(this._element)\n      }\n\n      $(this._element).addClass(ClassName.SHOW)\n\n      if (this._config.focus) {\n        this._enforceFocus()\n      }\n\n      const shownEvent = $.Event(Event.SHOWN, {\n        relatedTarget\n      })\n\n      const transitionComplete = () => {\n        if (this._config.focus) {\n          this._element.focus()\n        }\n        this._isTransitioning = false\n        $(this._element).trigger(shownEvent)\n      }\n\n      if (transition) {\n        $(this._dialog)\n          .one(Util.TRANSITION_END, transitionComplete)\n          .emulateTransitionEnd(TRANSITION_DURATION)\n      } else {\n        transitionComplete()\n      }\n    }\n\n    _enforceFocus() {\n      $(document)\n        .off(Event.FOCUSIN) // guard against infinite focus loop\n        .on(Event.FOCUSIN, (event) => {\n          if (document !== event.target &&\n              this._element !== event.target &&\n              !$(this._element).has(event.target).length) {\n            this._element.focus()\n          }\n        })\n    }\n\n    _setEscapeEvent() {\n      if (this._isShown && this._config.keyboard) {\n        $(this._element).on(Event.KEYDOWN_DISMISS, (event) => {\n          if (event.which === ESCAPE_KEYCODE) {\n            event.preventDefault()\n            this.hide()\n          }\n        })\n\n      } else if (!this._isShown) {\n        $(this._element).off(Event.KEYDOWN_DISMISS)\n      }\n    }\n\n    _setResizeEvent() {\n      if (this._isShown) {\n        $(window).on(Event.RESIZE, (event) => this.handleUpdate(event))\n      } else {\n        $(window).off(Event.RESIZE)\n      }\n    }\n\n    _hideModal() {\n      this._element.style.display = 'none'\n      this._element.setAttribute('aria-hidden', true)\n      this._isTransitioning = false\n      this._showBackdrop(() => {\n        $(document.body).removeClass(ClassName.OPEN)\n        this._resetAdjustments()\n        this._resetScrollbar()\n        $(this._element).trigger(Event.HIDDEN)\n      })\n    }\n\n    _removeBackdrop() {\n      if (this._backdrop) {\n        $(this._backdrop).remove()\n        this._backdrop = null\n      }\n    }\n\n    _showBackdrop(callback) {\n      const animate = $(this._element).hasClass(ClassName.FADE) ?\n        ClassName.FADE : ''\n\n      if (this._isShown && this._config.backdrop) {\n        const doAnimate = Util.supportsTransitionEnd() && animate\n\n        this._backdrop = document.createElement('div')\n        this._backdrop.className = ClassName.BACKDROP\n\n        if (animate) {\n          $(this._backdrop).addClass(animate)\n        }\n\n        $(this._backdrop).appendTo(document.body)\n\n        $(this._element).on(Event.CLICK_DISMISS, (event) => {\n          if (this._ignoreBackdropClick) {\n            this._ignoreBackdropClick = false\n            return\n          }\n          if (event.target !== event.currentTarget) {\n            return\n          }\n          if (this._config.backdrop === 'static') {\n            this._element.focus()\n          } else {\n            this.hide()\n          }\n        })\n\n        if (doAnimate) {\n          Util.reflow(this._backdrop)\n        }\n\n        $(this._backdrop).addClass(ClassName.SHOW)\n\n        if (!callback) {\n          return\n        }\n\n        if (!doAnimate) {\n          callback()\n          return\n        }\n\n        $(this._backdrop)\n          .one(Util.TRANSITION_END, callback)\n          .emulateTransitionEnd(BACKDROP_TRANSITION_DURATION)\n\n      } else if (!this._isShown && this._backdrop) {\n        $(this._backdrop).removeClass(ClassName.SHOW)\n\n        const callbackRemove = () => {\n          this._removeBackdrop()\n          if (callback) {\n            callback()\n          }\n        }\n\n        if (Util.supportsTransitionEnd() &&\n           $(this._element).hasClass(ClassName.FADE)) {\n          $(this._backdrop)\n            .one(Util.TRANSITION_END, callbackRemove)\n            .emulateTransitionEnd(BACKDROP_TRANSITION_DURATION)\n        } else {\n          callbackRemove()\n        }\n\n      } else if (callback) {\n        callback()\n      }\n    }\n\n\n    // ----------------------------------------------------------------------\n    // the following methods are used to handle overflowing modals\n    // todo (fat): these should probably be refactored out of modal.js\n    // ----------------------------------------------------------------------\n\n    _adjustDialog() {\n      const isModalOverflowing =\n        this._element.scrollHeight > document.documentElement.clientHeight\n\n      if (!this._isBodyOverflowing && isModalOverflowing) {\n        this._element.style.paddingLeft = `${this._scrollbarWidth}px`\n      }\n\n      if (this._isBodyOverflowing && !isModalOverflowing) {\n        this._element.style.paddingRight = `${this._scrollbarWidth}px`\n      }\n    }\n\n    _resetAdjustments() {\n      this._element.style.paddingLeft = ''\n      this._element.style.paddingRight = ''\n    }\n\n    _checkScrollbar() {\n      const rect = document.body.getBoundingClientRect()\n      this._isBodyOverflowing = rect.left + rect.right < window.innerWidth\n      this._scrollbarWidth = this._getScrollbarWidth()\n    }\n\n    _setScrollbar() {\n      if (this._isBodyOverflowing) {\n        // Note: DOMNode.style.paddingRight returns the actual value or '' if not set\n        //   while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set\n\n        // Adjust fixed content padding\n        $(Selector.FIXED_CONTENT).each((index, element) => {\n          const actualPadding = $(element)[0].style.paddingRight\n          const calculatedPadding = $(element).css('padding-right')\n          $(element).data('padding-right', actualPadding).css('padding-right', `${parseFloat(calculatedPadding) + this._scrollbarWidth}px`)\n        })\n\n        // Adjust sticky content margin\n        $(Selector.STICKY_CONTENT).each((index, element) => {\n          const actualMargin = $(element)[0].style.marginRight\n          const calculatedMargin = $(element).css('margin-right')\n          $(element).data('margin-right', actualMargin).css('margin-right', `${parseFloat(calculatedMargin) - this._scrollbarWidth}px`)\n        })\n\n        // Adjust navbar-toggler margin\n        $(Selector.NAVBAR_TOGGLER).each((index, element) => {\n          const actualMargin = $(element)[0].style.marginRight\n          const calculatedMargin = $(element).css('margin-right')\n          $(element).data('margin-right', actualMargin).css('margin-right', `${parseFloat(calculatedMargin) + this._scrollbarWidth}px`)\n        })\n\n        // Adjust body padding\n        const actualPadding = document.body.style.paddingRight\n        const calculatedPadding = $('body').css('padding-right')\n        $('body').data('padding-right', actualPadding).css('padding-right', `${parseFloat(calculatedPadding) + this._scrollbarWidth}px`)\n      }\n    }\n\n    _resetScrollbar() {\n      // Restore fixed content padding\n      $(Selector.FIXED_CONTENT).each((index, element) => {\n        const padding = $(element).data('padding-right')\n        if (typeof padding !== 'undefined') {\n          $(element).css('padding-right', padding).removeData('padding-right')\n        }\n      })\n\n      // Restore sticky content and navbar-toggler margin\n      $(`${Selector.STICKY_CONTENT}, ${Selector.NAVBAR_TOGGLER}`).each((index, element) => {\n        const margin = $(element).data('margin-right')\n        if (typeof margin !== 'undefined') {\n          $(element).css('margin-right', margin).removeData('margin-right')\n        }\n      })\n\n      // Restore body padding\n      const padding = $('body').data('padding-right')\n      if (typeof padding !== 'undefined') {\n        $('body').css('padding-right', padding).removeData('padding-right')\n      }\n    }\n\n    _getScrollbarWidth() { // thx d.walsh\n      const scrollDiv = document.createElement('div')\n      scrollDiv.className = ClassName.SCROLLBAR_MEASURER\n      document.body.appendChild(scrollDiv)\n      const scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth\n      document.body.removeChild(scrollDiv)\n      return scrollbarWidth\n    }\n\n\n    // static\n\n    static _jQueryInterface(config, relatedTarget) {\n      return this.each(function () {\n        let data      = $(this).data(DATA_KEY)\n        const _config = $.extend(\n          {},\n          Modal.Default,\n          $(this).data(),\n          typeof config === 'object' && config\n        )\n\n        if (!data) {\n          data = new Modal(this, _config)\n          $(this).data(DATA_KEY, data)\n        }\n\n        if (typeof config === 'string') {\n          if (typeof data[config] === 'undefined') {\n            throw new Error(`No method named \"${config}\"`)\n          }\n          data[config](relatedTarget)\n        } else if (_config.show) {\n          data.show(relatedTarget)\n        }\n      })\n    }\n\n  }\n\n\n  /**\n   * ------------------------------------------------------------------------\n   * Data Api implementation\n   * ------------------------------------------------------------------------\n   */\n\n  $(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {\n    let target\n    const selector = Util.getSelectorFromElement(this)\n\n    if (selector) {\n      target = $(selector)[0]\n    }\n\n    const config = $(target).data(DATA_KEY) ?\n      'toggle' : $.extend({}, $(target).data(), $(this).data())\n\n    if (this.tagName === 'A' || this.tagName === 'AREA') {\n      event.preventDefault()\n    }\n\n    const $target = $(target).one(Event.SHOW, (showEvent) => {\n      if (showEvent.isDefaultPrevented()) {\n        // only register focus restorer if modal will actually get shown\n        return\n      }\n\n      $target.one(Event.HIDDEN, () => {\n        if ($(this).is(':visible')) {\n          this.focus()\n        }\n      })\n    })\n\n    Modal._jQueryInterface.call($(target), config, this)\n  })\n\n\n  /**\n   * ------------------------------------------------------------------------\n   * jQuery\n   * ------------------------------------------------------------------------\n   */\n\n  $.fn[NAME]             = Modal._jQueryInterface\n  $.fn[NAME].Constructor = Modal\n  $.fn[NAME].noConflict  = function () {\n    $.fn[NAME] = JQUERY_NO_CONFLICT\n    return Modal._jQueryInterface\n  }\n\n  return Modal\n\n})($)\n\nexport default Modal\n","import $ from 'jquery'\nimport Popper from 'popper.js'\nimport Util from './util'\n\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.0.0-beta.2): tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst Tooltip = (($) => {\n\n  /**\n   * ------------------------------------------------------------------------\n   * Constants\n   * ------------------------------------------------------------------------\n   */\n\n  const NAME                = 'tooltip'\n  const VERSION             = '4.0.0-beta.2'\n  const DATA_KEY            = 'bs.tooltip'\n  const EVENT_KEY           = `.${DATA_KEY}`\n  const JQUERY_NO_CONFLICT  = $.fn[NAME]\n  const TRANSITION_DURATION = 150\n  const CLASS_PREFIX        = 'bs-tooltip'\n  const BSCLS_PREFIX_REGEX = new RegExp(`(^|\\\\s)${CLASS_PREFIX}\\\\S+`, 'g')\n\n  const DefaultType = {\n    animation           : 'boolean',\n    template            : 'string',\n    title               : '(string|element|function)',\n    trigger             : 'string',\n    delay               : '(number|object)',\n    html                : 'boolean',\n    selector            : '(string|boolean)',\n    placement           : '(string|function)',\n    offset              : '(number|string)',\n    container           : '(string|element|boolean)',\n    fallbackPlacement   : '(string|array)'\n  }\n\n  const AttachmentMap = {\n    AUTO   : 'auto',\n    TOP    : 'top',\n    RIGHT  : 'right',\n    BOTTOM : 'bottom',\n    LEFT   : 'left'\n  }\n\n  const Default = {\n    animation           : true,\n    template            : '<div class=\"tooltip\" role=\"tooltip\">'\n                        + '<div class=\"arrow\"></div>'\n                        + '<div class=\"tooltip-inner\"></div></div>',\n    trigger             : 'hover focus',\n    title               : '',\n    delay               : 0,\n    html                : false,\n    selector            : false,\n    placement           : 'top',\n    offset              : 0,\n    container           : false,\n    fallbackPlacement   : 'flip'\n  }\n\n  const HoverState = {\n    SHOW : 'show',\n    OUT  : 'out'\n  }\n\n  const Event = {\n    HIDE       : `hide${EVENT_KEY}`,\n    HIDDEN     : `hidden${EVENT_KEY}`,\n    SHOW       : `show${EVENT_KEY}`,\n    SHOWN      : `shown${EVENT_KEY}`,\n    INSERTED   : `inserted${EVENT_KEY}`,\n    CLICK      : `click${EVENT_KEY}`,\n    FOCUSIN    : `focusin${EVENT_KEY}`,\n    FOCUSOUT   : `focusout${EVENT_KEY}`,\n    MOUSEENTER : `mouseenter${EVENT_KEY}`,\n    MOUSELEAVE : `mouseleave${EVENT_KEY}`\n  }\n\n  const ClassName = {\n    FADE : 'fade',\n    SHOW : 'show'\n  }\n\n  const Selector = {\n    TOOLTIP       : '.tooltip',\n    TOOLTIP_INNER : '.tooltip-inner',\n    ARROW         : '.arrow'\n  }\n\n  const Trigger = {\n    HOVER  : 'hover',\n    FOCUS  : 'focus',\n    CLICK  : 'click',\n    MANUAL : 'manual'\n  }\n\n\n  /**\n   * ------------------------------------------------------------------------\n   * Class Definition\n   * ------------------------------------------------------------------------\n   */\n\n  class Tooltip {\n\n    constructor(element, config) {\n      /**\n       * Check for Popper dependency\n       * Popper - https://popper.js.org\n       */\n      if (typeof Popper === 'undefined') {\n        throw new Error('Bootstrap tooltips require Popper.js (https://popper.js.org)')\n      }\n\n      // private\n      this._isEnabled     = true\n      this._timeout       = 0\n      this._hoverState    = ''\n      this._activeTrigger = {}\n      this._popper        = null\n\n      // protected\n      this.element = element\n      this.config  = this._getConfig(config)\n      this.tip     = null\n\n      this._setListeners()\n\n    }\n\n\n    // getters\n\n    static get VERSION() {\n      return VERSION\n    }\n\n    static get Default() {\n      return Default\n    }\n\n    static get NAME() {\n      return NAME\n    }\n\n    static get DATA_KEY() {\n      return DATA_KEY\n    }\n\n    static get Event() {\n      return Event\n    }\n\n    static get EVENT_KEY() {\n      return EVENT_KEY\n    }\n\n    static get DefaultType() {\n      return DefaultType\n    }\n\n\n    // public\n\n    enable() {\n      this._isEnabled = true\n    }\n\n    disable() {\n      this._isEnabled = false\n    }\n\n    toggleEnabled() {\n      this._isEnabled = !this._isEnabled\n    }\n\n    toggle(event) {\n      if (!this._isEnabled) {\n        return\n      }\n\n      if (event) {\n        const dataKey = this.constructor.DATA_KEY\n        let context = $(event.currentTarget).data(dataKey)\n\n        if (!context) {\n          context = new this.constructor(\n            event.currentTarget,\n            this._getDelegateConfig()\n          )\n          $(event.currentTarget).data(dataKey, context)\n        }\n\n        context._activeTrigger.click = !context._activeTrigger.click\n\n        if (context._isWithActiveTrigger()) {\n          context._enter(null, context)\n        } else {\n          context._leave(null, context)\n        }\n\n      } else {\n\n        if ($(this.getTipElement()).hasClass(ClassName.SHOW)) {\n          this._leave(null, this)\n          return\n        }\n\n        this._enter(null, this)\n      }\n    }\n\n    dispose() {\n      clearTimeout(this._timeout)\n\n      $.removeData(this.element, this.constructor.DATA_KEY)\n\n      $(this.element).off(this.constructor.EVENT_KEY)\n      $(this.element).closest('.modal').off('hide.bs.modal')\n\n      if (this.tip) {\n        $(this.tip).remove()\n      }\n\n      this._isEnabled     = null\n      this._timeout       = null\n      this._hoverState    = null\n      this._activeTrigger = null\n      if (this._popper !== null) {\n        this._popper.destroy()\n      }\n\n      this._popper = null\n      this.element = null\n      this.config  = null\n      this.tip     = null\n    }\n\n    show() {\n      if ($(this.element).css('display') === 'none') {\n        throw new Error('Please use show on visible elements')\n      }\n\n      const showEvent = $.Event(this.constructor.Event.SHOW)\n      if (this.isWithContent() && this._isEnabled) {\n        $(this.element).trigger(showEvent)\n\n        const isInTheDom = $.contains(\n          this.element.ownerDocument.documentElement,\n          this.element\n        )\n\n        if (showEvent.isDefaultPrevented() || !isInTheDom) {\n          return\n        }\n\n        const tip   = this.getTipElement()\n        const tipId = Util.getUID(this.constructor.NAME)\n\n        tip.setAttribute('id', tipId)\n        this.element.setAttribute('aria-describedby', tipId)\n\n        this.setContent()\n\n        if (this.config.animation) {\n          $(tip).addClass(ClassName.FADE)\n        }\n\n        const placement  = typeof this.config.placement === 'function' ?\n          this.config.placement.call(this, tip, this.element) :\n          this.config.placement\n\n        const attachment = this._getAttachment(placement)\n        this.addAttachmentClass(attachment)\n\n        const container = this.config.container === false ? document.body : $(this.config.container)\n\n        $(tip).data(this.constructor.DATA_KEY, this)\n\n        if (!$.contains(this.element.ownerDocument.documentElement, this.tip)) {\n          $(tip).appendTo(container)\n        }\n\n        $(this.element).trigger(this.constructor.Event.INSERTED)\n\n        this._popper = new Popper(this.element, tip, {\n          placement: attachment,\n          modifiers: {\n            offset: {\n              offset: this.config.offset\n            },\n            flip: {\n              behavior: this.config.fallbackPlacement\n            },\n            arrow: {\n              element: Selector.ARROW\n            }\n          },\n          onCreate: (data) => {\n            if (data.originalPlacement !== data.placement) {\n              this._handlePopperPlacementChange(data)\n            }\n          },\n          onUpdate : (data) => {\n            this._handlePopperPlacementChange(data)\n          }\n        })\n\n        $(tip).addClass(ClassName.SHOW)\n\n        // if this is a touch-enabled device we add extra\n        // empty mouseover listeners to the body's immediate children;\n        // only needed because of broken event delegation on iOS\n        // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n        if ('ontouchstart' in document.documentElement) {\n          $('body').children().on('mouseover', null, $.noop)\n        }\n\n        const complete = () => {\n          if (this.config.animation) {\n            this._fixTransition()\n          }\n          const prevHoverState = this._hoverState\n          this._hoverState     = null\n\n          $(this.element).trigger(this.constructor.Event.SHOWN)\n\n          if (prevHoverState === HoverState.OUT) {\n            this._leave(null, this)\n          }\n        }\n\n        if (Util.supportsTransitionEnd() && $(this.tip).hasClass(ClassName.FADE)) {\n          $(this.tip)\n            .one(Util.TRANSITION_END, complete)\n            .emulateTransitionEnd(Tooltip._TRANSITION_DURATION)\n        } else {\n          complete()\n        }\n      }\n    }\n\n    hide(callback) {\n      const tip       = this.getTipElement()\n      const hideEvent = $.Event(this.constructor.Event.HIDE)\n      const complete  = () => {\n        if (this._hoverState !== HoverState.SHOW && tip.parentNode) {\n          tip.parentNode.removeChild(tip)\n        }\n\n        this._cleanTipClass()\n        this.element.removeAttribute('aria-describedby')\n        $(this.element).trigger(this.constructor.Event.HIDDEN)\n        if (this._popper !== null) {\n          this._popper.destroy()\n        }\n\n        if (callback) {\n          callback()\n        }\n      }\n\n      $(this.element).trigger(hideEvent)\n\n      if (hideEvent.isDefaultPrevented()) {\n        return\n      }\n\n      $(tip).removeClass(ClassName.SHOW)\n\n      // if this is a touch-enabled device we remove the extra\n      // empty mouseover listeners we added for iOS support\n      if ('ontouchstart' in document.documentElement) {\n        $('body').children().off('mouseover', null, $.noop)\n      }\n\n      this._activeTrigger[Trigger.CLICK] = false\n      this._activeTrigger[Trigger.FOCUS] = false\n      this._activeTrigger[Trigger.HOVER] = false\n\n      if (Util.supportsTransitionEnd() &&\n          $(this.tip).hasClass(ClassName.FADE)) {\n\n        $(tip)\n          .one(Util.TRANSITION_END, complete)\n          .emulateTransitionEnd(TRANSITION_DURATION)\n\n      } else {\n        complete()\n      }\n\n      this._hoverState = ''\n\n    }\n\n    update() {\n      if (this._popper !== null) {\n        this._popper.scheduleUpdate()\n      }\n    }\n\n    // protected\n\n    isWithContent() {\n      return Boolean(this.getTitle())\n    }\n\n    addAttachmentClass(attachment) {\n      $(this.getTipElement()).addClass(`${CLASS_PREFIX}-${attachment}`)\n    }\n\n    getTipElement() {\n      this.tip = this.tip || $(this.config.template)[0]\n      return this.tip\n    }\n\n    setContent() {\n      const $tip = $(this.getTipElement())\n      this.setElementContent($tip.find(Selector.TOOLTIP_INNER), this.getTitle())\n      $tip.removeClass(`${ClassName.FADE} ${ClassName.SHOW}`)\n    }\n\n    setElementContent($element, content) {\n      const html = this.config.html\n      if (typeof content === 'object' && (content.nodeType || content.jquery)) {\n        // content is a DOM node or a jQuery\n        if (html) {\n          if (!$(content).parent().is($element)) {\n            $element.empty().append(content)\n          }\n        } else {\n          $element.text($(content).text())\n        }\n      } else {\n        $element[html ? 'html' : 'text'](content)\n      }\n    }\n\n    getTitle() {\n      let title = this.element.getAttribute('data-original-title')\n\n      if (!title) {\n        title = typeof this.config.title === 'function' ?\n          this.config.title.call(this.element) :\n          this.config.title\n      }\n\n      return title\n    }\n\n\n    // private\n\n    _getAttachment(placement) {\n      return AttachmentMap[placement.toUpperCase()]\n    }\n\n    _setListeners() {\n      const triggers = this.config.trigger.split(' ')\n\n      triggers.forEach((trigger) => {\n        if (trigger === 'click') {\n          $(this.element).on(\n            this.constructor.Event.CLICK,\n            this.config.selector,\n            (event) => this.toggle(event)\n          )\n\n        } else if (trigger !== Trigger.MANUAL) {\n          const eventIn  = trigger === Trigger.HOVER ?\n            this.constructor.Event.MOUSEENTER :\n            this.constructor.Event.FOCUSIN\n          const eventOut = trigger === Trigger.HOVER ?\n            this.constructor.Event.MOUSELEAVE :\n            this.constructor.Event.FOCUSOUT\n\n          $(this.element)\n            .on(\n              eventIn,\n              this.config.selector,\n              (event) => this._enter(event)\n            )\n            .on(\n              eventOut,\n              this.config.selector,\n              (event) => this._leave(event)\n            )\n        }\n\n        $(this.element).closest('.modal').on(\n          'hide.bs.modal',\n          () => this.hide()\n        )\n      })\n\n      if (this.config.selector) {\n        this.config = $.extend({}, this.config, {\n          trigger  : 'manual',\n          selector : ''\n        })\n      } else {\n        this._fixTitle()\n      }\n    }\n\n    _fixTitle() {\n      const titleType = typeof this.element.getAttribute('data-original-title')\n      if (this.element.getAttribute('title') ||\n         titleType !== 'string') {\n        this.element.setAttribute(\n          'data-original-title',\n          this.element.getAttribute('title') || ''\n        )\n        this.element.setAttribute('title', '')\n      }\n    }\n\n    _enter(event, context) {\n      const dataKey = this.constructor.DATA_KEY\n\n      context = context || $(event.currentTarget).data(dataKey)\n\n      if (!context) {\n        context = new this.constructor(\n          event.currentTarget,\n          this._getDelegateConfig()\n        )\n        $(event.currentTarget).data(dataKey, context)\n      }\n\n      if (event) {\n        context._activeTrigger[\n          event.type === 'focusin' ? Trigger.FOCUS : Trigger.HOVER\n        ] = true\n      }\n\n      if ($(context.getTipElement()).hasClass(ClassName.SHOW) ||\n         context._hoverState === HoverState.SHOW) {\n        context._hoverState = HoverState.SHOW\n        return\n      }\n\n      clearTimeout(context._timeout)\n\n      context._hoverState = HoverState.SHOW\n\n      if (!context.config.delay || !context.config.delay.show) {\n        context.show()\n        return\n      }\n\n      context._timeout = setTimeout(() => {\n        if (context._hoverState === HoverState.SHOW) {\n          context.show()\n        }\n      }, context.config.delay.show)\n    }\n\n    _leave(event, context) {\n      const dataKey = this.constructor.DATA_KEY\n\n      context = context || $(event.currentTarget).data(dataKey)\n\n      if (!context) {\n        context = new this.constructor(\n          event.currentTarget,\n          this._getDelegateConfig()\n        )\n        $(event.currentTarget).data(dataKey, context)\n      }\n\n      if (event) {\n        context._activeTrigger[\n          event.type === 'focusout' ? Trigger.FOCUS : Trigger.HOVER\n        ] = false\n      }\n\n      if (context._isWithActiveTrigger()) {\n        return\n      }\n\n      clearTimeout(context._timeout)\n\n      context._hoverState = HoverState.OUT\n\n      if (!context.config.delay || !context.config.delay.hide) {\n        context.hide()\n        return\n      }\n\n      context._timeout = setTimeout(() => {\n        if (context._hoverState === HoverState.OUT) {\n          context.hide()\n        }\n      }, context.config.delay.hide)\n    }\n\n    _isWithActiveTrigger() {\n      for (const trigger in this._activeTrigger) {\n        if (this._activeTrigger[trigger]) {\n          return true\n        }\n      }\n\n      return false\n    }\n\n    _getConfig(config) {\n      config = $.extend(\n        {},\n        this.constructor.Default,\n        $(this.element).data(),\n        config\n      )\n\n      if (typeof config.delay === 'number') {\n        config.delay = {\n          show : config.delay,\n          hide : config.delay\n        }\n      }\n\n      if (typeof config.title === 'number') {\n        config.title = config.title.toString()\n      }\n\n      if (typeof config.content === 'number') {\n        config.content = config.content.toString()\n      }\n\n      Util.typeCheckConfig(\n        NAME,\n        config,\n        this.constructor.DefaultType\n      )\n\n      return config\n    }\n\n    _getDelegateConfig() {\n      const config = {}\n\n      if (this.config) {\n        for (const key in this.config) {\n          if (this.constructor.Default[key] !== this.config[key]) {\n            config[key] = this.config[key]\n          }\n        }\n      }\n\n      return config\n    }\n\n    _cleanTipClass() {\n      const $tip = $(this.getTipElement())\n      const tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX)\n      if (tabClass !== null && tabClass.length > 0) {\n        $tip.removeClass(tabClass.join(''))\n      }\n    }\n\n    _handlePopperPlacementChange(data) {\n      this._cleanTipClass()\n      this.addAttachmentClass(this._getAttachment(data.placement))\n    }\n\n    _fixTransition() {\n      const tip                 = this.getTipElement()\n      const initConfigAnimation = this.config.animation\n      if (tip.getAttribute('x-placement') !== null) {\n        return\n      }\n      $(tip).removeClass(ClassName.FADE)\n      this.config.animation = false\n      this.hide()\n      this.show()\n      this.config.animation = initConfigAnimation\n    }\n\n    // static\n\n    static _jQueryInterface(config) {\n      return this.each(function () {\n        let data      = $(this).data(DATA_KEY)\n        const _config = typeof config === 'object' && config\n\n        if (!data && /dispose|hide/.test(config)) {\n          return\n        }\n\n        if (!data) {\n          data = new Tooltip(this, _config)\n          $(this).data(DATA_KEY, data)\n        }\n\n        if (typeof config === 'string') {\n          if (typeof data[config] === 'undefined') {\n            throw new Error(`No method named \"${config}\"`)\n          }\n          data[config]()\n        }\n      })\n    }\n  }\n\n\n  /**\n   * ------------------------------------------------------------------------\n   * jQuery\n   * ------------------------------------------------------------------------\n   */\n\n  $.fn[NAME]             = Tooltip._jQueryInterface\n  $.fn[NAME].Constructor = Tooltip\n  $.fn[NAME].noConflict  = function () {\n    $.fn[NAME] = JQUERY_NO_CONFLICT\n    return Tooltip._jQueryInterface\n  }\n\n  return Tooltip\n\n})($, Popper)\n\nexport default Tooltip\n","import $ from 'jquery'\nimport Tooltip from './tooltip'\n\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.0.0-beta.2): popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst Popover = (($) => {\n\n\n  /**\n   * ------------------------------------------------------------------------\n   * Constants\n   * ------------------------------------------------------------------------\n   */\n\n  const NAME                = 'popover'\n  const VERSION             = '4.0.0-beta.2'\n  const DATA_KEY            = 'bs.popover'\n  const EVENT_KEY           = `.${DATA_KEY}`\n  const JQUERY_NO_CONFLICT  = $.fn[NAME]\n  const CLASS_PREFIX        = 'bs-popover'\n  const BSCLS_PREFIX_REGEX  = new RegExp(`(^|\\\\s)${CLASS_PREFIX}\\\\S+`, 'g')\n\n  const Default = $.extend({}, Tooltip.Default, {\n    placement : 'right',\n    trigger   : 'click',\n    content   : '',\n    template  : '<div class=\"popover\" role=\"tooltip\">'\n              + '<div class=\"arrow\"></div>'\n              + '<h3 class=\"popover-header\"></h3>'\n              + '<div class=\"popover-body\"></div></div>'\n  })\n\n  const DefaultType = $.extend({}, Tooltip.DefaultType, {\n    content : '(string|element|function)'\n  })\n\n  const ClassName = {\n    FADE : 'fade',\n    SHOW : 'show'\n  }\n\n  const Selector = {\n    TITLE   : '.popover-header',\n    CONTENT : '.popover-body'\n  }\n\n  const Event = {\n    HIDE       : `hide${EVENT_KEY}`,\n    HIDDEN     : `hidden${EVENT_KEY}`,\n    SHOW       : `show${EVENT_KEY}`,\n    SHOWN      : `shown${EVENT_KEY}`,\n    INSERTED   : `inserted${EVENT_KEY}`,\n    CLICK      : `click${EVENT_KEY}`,\n    FOCUSIN    : `focusin${EVENT_KEY}`,\n    FOCUSOUT   : `focusout${EVENT_KEY}`,\n    MOUSEENTER : `mouseenter${EVENT_KEY}`,\n    MOUSELEAVE : `mouseleave${EVENT_KEY}`\n  }\n\n\n  /**\n   * ------------------------------------------------------------------------\n   * Class Definition\n   * ------------------------------------------------------------------------\n   */\n\n  class Popover extends Tooltip {\n\n\n    // getters\n\n    static get VERSION() {\n      return VERSION\n    }\n\n    static get Default() {\n      return Default\n    }\n\n    static get NAME() {\n      return NAME\n    }\n\n    static get DATA_KEY() {\n      return DATA_KEY\n    }\n\n    static get Event() {\n      return Event\n    }\n\n    static get EVENT_KEY() {\n      return EVENT_KEY\n    }\n\n    static get DefaultType() {\n      return DefaultType\n    }\n\n\n    // overrides\n\n    isWithContent() {\n      return this.getTitle() || this._getContent()\n    }\n\n    addAttachmentClass(attachment) {\n      $(this.getTipElement()).addClass(`${CLASS_PREFIX}-${attachment}`)\n    }\n\n    getTipElement() {\n      this.tip = this.tip || $(this.config.template)[0]\n      return this.tip\n    }\n\n    setContent() {\n      const $tip = $(this.getTipElement())\n\n      // we use append for html objects to maintain js events\n      this.setElementContent($tip.find(Selector.TITLE), this.getTitle())\n      this.setElementContent($tip.find(Selector.CONTENT), this._getContent())\n\n      $tip.removeClass(`${ClassName.FADE} ${ClassName.SHOW}`)\n    }\n\n    // private\n\n    _getContent() {\n      return this.element.getAttribute('data-content')\n        || (typeof this.config.content === 'function' ?\n              this.config.content.call(this.element) :\n              this.config.content)\n    }\n\n    _cleanTipClass() {\n      const $tip = $(this.getTipElement())\n      const tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX)\n      if (tabClass !== null && tabClass.length > 0) {\n        $tip.removeClass(tabClass.join(''))\n      }\n    }\n\n\n    // static\n\n    static _jQueryInterface(config) {\n      return this.each(function () {\n        let data      = $(this).data(DATA_KEY)\n        const _config = typeof config === 'object' ? config : null\n\n        if (!data && /destroy|hide/.test(config)) {\n          return\n        }\n\n        if (!data) {\n          data = new Popover(this, _config)\n          $(this).data(DATA_KEY, data)\n        }\n\n        if (typeof config === 'string') {\n          if (typeof data[config] === 'undefined') {\n            throw new Error(`No method named \"${config}\"`)\n          }\n          data[config]()\n        }\n      })\n    }\n  }\n\n\n  /**\n   * ------------------------------------------------------------------------\n   * jQuery\n   * ------------------------------------------------------------------------\n   */\n\n  $.fn[NAME]             = Popover._jQueryInterface\n  $.fn[NAME].Constructor = Popover\n  $.fn[NAME].noConflict  = function () {\n    $.fn[NAME] = JQUERY_NO_CONFLICT\n    return Popover._jQueryInterface\n  }\n\n  return Popover\n\n})($)\n\nexport default Popover\n","import $ from 'jquery'\nimport Util from './util'\n\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.0.0-beta.2): scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst ScrollSpy = (($) => {\n\n\n  /**\n   * ------------------------------------------------------------------------\n   * Constants\n   * ------------------------------------------------------------------------\n   */\n\n  const NAME               = 'scrollspy'\n  const VERSION            = '4.0.0-beta.2'\n  const DATA_KEY           = 'bs.scrollspy'\n  const EVENT_KEY          = `.${DATA_KEY}`\n  const DATA_API_KEY       = '.data-api'\n  const JQUERY_NO_CONFLICT = $.fn[NAME]\n\n  const Default = {\n    offset : 10,\n    method : 'auto',\n    target : ''\n  }\n\n  const DefaultType = {\n    offset : 'number',\n    method : 'string',\n    target : '(string|element)'\n  }\n\n  const Event = {\n    ACTIVATE      : `activate${EVENT_KEY}`,\n    SCROLL        : `scroll${EVENT_KEY}`,\n    LOAD_DATA_API : `load${EVENT_KEY}${DATA_API_KEY}`\n  }\n\n  const ClassName = {\n    DROPDOWN_ITEM : 'dropdown-item',\n    DROPDOWN_MENU : 'dropdown-menu',\n    ACTIVE        : 'active'\n  }\n\n  const Selector = {\n    DATA_SPY        : '[data-spy=\"scroll\"]',\n    ACTIVE          : '.active',\n    NAV_LIST_GROUP  : '.nav, .list-group',\n    NAV_LINKS       : '.nav-link',\n    NAV_ITEMS       : '.nav-item',\n    LIST_ITEMS      : '.list-group-item',\n    DROPDOWN        : '.dropdown',\n    DROPDOWN_ITEMS  : '.dropdown-item',\n    DROPDOWN_TOGGLE : '.dropdown-toggle'\n  }\n\n  const OffsetMethod = {\n    OFFSET   : 'offset',\n    POSITION : 'position'\n  }\n\n\n  /**\n   * ------------------------------------------------------------------------\n   * Class Definition\n   * ------------------------------------------------------------------------\n   */\n\n  class ScrollSpy {\n\n    constructor(element, config) {\n      this._element       = element\n      this._scrollElement = element.tagName === 'BODY' ? window : element\n      this._config        = this._getConfig(config)\n      this._selector      = `${this._config.target} ${Selector.NAV_LINKS},`\n                          + `${this._config.target} ${Selector.LIST_ITEMS},`\n                          + `${this._config.target} ${Selector.DROPDOWN_ITEMS}`\n      this._offsets       = []\n      this._targets       = []\n      this._activeTarget  = null\n      this._scrollHeight  = 0\n\n      $(this._scrollElement).on(Event.SCROLL, (event) => this._process(event))\n\n      this.refresh()\n      this._process()\n    }\n\n\n    // getters\n\n    static get VERSION() {\n      return VERSION\n    }\n\n    static get Default() {\n      return Default\n    }\n\n\n    // public\n\n    refresh() {\n      const autoMethod = this._scrollElement !== this._scrollElement.window ?\n        OffsetMethod.POSITION : OffsetMethod.OFFSET\n\n      const offsetMethod = this._config.method === 'auto' ?\n        autoMethod : this._config.method\n\n      const offsetBase = offsetMethod === OffsetMethod.POSITION ?\n        this._getScrollTop() : 0\n\n      this._offsets = []\n      this._targets = []\n\n      this._scrollHeight = this._getScrollHeight()\n\n      const targets = $.makeArray($(this._selector))\n\n      targets\n        .map((element) => {\n          let target\n          const targetSelector = Util.getSelectorFromElement(element)\n\n          if (targetSelector) {\n            target = $(targetSelector)[0]\n          }\n\n          if (target) {\n            const targetBCR = target.getBoundingClientRect()\n            if (targetBCR.width || targetBCR.height) {\n              // todo (fat): remove sketch reliance on jQuery position/offset\n              return [\n                $(target)[offsetMethod]().top + offsetBase,\n                targetSelector\n              ]\n            }\n          }\n          return null\n        })\n        .filter((item)  => item)\n        .sort((a, b)    => a[0] - b[0])\n        .forEach((item) => {\n          this._offsets.push(item[0])\n          this._targets.push(item[1])\n        })\n    }\n\n    dispose() {\n      $.removeData(this._element, DATA_KEY)\n      $(this._scrollElement).off(EVENT_KEY)\n\n      this._element       = null\n      this._scrollElement = null\n      this._config        = null\n      this._selector      = null\n      this._offsets       = null\n      this._targets       = null\n      this._activeTarget  = null\n      this._scrollHeight  = null\n    }\n\n\n    // private\n\n    _getConfig(config) {\n      config = $.extend({}, Default, config)\n\n      if (typeof config.target !== 'string') {\n        let id = $(config.target).attr('id')\n        if (!id) {\n          id = Util.getUID(NAME)\n          $(config.target).attr('id', id)\n        }\n        config.target = `#${id}`\n      }\n\n      Util.typeCheckConfig(NAME, config, DefaultType)\n\n      return config\n    }\n\n    _getScrollTop() {\n      return this._scrollElement === window ?\n          this._scrollElement.pageYOffset : this._scrollElement.scrollTop\n    }\n\n    _getScrollHeight() {\n      return this._scrollElement.scrollHeight || Math.max(\n        document.body.scrollHeight,\n        document.documentElement.scrollHeight\n      )\n    }\n\n    _getOffsetHeight() {\n      return this._scrollElement === window ?\n          window.innerHeight : this._scrollElement.getBoundingClientRect().height\n    }\n\n    _process() {\n      const scrollTop    = this._getScrollTop() + this._config.offset\n      const scrollHeight = this._getScrollHeight()\n      const maxScroll    = this._config.offset\n        + scrollHeight\n        - this._getOffsetHeight()\n\n      if (this._scrollHeight !== scrollHeight) {\n        this.refresh()\n      }\n\n      if (scrollTop >= maxScroll) {\n        const target = this._targets[this._targets.length - 1]\n\n        if (this._activeTarget !== target) {\n          this._activate(target)\n        }\n        return\n      }\n\n      if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {\n        this._activeTarget = null\n        this._clear()\n        return\n      }\n\n      for (let i = this._offsets.length; i--;) {\n        const isActiveTarget = this._activeTarget !== this._targets[i]\n            && scrollTop >= this._offsets[i]\n            && (typeof this._offsets[i + 1] === 'undefined' ||\n                scrollTop < this._offsets[i + 1])\n\n        if (isActiveTarget) {\n          this._activate(this._targets[i])\n        }\n      }\n    }\n\n    _activate(target) {\n      this._activeTarget = target\n\n      this._clear()\n\n      let queries = this._selector.split(',')\n      // eslint-disable-next-line arrow-body-style\n      queries     = queries.map((selector) => {\n        return `${selector}[data-target=\"${target}\"],` +\n               `${selector}[href=\"${target}\"]`\n      })\n\n      const $link = $(queries.join(','))\n\n      if ($link.hasClass(ClassName.DROPDOWN_ITEM)) {\n        $link.closest(Selector.DROPDOWN).find(Selector.DROPDOWN_TOGGLE).addClass(ClassName.ACTIVE)\n        $link.addClass(ClassName.ACTIVE)\n      } else {\n        // Set triggered link as active\n        $link.addClass(ClassName.ACTIVE)\n        // Set triggered links parents as active\n        // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor\n        $link.parents(Selector.NAV_LIST_GROUP).prev(`${Selector.NAV_LINKS}, ${Selector.LIST_ITEMS}`).addClass(ClassName.ACTIVE)\n        // Handle special case when .nav-link is inside .nav-item\n        $link.parents(Selector.NAV_LIST_GROUP).prev(Selector.NAV_ITEMS).children(Selector.NAV_LINKS).addClass(ClassName.ACTIVE)\n      }\n\n      $(this._scrollElement).trigger(Event.ACTIVATE, {\n        relatedTarget: target\n      })\n    }\n\n    _clear() {\n      $(this._selector).filter(Selector.ACTIVE).removeClass(ClassName.ACTIVE)\n    }\n\n\n    // static\n\n    static _jQueryInterface(config) {\n      return this.each(function () {\n        let data      = $(this).data(DATA_KEY)\n        const _config = typeof config === 'object' && config\n\n        if (!data) {\n          data = new ScrollSpy(this, _config)\n          $(this).data(DATA_KEY, data)\n        }\n\n        if (typeof config === 'string') {\n          if (typeof data[config] === 'undefined') {\n            throw new Error(`No method named \"${config}\"`)\n          }\n          data[config]()\n        }\n      })\n    }\n\n\n  }\n\n\n  /**\n   * ------------------------------------------------------------------------\n   * Data Api implementation\n   * ------------------------------------------------------------------------\n   */\n\n  $(window).on(Event.LOAD_DATA_API, () => {\n    const scrollSpys = $.makeArray($(Selector.DATA_SPY))\n\n    for (let i = scrollSpys.length; i--;) {\n      const $spy = $(scrollSpys[i])\n      ScrollSpy._jQueryInterface.call($spy, $spy.data())\n    }\n  })\n\n\n  /**\n   * ------------------------------------------------------------------------\n   * jQuery\n   * ------------------------------------------------------------------------\n   */\n\n  $.fn[NAME]             = ScrollSpy._jQueryInterface\n  $.fn[NAME].Constructor = ScrollSpy\n  $.fn[NAME].noConflict  = function () {\n    $.fn[NAME] = JQUERY_NO_CONFLICT\n    return ScrollSpy._jQueryInterface\n  }\n\n  return ScrollSpy\n\n})($)\n\nexport default ScrollSpy\n","import $ from 'jquery'\nimport Util from './util'\n\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.0.0-beta.2): tab.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst Tab = (($) => {\n\n\n  /**\n   * ------------------------------------------------------------------------\n   * Constants\n   * ------------------------------------------------------------------------\n   */\n\n  const NAME                = 'tab'\n  const VERSION             = '4.0.0-beta.2'\n  const DATA_KEY            = 'bs.tab'\n  const EVENT_KEY           = `.${DATA_KEY}`\n  const DATA_API_KEY        = '.data-api'\n  const JQUERY_NO_CONFLICT  = $.fn[NAME]\n  const TRANSITION_DURATION = 150\n\n  const Event = {\n    HIDE           : `hide${EVENT_KEY}`,\n    HIDDEN         : `hidden${EVENT_KEY}`,\n    SHOW           : `show${EVENT_KEY}`,\n    SHOWN          : `shown${EVENT_KEY}`,\n    CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`\n  }\n\n  const ClassName = {\n    DROPDOWN_MENU : 'dropdown-menu',\n    ACTIVE        : 'active',\n    DISABLED      : 'disabled',\n    FADE          : 'fade',\n    SHOW          : 'show'\n  }\n\n  const Selector = {\n    DROPDOWN              : '.dropdown',\n    NAV_LIST_GROUP        : '.nav, .list-group',\n    ACTIVE                : '.active',\n    ACTIVE_UL             : '> li > .active',\n    DATA_TOGGLE           : '[data-toggle=\"tab\"], [data-toggle=\"pill\"], [data-toggle=\"list\"]',\n    DROPDOWN_TOGGLE       : '.dropdown-toggle',\n    DROPDOWN_ACTIVE_CHILD : '> .dropdown-menu .active'\n  }\n\n\n  /**\n   * ------------------------------------------------------------------------\n   * Class Definition\n   * ------------------------------------------------------------------------\n   */\n\n  class Tab {\n\n    constructor(element) {\n      this._element = element\n    }\n\n\n    // getters\n\n    static get VERSION() {\n      return VERSION\n    }\n\n\n    // public\n\n    show() {\n      if (this._element.parentNode &&\n          this._element.parentNode.nodeType === Node.ELEMENT_NODE &&\n          $(this._element).hasClass(ClassName.ACTIVE) ||\n          $(this._element).hasClass(ClassName.DISABLED)) {\n        return\n      }\n\n      let target\n      let previous\n      const listElement = $(this._element).closest(Selector.NAV_LIST_GROUP)[0]\n      const selector    = Util.getSelectorFromElement(this._element)\n\n      if (listElement) {\n        const itemSelector = listElement.nodeName === 'UL' ? Selector.ACTIVE_UL : Selector.ACTIVE\n        previous = $.makeArray($(listElement).find(itemSelector))\n        previous = previous[previous.length - 1]\n      }\n\n      const hideEvent = $.Event(Event.HIDE, {\n        relatedTarget: this._element\n      })\n\n      const showEvent = $.Event(Event.SHOW, {\n        relatedTarget: previous\n      })\n\n      if (previous) {\n        $(previous).trigger(hideEvent)\n      }\n\n      $(this._element).trigger(showEvent)\n\n      if (showEvent.isDefaultPrevented() ||\n         hideEvent.isDefaultPrevented()) {\n        return\n      }\n\n      if (selector) {\n        target = $(selector)[0]\n      }\n\n      this._activate(\n        this._element,\n        listElement\n      )\n\n      const complete = () => {\n        const hiddenEvent = $.Event(Event.HIDDEN, {\n          relatedTarget: this._element\n        })\n\n        const shownEvent = $.Event(Event.SHOWN, {\n          relatedTarget: previous\n        })\n\n        $(previous).trigger(hiddenEvent)\n        $(this._element).trigger(shownEvent)\n      }\n\n      if (target) {\n        this._activate(target, target.parentNode, complete)\n      } else {\n        complete()\n      }\n    }\n\n    dispose() {\n      $.removeData(this._element, DATA_KEY)\n      this._element = null\n    }\n\n\n    // private\n\n    _activate(element, container, callback) {\n      let activeElements\n      if (container.nodeName === 'UL') {\n        activeElements = $(container).find(Selector.ACTIVE_UL)\n      } else {\n        activeElements = $(container).children(Selector.ACTIVE)\n      }\n\n      const active          = activeElements[0]\n      const isTransitioning = callback\n        && Util.supportsTransitionEnd()\n        && (active && $(active).hasClass(ClassName.FADE))\n\n      const complete = () => this._transitionComplete(\n        element,\n        active,\n        isTransitioning,\n        callback\n      )\n\n      if (active && isTransitioning) {\n        $(active)\n          .one(Util.TRANSITION_END, complete)\n          .emulateTransitionEnd(TRANSITION_DURATION)\n\n      } else {\n        complete()\n      }\n\n      if (active) {\n        $(active).removeClass(ClassName.SHOW)\n      }\n    }\n\n    _transitionComplete(element, active, isTransitioning, callback) {\n      if (active) {\n        $(active).removeClass(ClassName.ACTIVE)\n\n        const dropdownChild = $(active.parentNode).find(\n          Selector.DROPDOWN_ACTIVE_CHILD\n        )[0]\n\n        if (dropdownChild) {\n          $(dropdownChild).removeClass(ClassName.ACTIVE)\n        }\n\n        if (active.getAttribute('role') === 'tab') {\n          active.setAttribute('aria-selected', false)\n        }\n      }\n\n      $(element).addClass(ClassName.ACTIVE)\n      if (element.getAttribute('role') === 'tab') {\n        element.setAttribute('aria-selected', true)\n      }\n\n      if (isTransitioning) {\n        Util.reflow(element)\n        $(element).addClass(ClassName.SHOW)\n      } else {\n        $(element).removeClass(ClassName.FADE)\n      }\n\n      if (element.parentNode &&\n          $(element.parentNode).hasClass(ClassName.DROPDOWN_MENU)) {\n\n        const dropdownElement = $(element).closest(Selector.DROPDOWN)[0]\n        if (dropdownElement) {\n          $(dropdownElement).find(Selector.DROPDOWN_TOGGLE).addClass(ClassName.ACTIVE)\n        }\n\n        element.setAttribute('aria-expanded', true)\n      }\n\n      if (callback) {\n        callback()\n      }\n    }\n\n\n    // static\n\n    static _jQueryInterface(config) {\n      return this.each(function () {\n        const $this = $(this)\n        let data    = $this.data(DATA_KEY)\n\n        if (!data) {\n          data = new Tab(this)\n          $this.data(DATA_KEY, data)\n        }\n\n        if (typeof config === 'string') {\n          if (typeof data[config] === 'undefined') {\n            throw new Error(`No method named \"${config}\"`)\n          }\n          data[config]()\n        }\n      })\n    }\n\n  }\n\n\n  /**\n   * ------------------------------------------------------------------------\n   * Data Api implementation\n   * ------------------------------------------------------------------------\n   */\n\n  $(document)\n    .on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {\n      event.preventDefault()\n      Tab._jQueryInterface.call($(this), 'show')\n    })\n\n\n  /**\n   * ------------------------------------------------------------------------\n   * jQuery\n   * ------------------------------------------------------------------------\n   */\n\n  $.fn[NAME]             = Tab._jQueryInterface\n  $.fn[NAME].Constructor = Tab\n  $.fn[NAME].noConflict  = function () {\n    $.fn[NAME] = JQUERY_NO_CONFLICT\n    return Tab._jQueryInterface\n  }\n\n  return Tab\n\n})($)\n\nexport default Tab\n","import $ from 'jquery'\nimport Alert from './alert'\nimport Button from './button'\nimport Carousel from './carousel'\nimport Collapse from './collapse'\nimport Dropdown from './dropdown'\nimport Modal from './modal'\nimport Popover from './popover'\nimport Scrollspy from './scrollspy'\nimport Tab from './tab'\nimport Tooltip from './tooltip'\nimport Util from './util'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.0.0-alpha.6): index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n(($) => {\n  if (typeof $ === 'undefined') {\n    throw new Error('Bootstrap\\'s JavaScript requires jQuery. jQuery must be included before Bootstrap\\'s JavaScript.')\n  }\n\n  const version = $.fn.jquery.split(' ')[0].split('.')\n  const minMajor = 1\n  const ltMajor  = 2\n  const minMinor = 9\n  const minPatch = 1\n  const maxMajor = 4\n\n  if (version[0] < ltMajor && version[1] < minMinor || version[0] === minMajor && version[1] === minMinor && version[2] < minPatch || version[0] >= maxMajor) {\n    throw new Error('Bootstrap\\'s JavaScript requires at least jQuery v1.9.1 but less than v4.0.0')\n  }\n})($)\n\nexport {\n  Util,\n  Alert,\n  Button,\n  Carousel,\n  Collapse,\n  Dropdown,\n  Modal,\n  Popover,\n  Scrollspy,\n  Tab,\n  Tooltip\n}\n"]}