{"version":3,"sources":["jsdelivr-header.js","/npm/@gitlab-org/gitlab-ui@1.10.3/dist/index.js"],"names":[],"mappings":"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","file":"/npm/@gitlab-org/gitlab-ui@1.10.3/dist/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.37.0.\n * Original file: /npm/@gitlab-org/gitlab-ui@1.10.3/dist/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","/**\n * Aliasing Object[method] allows the minifier to shorten methods to a single character variable,\n * as well as giving BV a chance to inject polyfills.\n * As long as we avoid\n * - import * as Object from \"utils/object\"\n * all unused exports should be removed by tree-shaking.\n */\n\n// @link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign\nif (typeof Object.assign !== 'function') {\n  Object.assign = function (target, varArgs) {\n    // .length of function is 2\n\n    if (target == null) {\n      // TypeError if undefined or null\n      throw new TypeError('Cannot convert undefined or null to object');\n    }\n\n    var to = Object(target);\n\n    for (var index = 1; index < arguments.length; index++) {\n      var nextSource = arguments[index];\n\n      if (nextSource != null) {\n        // Skip over if undefined or null\n        for (var nextKey in nextSource) {\n          // Avoid bugs when hasOwnProperty is shadowed\n          if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {\n            to[nextKey] = nextSource[nextKey];\n          }\n        }\n      }\n    }\n    return to;\n  };\n}\n\n// @link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is#Polyfill\nif (!Object.is) {\n  Object.is = function (x, y) {\n    // SameValue algorithm\n    if (x === y) {\n      // Steps 1-5, 7-10\n      // Steps 6.b-6.e: +0 != -0\n      return x !== 0 || 1 / x === 1 / y;\n    } else {\n      // Step 6.a: NaN == NaN\n      // eslint-disable-next-line no-self-compare\n      return x !== x && y !== y;\n    }\n  };\n}\n\nvar assign = Object.assign;\nvar keys = Object.keys;\nvar defineProperties = Object.defineProperties;\nvar defineProperty = Object.defineProperty;\n\nfunction readonlyDescriptor() {\n  return { enumerable: true, configurable: false, writable: false };\n}\n\n// Production steps of ECMA-262, Edition 6, 22.1.2.1\n// es6-ified by @alexsasharegan\nif (!Array.from) {\n  Array.from = function () {\n    var toStr = Object.prototype.toString;\n    var isCallable = function isCallable(fn) {\n      return typeof fn === 'function' || toStr.call(fn) === '[object Function]';\n    };\n    var toInteger = function toInteger(value) {\n      var number = Number(value);\n      if (isNaN(number)) {\n        return 0;\n      }\n      if (number === 0 || !isFinite(number)) {\n        return number;\n      }\n      return (number > 0 ? 1 : -1) * Math.floor(Math.abs(number));\n    };\n    var maxSafeInteger = Math.pow(2, 53) - 1;\n    var toLength = function toLength(value) {\n      return Math.min(Math.max(toInteger(value), 0), maxSafeInteger);\n    };\n\n    // The length property of the from method is 1.\n    return function from(arrayLike /*, mapFn, thisArg */) {\n      // 1. Let C be the this value.\n      var C = this;\n\n      // 2. Let items be ToObject(arrayLike).\n      var items = Object(arrayLike);\n\n      // 3. ReturnIfAbrupt(items).\n      if (arrayLike == null) {\n        throw new TypeError('Array.from requires an array-like object - not null or undefined');\n      }\n\n      // 4. If mapfn is undefined, then let mapping be false.\n      var mapFn = arguments.length > 1 ? arguments[1] : void undefined;\n      var T = void 0;\n\n      if (typeof mapFn !== 'undefined') {\n        // 5. else\n        // 5. a If IsCallable(mapfn) is false, throw a TypeError exception.\n        if (!isCallable(mapFn)) {\n          throw new TypeError('Array.from: when provided, the second argument must be a function');\n        }\n\n        // 5. b. If thisArg was supplied, let T be thisArg; else let T be undefined.\n        if (arguments.length > 2) {\n          T = arguments[2];\n        }\n      }\n\n      // 10. Let lenValue be Get(items, \"length\").\n      // 11. Let len be ToLength(lenValue).\n      var len = toLength(items.length);\n\n      // 13. If IsConstructor(C) is true, then\n      // 13. a. Let A be the result of calling the [[Construct]] internal method\n      // of C with an argument list containing the single item len.\n      // 14. a. Else, Let A be ArrayCreate(len).\n      var A = isCallable(C) ? Object(new C(len)) : new Array(len);\n\n      // 16. Let k be 0.\n      var k = 0;\n      // 17. Repeat, while k < len… (also steps a - h)\n      var kValue = void 0;\n      while (k < len) {\n        kValue = items[k];\n        if (mapFn) {\n          A[k] = typeof T === 'undefined' ? mapFn(kValue, k) : mapFn.call(T, kValue, k);\n        } else {\n          A[k] = kValue;\n        }\n        k += 1;\n      }\n      // 18. Let putStatus be Put(A, \"length\", len, true).\n      A.length = len;\n      // 20. Return A.\n      return A;\n    };\n  }();\n}\n\n// https://tc39.github.io/ecma262/#sec-array.prototype.find\n// Needed for IE support\nif (!Array.prototype.find) {\n  // eslint-disable-next-line no-extend-native\n  Object.defineProperty(Array.prototype, 'find', {\n    value: function value(predicate) {\n      // 1. Let O be ? ToObject(this value).\n      if (this == null) {\n        throw new TypeError('\"this\" is null or not defined');\n      }\n\n      var o = Object(this);\n\n      // 2. Let len be ? ToLength(? Get(O, \"length\")).\n      var len = o.length >>> 0;\n\n      // 3. If IsCallable(predicate) is false, throw a TypeError exception.\n      if (typeof predicate !== 'function') {\n        throw new TypeError('predicate must be a function');\n      }\n\n      // 4. If thisArg was supplied, let T be thisArg; else let T be undefined.\n      var thisArg = arguments[1];\n\n      // 5. Let k be 0.\n      var k = 0;\n\n      // 6. Repeat, while k < len\n      while (k < len) {\n        // a. Let Pk be ! ToString(k).\n        // b. Let kValue be ? Get(O, Pk).\n        // c. Let testResult be ToBoolean(? Call(predicate, T, « kValue, k, O »)).\n        // d. If testResult is true, return kValue.\n        var kValue = o[k];\n        if (predicate.call(thisArg, kValue, k, o)) {\n          return kValue;\n        }\n        // e. Increase k by 1.\n        k++;\n      }\n\n      // 7. Return undefined.\n      return undefined;\n    }\n  });\n}\n\nif (!Array.isArray) {\n  Array.isArray = function (arg) {\n    return Object.prototype.toString.call(arg) === '[object Array]';\n  };\n}\n\n// Static\nvar from = Array.from;\nvar isArray = Array.isArray;\nfunction concat() {\n  return Array.prototype.concat.apply([], arguments);\n}\n\nvar __assign=Object.assign||function(e){for(var a,s=1,t=arguments.length;s<t;s++)for(var r in a=arguments[s])Object.prototype.hasOwnProperty.call(a,r)&&(e[r]=a[r]);return e};function mergeData(){for(var e,a,s={},t=arguments.length;t--;)for(var r=0,c=Object.keys(arguments[t]);r<c.length;r++)switch(e=c[r]){case\"class\":case\"style\":case\"directives\":Array.isArray(s[e])||(s[e]=[]),s[e]=s[e].concat(arguments[t][e]);break;case\"staticClass\":if(!arguments[t][e])break;void 0===s[e]&&(s[e]=\"\"),s[e]&&(s[e]+=\" \"),s[e]+=arguments[t][e].trim();break;case\"on\":case\"nativeOn\":s[e]||(s[e]={});for(var o=0,n=Object.keys(arguments[t][e]||{});o<n.length;o++)a=n[o],s[e][a]?s[e][a]=[].concat(s[e][a],arguments[t][e][a]):s[e][a]=arguments[t][e][a];break;case\"attrs\":case\"props\":case\"domProps\":case\"scopedSlots\":case\"staticStyle\":case\"hook\":case\"transition\":s[e]||(s[e]={}),s[e]=__assign({},arguments[t][e],s[e]);break;case\"slot\":case\"key\":case\"ref\":case\"tag\":case\"show\":case\"keepAlive\":default:s[e]||(s[e]=arguments[t][e]);}return s}\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n/**\n * The Link component is used in many other BV components.\n * As such, sharing its props makes supporting all its features easier.\n * However, some components need to modify the defaults for their own purpose.\n * Prefer sharing a fresh copy of the props to ensure mutations\n * do not affect other component references to the props.\n *\n * https://github.com/vuejs/vue-router/blob/dev/src/components/link.js\n * @return {{}}\n */\nfunction propsFactory() {\n  return {\n    href: {\n      type: String,\n      default: null\n    },\n    rel: {\n      type: String,\n      default: null\n    },\n    target: {\n      type: String,\n      default: '_self'\n    },\n    active: {\n      type: Boolean,\n      default: false\n    },\n    activeClass: {\n      type: String,\n      default: 'active'\n    },\n    append: {\n      type: Boolean,\n      default: false\n    },\n    disabled: {\n      type: Boolean,\n      default: false\n    },\n    event: {\n      type: [String, Array],\n      default: 'click'\n    },\n    exact: {\n      type: Boolean,\n      default: false\n    },\n    exactActiveClass: {\n      type: String,\n      default: 'active'\n    },\n    replace: {\n      type: Boolean,\n      default: false\n    },\n    routerTag: {\n      type: String,\n      default: 'a'\n    },\n    to: {\n      type: [String, Object],\n      default: null\n    }\n  };\n}\n\nfunction computeTag(props, parent) {\n  return Boolean(parent.$router) && props.to && !props.disabled ? 'router-link' : 'a';\n}\n\nfunction computeHref(_ref, tag) {\n  var disabled = _ref.disabled,\n      href = _ref.href,\n      to = _ref.to;\n\n  // We've already checked the parent.$router in computeTag,\n  // so router-link means live router.\n  // When deferring to Vue Router's router-link,\n  // don't use the href attr at all.\n  // Must return undefined for router-link to populate href.\n  if (tag === 'router-link') return void 0;\n  // If href explicitly provided\n  if (href) return href;\n  // Reconstruct href when `to` used, but no router\n  if (to) {\n    // Fallback to `to` prop (if `to` is a string)\n    if (typeof to === 'string') return to;\n    // Fallback to `to.path` prop (if `to` is an object)\n    if ((typeof to === 'undefined' ? 'undefined' : _typeof(to)) === 'object' && typeof to.path === 'string') return to.path;\n  }\n  // If nothing is provided use '#'\n  return '#';\n}\n\nfunction computeRel(_ref2) {\n  var target = _ref2.target,\n      rel = _ref2.rel;\n\n  if (target === '_blank' && rel === null) {\n    return 'noopener';\n  }\n  return rel || null;\n}\n\nfunction clickHandlerFactory(_ref3) {\n  var disabled = _ref3.disabled,\n      tag = _ref3.tag,\n      href = _ref3.href,\n      suppliedHandler = _ref3.suppliedHandler,\n      parent = _ref3.parent;\n\n  var isRouterLink = tag === 'router-link';\n\n  return function onClick(e) {\n    if (disabled && e instanceof Event) {\n      // Stop event from bubbling up.\n      e.stopPropagation();\n      // Kill the event loop attached to this specific EventTarget.\n      e.stopImmediatePropagation();\n    } else {\n      parent.$root.$emit('clicked::link', e);\n\n      if (isRouterLink && e.target.__vue__) {\n        e.target.__vue__.$emit('click', e);\n      }\n      if (typeof suppliedHandler === 'function') {\n        suppliedHandler.apply(undefined, arguments);\n      }\n    }\n\n    if (!isRouterLink && href === '#' || disabled) {\n      // Stop scroll-to-top behavior or navigation.\n      e.preventDefault();\n    }\n  };\n}\n\nvar Link = {\n  functional: true,\n  props: propsFactory(),\n  render: function render(h, _ref4) {\n    var props = _ref4.props,\n        data = _ref4.data,\n        parent = _ref4.parent,\n        children = _ref4.children;\n\n    var tag = computeTag(props, parent);\n    var rel = computeRel(props);\n    var href = computeHref(props, tag);\n    var eventType = tag === 'router-link' ? 'nativeOn' : 'on';\n    var suppliedHandler = (data[eventType] || {}).click;\n    var handlers = { click: clickHandlerFactory({ tag: tag, href: href, disabled: props.disabled, suppliedHandler: suppliedHandler, parent: parent }) };\n\n    var componentData = mergeData(data, {\n      class: [props.active ? props.exact ? props.exactActiveClass : props.activeClass : null, { disabled: props.disabled }],\n      attrs: {\n        rel: rel,\n        href: href,\n        target: props.target,\n        tabindex: props.disabled ? '-1' : data.attrs ? data.attrs.tabindex : null,\n        'aria-disabled': tag === 'a' && props.disabled ? 'true' : null\n      },\n      props: assign(props, { tag: props.routerTag })\n    });\n\n    // If href prop exists on router-link (even undefined or null) it fails working on SSR\n    if (!componentData.attrs.href) {\n      delete componentData.attrs.href;\n    }\n\n    // We want to overwrite any click handler since our callback\n    // will invoke the supplied handler if !props.disabled\n    componentData[eventType] = assign(componentData[eventType] || {}, handlers);\n\n    return h(tag, componentData, children);\n  }\n};\n\n/**\n * Mixin that handles the rel attribute/property for _blank targets\n * adds the \"noopener noreferrer\" to the rel attribute if the target has the aforementioned value\n * and if the target or rel haven't been set before\n */\n\nvar RelMixin = {\n  props: {\n    target: {\n      type: String,\n      required: false,\n      default: null\n    }\n  },\n  computed: {\n    relType: function relType() {\n      if (this.target === '_blank' && this.hostname !== window.location.hostname) {\n        return this.secureRel;\n      }\n\n      return this.$attrs.rel;\n    },\n    hostname: function hostname() {\n      var anchor = document.createElement('a');\n      anchor.href = this.$attrs.href;\n\n      return anchor.hostname;\n    },\n    secureRel: function secureRel() {\n      return ((this.$attrs.rel || '') + ' noopener noreferrer').trim();\n    }\n  }\n};\n\nvar script = {\n  components: {\n    BLink: Link\n  },\n  mixins: [RelMixin]\n};\n\n/* script */\nvar __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function __vue_render__() {\n  var _vm = this;\n  var _h = _vm.$createElement;\n  var _c = _vm._self._c || _h;\n  return _c(\"b-link\", _vm._g(_vm._b({ attrs: { rel: _vm.relType, target: _vm.target } }, \"b-link\", _vm.$attrs, false), _vm.$listeners), [_vm._t(\"default\")], 2);\n};\nvar __vue_staticRenderFns__ = [];\n__vue_render__._withStripped = true;\n\n/* style */\nvar __vue_inject_styles__ = undefined;\n/* scoped */\nvar __vue_scope_id__ = undefined;\n/* module identifier */\nvar __vue_module_identifier__ = undefined;\n/* functional template */\nvar __vue_is_functional_template__ = false;\n/* component normalizer */\nfunction __vue_normalize__(template, style, script$$1, scope, functional, moduleIdentifier, createInjector, createInjectorSSR) {\n  var component = (typeof script$$1 === 'function' ? script$$1.options : script$$1) || {};\n\n  {\n    component.__file = \"/builds/gitlab-org/gitlab-ui/components/base/link/link.vue\";\n  }\n\n  if (!component.render) {\n    component.render = template.render;\n    component.staticRenderFns = template.staticRenderFns;\n    component._compiled = true;\n\n    if (functional) component.functional = true;\n  }\n\n  component._scopeId = scope;\n\n  return component;\n}\n/* style inject */\nfunction __vue_create_injector__() {\n  var head = document.head || document.getElementsByTagName('head')[0];\n  var styles = __vue_create_injector__.styles || (__vue_create_injector__.styles = {});\n  var isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\\\\b/.test(navigator.userAgent.toLowerCase());\n\n  return function addStyle(id, css) {\n    if (document.querySelector('style[data-vue-ssr-id~=\"' + id + '\"]')) return; // SSR styles are present.\n\n    var group = isOldIE ? css.media || 'default' : id;\n    var style = styles[group] || (styles[group] = { ids: [], parts: [], element: undefined });\n\n    if (!style.ids.includes(id)) {\n      var code = css.source;\n      var index = style.ids.length;\n\n      style.ids.push(id);\n\n      if (isOldIE) {\n        style.element = style.element || document.querySelector('style[data-group=' + group + ']');\n      }\n\n      if (!style.element) {\n        var el = style.element = document.createElement('style');\n        el.type = 'text/css';\n\n        if (css.media) el.setAttribute('media', css.media);\n        if (isOldIE) {\n          el.setAttribute('data-group', group);\n          el.setAttribute('data-next-index', '0');\n        }\n\n        head.appendChild(el);\n      }\n\n      if (isOldIE) {\n        index = parseInt(style.element.getAttribute('data-next-index'));\n        style.element.setAttribute('data-next-index', index + 1);\n      }\n\n      if (style.element.styleSheet) {\n        style.parts.push(code);\n        style.element.styleSheet.cssText = style.parts.filter(Boolean).join('\\n');\n      } else {\n        var textNode = document.createTextNode(code);\n        var nodes = style.element.childNodes;\n        if (nodes[index]) style.element.removeChild(nodes[index]);\n        if (nodes.length) style.element.insertBefore(textNode, nodes[index]);else style.element.appendChild(textNode);\n      }\n    }\n  };\n}\n/* style inject SSR */\n\nvar link = __vue_normalize__({ render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ }, __vue_inject_styles__, __vue_script__, __vue_scope_id__, __vue_is_functional_template__, __vue_module_identifier__, __vue_create_injector__, undefined);\n\nvar script$1 = {\n  props: {\n    label: {\n      type: String,\n      required: false,\n      default: 'Loading'\n    },\n    size: {\n      type: Number,\n      required: false,\n      default: 1,\n      validator: function validator(value) {\n        return value > 0 && value < 6;\n      }\n    },\n    inline: {\n      type: Boolean,\n      required: false,\n      default: false\n    }\n  },\n  computed: {\n    rootElementType: function rootElementType() {\n      return this.inline ? 'span' : 'div';\n    },\n    cssClass: function cssClass() {\n      return 'fa-' + this.size + 'x fa-spin';\n    }\n  }\n};\n\n/* script */\nvar __vue_script__$1 = script$1;\n\n/* template */\nvar __vue_render__$1 = function __vue_render__() {\n  var _vm = this;\n  var _h = _vm.$createElement;\n  var _c = _vm._self._c || _h;\n  return _c(_vm.rootElementType, { tag: \"component\", staticClass: \"loading-container text-center\" }, [_c(\"i\", {\n    staticClass: \"fa fa-spinner\",\n    class: _vm.cssClass,\n    attrs: { \"aria-label\": _vm.label, \"aria-hidden\": \"true\" }\n  })]);\n};\nvar __vue_staticRenderFns__$1 = [];\n__vue_render__$1._withStripped = true;\n\n/* style */\nvar __vue_inject_styles__$1 = undefined;\n/* scoped */\nvar __vue_scope_id__$1 = undefined;\n/* module identifier */\nvar __vue_module_identifier__$1 = undefined;\n/* functional template */\nvar __vue_is_functional_template__$1 = false;\n/* component normalizer */\nfunction __vue_normalize__$1(template, style, script, scope, functional, moduleIdentifier, createInjector, createInjectorSSR) {\n  var component = (typeof script === 'function' ? script.options : script) || {};\n\n  {\n    component.__file = \"/builds/gitlab-org/gitlab-ui/components/base/loading_icon/loading_icon.vue\";\n  }\n\n  if (!component.render) {\n    component.render = template.render;\n    component.staticRenderFns = template.staticRenderFns;\n    component._compiled = true;\n\n    if (functional) component.functional = true;\n  }\n\n  component._scopeId = scope;\n\n  return component;\n}\n/* style inject */\nfunction __vue_create_injector__$1() {\n  var head = document.head || document.getElementsByTagName('head')[0];\n  var styles = __vue_create_injector__$1.styles || (__vue_create_injector__$1.styles = {});\n  var isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\\\\b/.test(navigator.userAgent.toLowerCase());\n\n  return function addStyle(id, css) {\n    if (document.querySelector('style[data-vue-ssr-id~=\"' + id + '\"]')) return; // SSR styles are present.\n\n    var group = isOldIE ? css.media || 'default' : id;\n    var style = styles[group] || (styles[group] = { ids: [], parts: [], element: undefined });\n\n    if (!style.ids.includes(id)) {\n      var code = css.source;\n      var index = style.ids.length;\n\n      style.ids.push(id);\n\n      if (isOldIE) {\n        style.element = style.element || document.querySelector('style[data-group=' + group + ']');\n      }\n\n      if (!style.element) {\n        var el = style.element = document.createElement('style');\n        el.type = 'text/css';\n\n        if (css.media) el.setAttribute('media', css.media);\n        if (isOldIE) {\n          el.setAttribute('data-group', group);\n          el.setAttribute('data-next-index', '0');\n        }\n\n        head.appendChild(el);\n      }\n\n      if (isOldIE) {\n        index = parseInt(style.element.getAttribute('data-next-index'));\n        style.element.setAttribute('data-next-index', index + 1);\n      }\n\n      if (style.element.styleSheet) {\n        style.parts.push(code);\n        style.element.styleSheet.cssText = style.parts.filter(Boolean).join('\\n');\n      } else {\n        var textNode = document.createTextNode(code);\n        var nodes = style.element.childNodes;\n        if (nodes[index]) style.element.removeChild(nodes[index]);\n        if (nodes.length) style.element.insertBefore(textNode, nodes[index]);else style.element.appendChild(textNode);\n      }\n    }\n  };\n}\n/* style inject SSR */\n\nvar loading_icon = __vue_normalize__$1({ render: __vue_render__$1, staticRenderFns: __vue_staticRenderFns__$1 }, __vue_inject_styles__$1, __vue_script__$1, __vue_scope_id__$1, __vue_is_functional_template__$1, __vue_module_identifier__$1, __vue_create_injector__$1, undefined);\n\nfunction identity(x) {\n  return x;\n}\n\n/**\n * Given an array of properties or an object of property keys,\n * plucks all the values off the target object.\n * @param {{}|string[]} keysToPluck\n * @param {{}} objToPluck\n * @param {Function} transformFn\n * @return {{}}\n */\nfunction pluckProps(keysToPluck, objToPluck) {\n  var transformFn = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : identity;\n\n  return (isArray(keysToPluck) ? keysToPluck.slice() : keys(keysToPluck)).reduce(function (memo, prop) {\n    // eslint-disable-next-line no-sequences\n    return memo[transformFn(prop)] = objToPluck[prop], memo;\n  }, {});\n}\n\n// Determine if an element is an HTML Element\nvar isElement = function isElement(el) {\n  return el && el.nodeType === Node.ELEMENT_NODE;\n};\n\n// Determine if an HTML element is visible - Faster than CSS check\nvar isVisible = function isVisible(el) {\n  return isElement(el) && document.body.contains(el) && el.getBoundingClientRect().height > 0 && el.getBoundingClientRect().width > 0;\n};\n\n// Determine if an element is disabled\nvar isDisabled = function isDisabled(el) {\n  return !isElement(el) || el.disabled || el.classList.contains('disabled') || Boolean(el.getAttribute('disabled'));\n};\n\n// Select all elements matching selector. Returns [] if none found\nvar selectAll = function selectAll(selector, root) {\n  if (!isElement(root)) {\n    root = document;\n  }\n  return from(root.querySelectorAll(selector));\n};\n\n// Select a single element, returns null if not found\nvar select = function select(selector, root) {\n  if (!isElement(root)) {\n    root = document;\n  }\n  return root.querySelector(selector) || null;\n};\n\n// Determine if an element matches a selector\nvar matches = function matches(el, selector) {\n  if (!isElement(el)) {\n    return false;\n  }\n\n  // https://developer.mozilla.org/en-US/docs/Web/API/Element/matches#Polyfill\n  // Prefer native implementations over polyfill function\n  var proto = Element.prototype;\n  var Matches = proto.matches || proto.matchesSelector || proto.mozMatchesSelector || proto.msMatchesSelector || proto.oMatchesSelector || proto.webkitMatchesSelector ||\n  /* istanbul ignore next */\n  function (sel) {\n    var element = this;\n    var m = selectAll(sel, element.document || element.ownerDocument);\n    var i = m.length;\n    // eslint-disable-next-line no-empty\n    while (--i >= 0 && m.item(i) !== element) {}\n    return i > -1;\n  };\n\n  return Matches.call(el, selector);\n};\n\n// Finds closest element matching selector. Returns null if not found\nvar closest = function closest(selector, root) {\n  if (!isElement(root)) {\n    return null;\n  }\n\n  // https://developer.mozilla.org/en-US/docs/Web/API/Element/closest\n  // Since we dont support IE < 10, we can use the \"Matches\" version of the polyfill for speed\n  // Prefer native implementation over polyfill function\n  var Closest = Element.prototype.closest ||\n  /* istanbul ignore next */\n  function (sel) {\n    var element = this;\n    if (!document.documentElement.contains(element)) {\n      return null;\n    }\n    do {\n      // Use our \"patched\" matches function\n      if (matches(element, sel)) {\n        return element;\n      }\n      element = element.parentElement;\n    } while (element !== null);\n    return null;\n  };\n\n  var el = Closest.call(root, selector);\n  // Emulate jQuery closest and return null if match is the passed in element (root)\n  return el === root ? null : el;\n};\n\n// Get an element given an ID\nvar getById = function getById(id) {\n  return document.getElementById(/^#/.test(id) ? id.slice(1) : id) || null;\n};\n\n// Add a class to an element\nvar addClass = function addClass(el, className) {\n  if (className && isElement(el)) {\n    el.classList.add(className);\n  }\n};\n\n// Remove a class from an element\nvar removeClass = function removeClass(el, className) {\n  if (className && isElement(el)) {\n    el.classList.remove(className);\n  }\n};\n\n// Test if an element has a class\nvar hasClass = function hasClass(el, className) {\n  if (className && isElement(el)) {\n    return el.classList.contains(className);\n  }\n  return false;\n};\n\n// Set an attribute on an element\nvar setAttr = function setAttr(el, attr, value) {\n  if (attr && isElement(el)) {\n    el.setAttribute(attr, value);\n  }\n};\n\n// Remove an attribute from an element\nvar removeAttr = function removeAttr(el, attr) {\n  if (attr && isElement(el)) {\n    el.removeAttribute(attr);\n  }\n};\n\n// Get an attribute value from an element (returns null if not found)\nvar getAttr = function getAttr(el, attr) {\n  if (attr && isElement(el)) {\n    return el.getAttribute(attr);\n  }\n  return null;\n};\n\n// Determine if an attribute exists on an element (returns true or false, or null if element not found)\nvar hasAttr = function hasAttr(el, attr) {\n  if (attr && isElement(el)) {\n    return el.hasAttribute(attr);\n  }\n  return null;\n};\n\n// Return the Bounding Client Rec of an element. Retruns null if not an element\nvar getBCR = function getBCR(el) {\n  return isElement(el) ? el.getBoundingClientRect() : null;\n};\n\n// Get computed style object for an element\nvar getCS = function getCS(el) {\n  return isElement(el) ? window.getComputedStyle(el) : {};\n};\n\n// Attach an event listener to an element\nvar eventOn = function eventOn(el, evtName, handler) {\n  if (el && el.addEventListener) {\n    el.addEventListener(evtName, handler);\n  }\n};\n\n// Remove an event listener from an element\nvar eventOff = function eventOff(el, evtName, handler) {\n  if (el && el.removeEventListener) {\n    el.removeEventListener(evtName, handler);\n  }\n};\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar btnProps = {\n  block: {\n    type: Boolean,\n    default: false\n  },\n  disabled: {\n    type: Boolean,\n    default: false\n  },\n  size: {\n    type: String,\n    default: null\n  },\n  variant: {\n    type: String,\n    default: null\n  },\n  type: {\n    type: String,\n    default: 'button'\n  },\n  pressed: {\n    // tri-state prop: true, false or null\n    // => on, off, not a toggle\n    type: Boolean,\n    default: null\n  }\n};\n\nvar linkProps = propsFactory();\ndelete linkProps.href.default;\ndelete linkProps.to.default;\nvar linkPropKeys = keys(linkProps);\n\nvar props$1 = assign(linkProps, btnProps);\n\nfunction handleFocus(evt) {\n  if (evt.type === 'focusin') {\n    addClass(evt.target, 'focus');\n  } else if (evt.type === 'focusout') {\n    removeClass(evt.target, 'focus');\n  }\n}\n\nvar BButton = {\n  functional: true,\n  props: props$1,\n  render: function render(h, _ref) {\n    var _ref2;\n\n    var props$$1 = _ref.props,\n        data = _ref.data,\n        listeners = _ref.listeners,\n        children = _ref.children;\n\n    var isLink = Boolean(props$$1.href || props$$1.to);\n    var isToggle = typeof props$$1.pressed === 'boolean';\n    var on = {\n      click: function click(e) {\n        if (props$$1.disabled && e instanceof Event) {\n          e.stopPropagation();\n          e.preventDefault();\n        } else if (isToggle) {\n          // Concat will normalize the value to an array\n          // without double wrapping an array value in an array.\n          concat(listeners['update:pressed']).forEach(function (fn) {\n            if (typeof fn === 'function') {\n              fn(!props$$1.pressed);\n            }\n          });\n        }\n      }\n    };\n\n    if (isToggle) {\n      on.focusin = handleFocus;\n      on.focusout = handleFocus;\n    }\n\n    var componentData = {\n      staticClass: 'btn',\n      class: [props$$1.variant ? 'btn-' + props$$1.variant : 'btn-secondary', (_ref2 = {}, _defineProperty(_ref2, 'btn-' + props$$1.size, Boolean(props$$1.size)), _defineProperty(_ref2, 'btn-block', props$$1.block), _defineProperty(_ref2, 'disabled', props$$1.disabled), _defineProperty(_ref2, 'active', props$$1.pressed), _ref2)],\n      props: isLink ? pluckProps(linkPropKeys, props$$1) : null,\n      attrs: {\n        type: isLink ? null : props$$1.type,\n        disabled: isLink ? null : props$$1.disabled,\n        // Data attribute not used for js logic,\n        // but only for BS4 style selectors.\n        'data-toggle': isToggle ? 'button' : null,\n        'aria-pressed': isToggle ? String(props$$1.pressed) : null,\n        // Tab index is used when the component becomes a link.\n        // Links are tabable, but don't allow disabled,\n        // so we mimic that functionality by disabling tabbing.\n        tabindex: props$$1.disabled && isLink ? '-1' : data.attrs ? data.attrs['tabindex'] : null\n      },\n      on: on\n    };\n\n    return h(isLink ? Link : 'button', mergeData(data, componentData), children);\n  }\n};\n\nfunction _defineProperty$1(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar props$2 = {\n  disabled: {\n    type: Boolean,\n    default: false\n  },\n  ariaLabel: {\n    type: String,\n    default: 'Close'\n  },\n  textVariant: {\n    type: String,\n    default: null\n  }\n};\n\nvar bBtnClose = {\n  functional: true,\n  props: props$2,\n  render: function render(h, _ref) {\n    var props = _ref.props,\n        data = _ref.data,\n        listeners = _ref.listeners,\n        slots = _ref.slots;\n\n    var componentData = {\n      staticClass: 'close',\n      class: _defineProperty$1({}, 'text-' + props.textVariant, props.textVariant),\n      attrs: {\n        type: 'button',\n        disabled: props.disabled,\n        'aria-label': props.ariaLabel ? String(props.ariaLabel) : null\n      },\n      on: {\n        click: function click(e) {\n          // Ensure click on button HTML content is also disabled\n          if (props.disabled && e instanceof Event) {\n            e.stopPropagation();\n            e.preventDefault();\n          }\n        }\n      }\n      // Careful not to override the slot with innerHTML\n    };if (!slots().default) {\n      componentData.domProps = { innerHTML: '&times;' };\n    }\n    return h('button', mergeData(data, componentData), slots().default);\n  }\n};\n\n/*\n * SSR Safe Client Side ID attribute generation\n *\n */\n\nvar idMixin = {\n  props: {\n    id: {\n      type: String,\n      default: null\n    }\n  },\n  methods: {\n    safeId: function safeId() {\n      var suffix = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n\n      var id = this.id || this.localId_ || null;\n      if (!id) {\n        return null;\n      }\n      suffix = String(suffix).replace(/\\s+/g, '_');\n      return suffix ? id + '_' + suffix : id;\n    }\n  },\n  computed: {\n    localId_: function localId_() {\n      if (!this.$isServer && !this.id && typeof this._uid !== 'undefined') {\n        return '__BVID__' + this._uid;\n      }\n    }\n  }\n};\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n/**\n * Issue #569: collapse::toggle::state triggered too many times\n * @link https://github.com/bootstrap-vue/bootstrap-vue/issues/569\n */\n\nvar BVRL = '__BV_root_listeners__';\n\nvar listenOnRootMixin = {\n  methods: {\n    /**\n         * Safely register event listeners on the root Vue node.\n         * While Vue automatically removes listeners for individual components,\n         * when a component registers a listener on root and is destroyed,\n         * this orphans a callback because the node is gone,\n         * but the root does not clear the callback.\n         *\n         * This adds a non-reactive prop to a vm on the fly\n         * in order to avoid object observation and its performance costs\n         * to something that needs no reactivity.\n         * It should be highly unlikely there are any naming collisions.\n         * @param {string} event\n         * @param {function} callback\n         * @chainable\n         */\n    listenOnRoot: function listenOnRoot(event, callback) {\n      if (!this[BVRL] || !isArray(this[BVRL])) {\n        this[BVRL] = [];\n      }\n      this[BVRL].push({ event: event, callback: callback });\n      this.$root.$on(event, callback);\n      return this;\n    },\n\n\n    /**\n         * Convenience method for calling vm.$emit on vm.$root.\n         * @param {string} event\n         * @param {*} args\n         * @chainable\n         */\n    emitOnRoot: function emitOnRoot(event) {\n      var _$root;\n\n      for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n        args[_key - 1] = arguments[_key];\n      }\n\n      (_$root = this.$root).$emit.apply(_$root, [event].concat(_toConsumableArray(args)));\n      return this;\n    }\n  },\n\n  beforeDestroy: function beforeDestroy() {\n    if (this[BVRL] && isArray(this[BVRL])) {\n      while (this[BVRL].length > 0) {\n        // shift to process in order\n        var _BVRL$shift = this[BVRL].shift(),\n            event = _BVRL$shift.event,\n            callback = _BVRL$shift.callback;\n\n        this.$root.$off(event, callback);\n      }\n    }\n  }\n};\n\n/**\n * Observe a DOM element changes, falls back to eventListener mode\n * @param {Element} el The DOM element to observe\n * @param {Function} callback callback to be called on change\n * @param {object} [opts={childList: true, subtree: true}] observe options\n * @see http://stackoverflow.com/questions/3219758\n */\nfunction observeDOM(el, callback, opts) {\n  var MutationObserver = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver;\n  var eventListenerSupported = window.addEventListener;\n\n  // Handle case where we might be passed a vue instance\n  el = el ? el.$el || el : null;\n  /* istanbul ignore next: dificult to test in JSDOM */\n  if (!isElement(el)) {\n    // We can't observe somthing that isn't an element\n    return null;\n  }\n\n  var obs = null;\n\n  /* istanbul ignore next: dificult to test in JSDOM */\n  if (MutationObserver) {\n    // Define a new observer\n    obs = new MutationObserver(function (mutations) {\n      var changed = false;\n      // A Mutation can contain several change records, so we loop through them to see what has changed.\n      // We break out of the loop early if any \"significant\" change has been detected\n      for (var i = 0; i < mutations.length && !changed; i++) {\n        // The muttion record\n        var mutation = mutations[i];\n        // Mutation Type\n        var type = mutation.type;\n        // DOM Node (could be any DOM Node type - HTMLElement, Text, comment, etc)\n        var target = mutation.target;\n        if (type === 'characterData' && target.nodeType === Node.TEXT_NODE) {\n          // We ignore nodes that are not TEXt (i.e. comments, etc) as they don't change layout\n          changed = true;\n        } else if (type === 'attributes') {\n          changed = true;\n        } else if (type === 'childList' && (mutation.addedNodes.length > 0 || mutation.removedNodes.length > 0)) {\n          // This includes HTMLElement and Text Nodes being added/removed/re-arranged\n          changed = true;\n        }\n      }\n      if (changed) {\n        // We only call the callback if a change that could affect layout/size truely happened.\n        callback();\n      }\n    });\n\n    // Have the observer observe foo for changes in children, etc\n    obs.observe(el, assign({ childList: true, subtree: true }, opts));\n  } else if (eventListenerSupported) {\n    // Legacy interface. most likely not used in modern browsers\n    el.addEventListener('DOMNodeInserted', callback, false);\n    el.addEventListener('DOMNodeRemoved', callback, false);\n  }\n\n  // We return a reference to the observer so that obs.disconnect() can be called if necessary\n  // To reduce overhead when the root element is hiiden\n  return obs;\n}\n\n/**\n * Log a warning message to the console with bootstrap-vue formatting sugar.\n * @param {string} message\n */\n/* istanbul ignore next */\nfunction warn(message) {\n  console.warn(\"[Bootstrap-Vue warn]: \" + message);\n}\n\n/*\n * Key Codes (events)\n */\n\nvar KeyCodes = {\n  SPACE: 32,\n  ENTER: 13,\n  ESC: 27,\n  LEFT: 37,\n  UP: 38,\n  RIGHT: 39,\n  DOWN: 40,\n  PAGEUP: 33,\n  PAGEDOWN: 34,\n  HOME: 36,\n  END: 35\n};\n\nvar _createClass = function () { function defineProperties$$1(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties$$1(Constructor.prototype, protoProps); if (staticProps) defineProperties$$1(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar BvEvent = function () {\n  function BvEvent(type) {\n    var eventInit = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n    _classCallCheck(this, BvEvent);\n\n    // Start by emulating native Event constructor.\n    if (!type) {\n      throw new TypeError('Failed to construct \\'' + this.constructor.name + '\\'. 1 argument required, ' + arguments.length + ' given.');\n    }\n    // Assign defaults first, the eventInit,\n    // and the type last so it can't be overwritten.\n    assign(this, BvEvent.defaults(), eventInit, { type: type });\n    // Freeze some props as readonly, but leave them enumerable.\n    defineProperties(this, {\n      type: readonlyDescriptor(),\n      cancelable: readonlyDescriptor(),\n      nativeEvent: readonlyDescriptor(),\n      target: readonlyDescriptor(),\n      relatedTarget: readonlyDescriptor(),\n      vueTarget: readonlyDescriptor()\n    });\n    // Create a private variable using closure scoping.\n    var defaultPrevented = false;\n    // Recreate preventDefault method. One way setter.\n    this.preventDefault = function preventDefault() {\n      if (this.cancelable) {\n        defaultPrevented = true;\n      }\n    };\n    // Create 'defaultPrevented' publicly accessible prop\n    // that can only be altered by the preventDefault method.\n    defineProperty(this, 'defaultPrevented', {\n      enumerable: true,\n      get: function get() {\n        return defaultPrevented;\n      }\n    });\n  }\n\n  _createClass(BvEvent, null, [{\n    key: 'defaults',\n    value: function defaults() {\n      return {\n        type: '',\n        cancelable: true,\n        nativeEvent: null,\n        target: null,\n        relatedTarget: null,\n        vueTarget: null\n      };\n    }\n  }]);\n\n  return BvEvent;\n}();\n\nfunction _defineProperty$2(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// Selectors for padding/margin adjustments\nvar Selector = {\n  FIXED_CONTENT: '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top',\n  STICKY_CONTENT: '.sticky-top',\n  NAVBAR_TOGGLER: '.navbar-toggler'\n\n  // ObserveDom config\n};var OBSERVER_CONFIG = {\n  subtree: true,\n  childList: true,\n  characterData: true,\n  attributes: true,\n  attributeFilter: ['style', 'class']\n};\n\nvar BModal = {\n  mixins: [idMixin, listenOnRootMixin],\n  components: { bBtn: BButton, bBtnClose: bBtnClose },\n  render: function render(h) {\n    var _this = this;\n\n    var $slots = this.$slots;\n    // Modal Header\n    var header = h(false);\n    if (!this.hideHeader) {\n      var modalHeader = $slots['modal-header'];\n      if (!modalHeader) {\n        var closeButton = h(false);\n        if (!this.hideHeaderClose) {\n          closeButton = h('b-btn-close', {\n            props: {\n              disabled: this.is_transitioning,\n              ariaLabel: this.headerCloseLabel,\n              textVariant: this.headerTextVariant\n            },\n            on: {\n              click: function click(evt) {\n                _this.hide('header-close');\n              }\n            }\n          }, [$slots['modal-header-close']]);\n        }\n        modalHeader = [h(this.titleTag, { class: ['modal-title'] }, [$slots['modal-title'] || this.title]), closeButton];\n      }\n      header = h('header', {\n        ref: 'header',\n        class: this.headerClasses,\n        attrs: { id: this.safeId('__BV_modal_header_') }\n      }, [modalHeader]);\n    }\n    // Modal Body\n    var body = h('div', {\n      ref: 'body',\n      class: this.bodyClasses,\n      attrs: { id: this.safeId('__BV_modal_body_') }\n    }, [$slots.default]);\n    // Modal Footer\n    var footer = h(false);\n    if (!this.hideFooter) {\n      var modalFooter = $slots['modal-footer'];\n      if (!modalFooter) {\n        var cancelButton = h(false);\n        if (!this.okOnly) {\n          cancelButton = h('b-btn', {\n            props: {\n              variant: this.cancelVariant,\n              size: this.buttonSize,\n              disabled: this.cancelDisabled || this.busy || this.is_transitioning\n            },\n            on: {\n              click: function click(evt) {\n                _this.hide('cancel');\n              }\n            }\n          }, [$slots['modal-cancel'] || this.cancelTitle]);\n        }\n        var okButton = h('b-btn', {\n          props: {\n            variant: this.okVariant,\n            size: this.buttonSize,\n            disabled: this.okDisabled || this.busy || this.is_transitioning\n          },\n          on: {\n            click: function click(evt) {\n              _this.hide('ok');\n            }\n          }\n        }, [$slots['modal-ok'] || this.okTitle]);\n        modalFooter = [cancelButton, okButton];\n      }\n      footer = h('footer', {\n        ref: 'footer',\n        class: this.footerClasses,\n        attrs: { id: this.safeId('__BV_modal_footer_') }\n      }, [modalFooter]);\n    }\n    // Assemble Modal Content\n    var modalContent = h('div', {\n      ref: 'content',\n      class: ['modal-content'],\n      attrs: {\n        tabindex: '-1',\n        role: 'document',\n        'aria-labelledby': this.hideHeader ? null : this.safeId('__BV_modal_header_'),\n        'aria-describedby': this.safeId('__BV_modal_body_')\n      },\n      on: {\n        focusout: this.onFocusout,\n        click: function click(evt) {\n          evt.stopPropagation();\n          // https://github.com/bootstrap-vue/bootstrap-vue/issues/1528\n          _this.$root.$emit('bv::dropdown::shown');\n        }\n      }\n    }, [header, body, footer]);\n    // Modal Dialog wrapper\n    var modalDialog = h('div', { class: this.dialogClasses }, [modalContent]);\n    // Modal\n    var modal = h('div', {\n      ref: 'modal',\n      class: this.modalClasses,\n      directives: [{\n        name: 'show',\n        rawName: 'v-show',\n        value: this.is_visible,\n        expression: 'is_visible'\n      }],\n      attrs: {\n        id: this.safeId(),\n        role: 'dialog',\n        'aria-hidden': this.is_visible ? null : 'true'\n      },\n      on: {\n        click: this.onClickOut,\n        keydown: this.onEsc\n      }\n    }, [modalDialog]);\n    // Wrap modal in transition\n    modal = h('transition', {\n      props: {\n        enterClass: '',\n        enterToClass: '',\n        enterActiveClass: '',\n        leaveClass: '',\n        leaveActiveClass: '',\n        leaveToClass: ''\n      },\n      on: {\n        'before-enter': this.onBeforeEnter,\n        enter: this.onEnter,\n        'after-enter': this.onAfterEnter,\n        'before-leave': this.onBeforeLeave,\n        leave: this.onLeave,\n        'after-leave': this.onAfterLeave\n      }\n    }, [modal]);\n    // Modal Backdrop\n    var backdrop = h(false);\n    if (!this.hideBackdrop && (this.is_visible || this.is_transitioning)) {\n      backdrop = h('div', {\n        class: this.backdropClasses,\n        attrs: { id: this.safeId('__BV_modal_backdrop_') }\n      });\n    }\n    // Assemble modal and backdrop\n    var outer = h(false);\n    if (!this.is_hidden) {\n      outer = h('div', { attrs: { id: this.safeId('__BV_modal_outer_') } }, [modal, backdrop]);\n    }\n    // Wrap in DIV to maintain thi.$el reference for hide/show method aceess\n    return h('div', {}, [outer]);\n  },\n  data: function data() {\n    return {\n      is_hidden: this.lazy || false,\n      is_visible: false,\n      is_transitioning: false,\n      is_show: false,\n      is_block: false,\n      scrollbarWidth: 0,\n      isBodyOverflowing: false,\n      return_focus: this.returnFocus || null\n    };\n  },\n\n  model: {\n    prop: 'visible',\n    event: 'change'\n  },\n  props: {\n    title: {\n      type: String,\n      default: ''\n    },\n    titleTag: {\n      type: String,\n      default: 'h5'\n    },\n    size: {\n      type: String,\n      default: 'md'\n    },\n    centered: {\n      type: Boolean,\n      default: false\n    },\n    buttonSize: {\n      type: String,\n      default: ''\n    },\n    noFade: {\n      type: Boolean,\n      default: false\n    },\n    noCloseOnBackdrop: {\n      type: Boolean,\n      default: false\n    },\n    noCloseOnEsc: {\n      type: Boolean,\n      default: false\n    },\n    noEnforceFocus: {\n      type: Boolean,\n      default: false\n    },\n    headerBgVariant: {\n      type: String,\n      default: null\n    },\n    headerBorderVariant: {\n      type: String,\n      default: null\n    },\n    headerTextVariant: {\n      type: String,\n      default: null\n    },\n    headerClass: {\n      type: [String, Array],\n      default: null\n    },\n    bodyBgVariant: {\n      type: String,\n      default: null\n    },\n    bodyTextVariant: {\n      type: String,\n      default: null\n    },\n    modalClass: {\n      type: [String, Array],\n      default: null\n    },\n    bodyClass: {\n      type: [String, Array],\n      default: null\n    },\n    footerBgVariant: {\n      type: String,\n      default: null\n    },\n    footerBorderVariant: {\n      type: String,\n      default: null\n    },\n    footerTextVariant: {\n      type: String,\n      default: null\n    },\n    footerClass: {\n      type: [String, Array],\n      default: null\n    },\n    hideHeader: {\n      type: Boolean,\n      default: false\n    },\n    hideFooter: {\n      type: Boolean,\n      default: false\n    },\n    hideHeaderClose: {\n      type: Boolean,\n      default: false\n    },\n    hideBackdrop: {\n      type: Boolean,\n      default: false\n    },\n    okOnly: {\n      type: Boolean,\n      default: false\n    },\n    okDisabled: {\n      type: Boolean,\n      default: false\n    },\n    cancelDisabled: {\n      type: Boolean,\n      default: false\n    },\n    visible: {\n      type: Boolean,\n      default: false\n    },\n    returnFocus: {\n      default: null\n    },\n    headerCloseLabel: {\n      type: String,\n      default: 'Close'\n    },\n    cancelTitle: {\n      type: String,\n      default: 'Cancel'\n    },\n    okTitle: {\n      type: String,\n      default: 'OK'\n    },\n    cancelVariant: {\n      type: String,\n      default: 'secondary'\n    },\n    okVariant: {\n      type: String,\n      default: 'primary'\n    },\n    lazy: {\n      type: Boolean,\n      default: false\n    },\n    busy: {\n      type: Boolean,\n      default: false\n    }\n  },\n  computed: {\n    modalClasses: function modalClasses() {\n      return ['modal', {\n        fade: !this.noFade,\n        show: this.is_show,\n        'd-block': this.is_block\n      }, this.modalClass];\n    },\n    dialogClasses: function dialogClasses() {\n      var _ref;\n\n      return ['modal-dialog', (_ref = {}, _defineProperty$2(_ref, 'modal-' + this.size, Boolean(this.size)), _defineProperty$2(_ref, 'modal-dialog-centered', this.centered), _ref)];\n    },\n    backdropClasses: function backdropClasses() {\n      return ['modal-backdrop', {\n        fade: !this.noFade,\n        show: this.is_show || this.noFade\n      }];\n    },\n    headerClasses: function headerClasses() {\n      var _ref2;\n\n      return ['modal-header', (_ref2 = {}, _defineProperty$2(_ref2, 'bg-' + this.headerBgVariant, Boolean(this.headerBgVariant)), _defineProperty$2(_ref2, 'text-' + this.headerTextVariant, Boolean(this.headerTextVariant)), _defineProperty$2(_ref2, 'border-' + this.headerBorderVariant, Boolean(this.headerBorderVariant)), _ref2), this.headerClass];\n    },\n    bodyClasses: function bodyClasses() {\n      var _ref3;\n\n      return ['modal-body', (_ref3 = {}, _defineProperty$2(_ref3, 'bg-' + this.bodyBgVariant, Boolean(this.bodyBgVariant)), _defineProperty$2(_ref3, 'text-' + this.bodyTextVariant, Boolean(this.bodyTextVariant)), _ref3), this.bodyClass];\n    },\n    footerClasses: function footerClasses() {\n      var _ref4;\n\n      return ['modal-footer', (_ref4 = {}, _defineProperty$2(_ref4, 'bg-' + this.footerBgVariant, Boolean(this.footerBgVariant)), _defineProperty$2(_ref4, 'text-' + this.footerTextVariant, Boolean(this.footerTextVariant)), _defineProperty$2(_ref4, 'border-' + this.footerBorderVariant, Boolean(this.footerBorderVariant)), _ref4), this.footerClass];\n    }\n  },\n  watch: {\n    visible: function visible(newVal, oldVal) {\n      if (newVal === oldVal) {\n        return;\n      }\n      this[newVal ? 'show' : 'hide']();\n    }\n  },\n  methods: {\n    // Public Methods\n    show: function show() {\n      if (this.is_visible) {\n        return;\n      }\n      var showEvt = new BvEvent('show', {\n        cancelable: true,\n        vueTarget: this,\n        target: this.$refs.modal,\n        relatedTarget: null\n      });\n      this.emitEvent(showEvt);\n      if (showEvt.defaultPrevented || this.is_visible) {\n        // Don't show if canceled\n        return;\n      }\n      if (hasClass(document.body, 'modal-open')) {\n        // If another modal is already open, wait for it to close\n        this.$root.$once('bv::modal::hidden', this.doShow);\n      } else {\n        // Show the modal\n        this.doShow();\n      }\n    },\n    hide: function hide(trigger) {\n      if (!this.is_visible) {\n        return;\n      }\n      var hideEvt = new BvEvent('hide', {\n        cancelable: true,\n        vueTarget: this,\n        target: this.$refs.modal,\n        // this could be the trigger element/component reference\n        relatedTarget: null,\n        isOK: trigger || null,\n        trigger: trigger || null,\n        cancel: function cancel() {\n          // Backwards compatibility\n          warn('b-modal: evt.cancel() is deprecated. Please use evt.preventDefault().');\n          this.preventDefault();\n        }\n      });\n      if (trigger === 'ok') {\n        this.$emit('ok', hideEvt);\n      } else if (trigger === 'cancel') {\n        this.$emit('cancel', hideEvt);\n      }\n      this.emitEvent(hideEvt);\n      // Hide if not canceled\n      if (hideEvt.defaultPrevented || !this.is_visible) {\n        return;\n      }\n      // stop observing for content changes\n      if (this._observer) {\n        this._observer.disconnect();\n        this._observer = null;\n      }\n      this.is_visible = false;\n      this.$emit('change', false);\n    },\n\n    // Private method to finish showing modal\n    doShow: function doShow() {\n      var _this2 = this;\n\n      // Plce modal in DOM if lazy\n      this.is_hidden = false;\n      this.$nextTick(function () {\n        // We do this in nextTick to ensure the modal is in DOM first before we show it\n        _this2.is_visible = true;\n        _this2.$emit('change', true);\n        // Observe changes in modal content and adjust if necessary\n        _this2._observer = observeDOM(_this2.$refs.content, _this2.adjustDialog.bind(_this2), OBSERVER_CONFIG);\n      });\n    },\n\n    // Transition Handlers\n    onBeforeEnter: function onBeforeEnter() {\n      this.is_transitioning = true;\n      this.checkScrollbar();\n      this.setScrollbar();\n      this.adjustDialog();\n      addClass(document.body, 'modal-open');\n      this.setResizeEvent(true);\n    },\n    onEnter: function onEnter() {\n      this.is_block = true;\n      this.$refs.modal.scrollTop = 0;\n    },\n    onAfterEnter: function onAfterEnter() {\n      var _this3 = this;\n\n      this.is_show = true;\n      this.is_transitioning = false;\n      this.$nextTick(function () {\n        _this3.focusFirst();\n        var shownEvt = new BvEvent('shown', {\n          cancelable: false,\n          vueTarget: _this3,\n          target: _this3.$refs.modal,\n          relatedTarget: null\n        });\n        _this3.emitEvent(shownEvt);\n      });\n    },\n    onBeforeLeave: function onBeforeLeave() {\n      this.is_transitioning = true;\n      this.setResizeEvent(false);\n    },\n    onLeave: function onLeave() {\n      // Remove the 'show' class\n      this.is_show = false;\n    },\n    onAfterLeave: function onAfterLeave() {\n      var _this4 = this;\n\n      this.is_block = false;\n      this.resetAdjustments();\n      this.resetScrollbar();\n      this.is_transitioning = false;\n      removeClass(document.body, 'modal-open');\n      this.$nextTick(function () {\n        _this4.is_hidden = _this4.lazy || false;\n        _this4.returnFocusTo();\n        var hiddenEvt = new BvEvent('hidden', {\n          cancelable: false,\n          vueTarget: _this4,\n          target: _this4.lazy ? null : _this4.$refs.modal,\n          relatedTarget: null\n        });\n        _this4.emitEvent(hiddenEvt);\n      });\n    },\n\n    // Event emitter\n    emitEvent: function emitEvent(bvEvt) {\n      var type = bvEvt.type;\n      this.$emit(type, bvEvt);\n      this.$root.$emit('bv::modal::' + type, bvEvt);\n    },\n\n    // UI Event Handlers\n    onClickOut: function onClickOut(evt) {\n      // If backdrop clicked, hide modal\n      if (this.is_visible && !this.noCloseOnBackdrop) {\n        this.hide('backdrop');\n      }\n    },\n    onEsc: function onEsc(evt) {\n      // If ESC pressed, hide modal\n      if (evt.keyCode === KeyCodes.ESC && this.is_visible && !this.noCloseOnEsc) {\n        this.hide('esc');\n      }\n    },\n    onFocusout: function onFocusout(evt) {\n      // If focus leaves modal, bring it back\n      // 'focusout' Event Listener bound on content\n      var content = this.$refs.content;\n      if (!this.noEnforceFocus && this.is_visible && content && !content.contains(evt.relatedTarget)) {\n        content.focus();\n      }\n    },\n\n    // Resize Listener\n    setResizeEvent: function setResizeEvent(on) {\n      var _this5 = this;\n['resize', 'orientationchange'].forEach(function (evtName) {\n        if (on) {\n          eventOn(window, evtName, _this5.adjustDialog);\n        } else {\n          eventOff(window, evtName, _this5.adjustDialog);\n        }\n      });\n    },\n\n    // Root Listener handlers\n    showHandler: function showHandler(id, triggerEl) {\n      if (id === this.id) {\n        this.return_focus = triggerEl || null;\n        this.show();\n      }\n    },\n    hideHandler: function hideHandler(id) {\n      if (id === this.id) {\n        this.hide();\n      }\n    },\n    modalListener: function modalListener(bvEvt) {\n      // If another modal opens, close this one\n      if (bvEvt.vueTarget !== this) {\n        this.hide();\n      }\n    },\n\n    // Focus control handlers\n    focusFirst: function focusFirst() {\n      // Don't try and focus if we are SSR\n      if (typeof document === 'undefined') {\n        return;\n      }\n      var content = this.$refs.content;\n      var modal = this.$refs.modal;\n      var activeElement = document.activeElement;\n      if (activeElement && content && content.contains(activeElement)) ; else if (content) {\n        if (modal) {\n          modal.scrollTop = 0;\n        }\n        // Focus the modal content wrapper\n        content.focus();\n      }\n    },\n    returnFocusTo: function returnFocusTo() {\n      // Prefer returnFocus prop over event specified return_focus value\n      var el = this.returnFocus || this.return_focus || null;\n      if (typeof el === 'string') {\n        // CSS Selector\n        el = select(el);\n      }\n      if (el) {\n        el = el.$el || el;\n        if (isVisible(el)) {\n          el.focus();\n        }\n      }\n    },\n\n    // Utility methods\n    getScrollbarWidth: function getScrollbarWidth() {\n      var scrollDiv = document.createElement('div');\n      scrollDiv.className = 'modal-scrollbar-measure';\n      document.body.appendChild(scrollDiv);\n      this.scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth;\n      document.body.removeChild(scrollDiv);\n    },\n    adjustDialog: function adjustDialog() {\n      if (!this.is_visible) {\n        return;\n      }\n      var modal = this.$refs.modal;\n      var isModalOverflowing = modal.scrollHeight > document.documentElement.clientHeight;\n      if (!this.isBodyOverflowing && isModalOverflowing) {\n        modal.style.paddingLeft = this.scrollbarWidth + 'px';\n      }\n      if (this.isBodyOverflowing && !isModalOverflowing) {\n        modal.style.paddingRight = this.scrollbarWidth + 'px';\n      }\n    },\n    resetAdjustments: function resetAdjustments() {\n      var modal = this.$refs.modal;\n      if (modal) {\n        modal.style.paddingLeft = '';\n        modal.style.paddingRight = '';\n      }\n    },\n    checkScrollbar: function checkScrollbar() {\n      var rect = getBCR(document.body);\n      this.isBodyOverflowing = rect.left + rect.right < window.innerWidth;\n    },\n    setScrollbar: function 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        var computedStyle = window.getComputedStyle;\n        var body = document.body;\n        var scrollbarWidth = this.scrollbarWidth;\n        // Adjust fixed content padding\n        selectAll(Selector.FIXED_CONTENT).forEach(function (el) {\n          var actualPadding = el.style.paddingRight;\n          var calculatedPadding = computedStyle(el).paddingRight || 0;\n          setAttr(el, 'data-padding-right', actualPadding);\n          el.style.paddingRight = parseFloat(calculatedPadding) + scrollbarWidth + 'px';\n        });\n        // Adjust sticky content margin\n        selectAll(Selector.STICKY_CONTENT).forEach(function (el) {\n          var actualMargin = el.style.marginRight;\n          var calculatedMargin = computedStyle(el).marginRight || 0;\n          setAttr(el, 'data-margin-right', actualMargin);\n          el.style.marginRight = parseFloat(calculatedMargin) - scrollbarWidth + 'px';\n        });\n        // Adjust navbar-toggler margin\n        selectAll(Selector.NAVBAR_TOGGLER).forEach(function (el) {\n          var actualMargin = el.style.marginRight;\n          var calculatedMargin = computedStyle(el).marginRight || 0;\n          setAttr(el, 'data-margin-right', actualMargin);\n          el.style.marginRight = parseFloat(calculatedMargin) + scrollbarWidth + 'px';\n        });\n        // Adjust body padding\n        var actualPadding = body.style.paddingRight;\n        var calculatedPadding = computedStyle(body).paddingRight;\n        setAttr(body, 'data-padding-right', actualPadding);\n        body.style.paddingRight = parseFloat(calculatedPadding) + scrollbarWidth + 'px';\n      }\n    },\n    resetScrollbar: function resetScrollbar() {\n      // Restore fixed content padding\n      selectAll(Selector.FIXED_CONTENT).forEach(function (el) {\n        if (hasAttr(el, 'data-padding-right')) {\n          el.style.paddingRight = getAttr(el, 'data-padding-right') || '';\n          removeAttr(el, 'data-padding-right');\n        }\n      });\n      // Restore sticky content and navbar-toggler margin\n      selectAll(Selector.STICKY_CONTENT + ', ' + Selector.NAVBAR_TOGGLER).forEach(function (el) {\n        if (hasAttr(el, 'data-margin-right')) {\n          el.style.marginRight = getAttr(el, 'data-margin-right') || '';\n          removeAttr(el, 'data-margin-right');\n        }\n      });\n      // Restore body padding\n      var body = document.body;\n      if (hasAttr(body, 'data-padding-right')) {\n        body.style.paddingRight = getAttr(body, 'data-padding-right') || '';\n        removeAttr(body, 'data-padding-right');\n      }\n    }\n  },\n  created: function created() {\n    // create non-reactive property\n    this._observer = null;\n  },\n  mounted: function mounted() {\n    // Measure scrollbar\n    this.getScrollbarWidth();\n    // Listen for events from others to either open or close ourselves\n    this.listenOnRoot('bv::show::modal', this.showHandler);\n    this.listenOnRoot('bv::hide::modal', this.hideHandler);\n    // Listen for bv:modal::show events, and close ourselves if the opening modal not us\n    this.listenOnRoot('bv::modal::show', this.modalListener);\n    // Initially show modal?\n    if (this.visible === true) {\n      this.show();\n    }\n  },\n  beforeDestroy: function beforeDestroy() {\n    // Ensure everything is back to normal\n    if (this._observer) {\n      this._observer.disconnect();\n      this._observer = null;\n    }\n    this.setResizeEvent(false);\n    // Re-adjust body/navbar/fixed padding/margins (if needed)\n    removeClass(document.body, 'modal-open');\n    this.resetAdjustments();\n    this.resetScrollbar();\n  }\n};\n\nvar script$2 = {\n  components: {\n    BModal: BModal\n  },\n  inheritAttrs: false,\n  props: {\n    modalId: {\n      type: String,\n      required: true\n    },\n    titleTag: {\n      type: String,\n      required: false,\n      default: 'h4'\n    }\n  }\n};\n\n/* script */\nvar __vue_script__$2 = script$2;\n\n/* template */\nvar __vue_render__$2 = function __vue_render__() {\n  var _vm = this;\n  var _h = _vm.$createElement;\n  var _c = _vm._self._c || _h;\n  return _c(\"b-modal\", _vm._g(_vm._b({ attrs: { id: _vm.modalId, \"title-tag\": _vm.titleTag, lazy: \"\" } }, \"b-modal\", _vm.$attrs, false), _vm.$listeners), [_vm._t(\"default\"), _vm._v(\" \"), _vm._t(\"modal-header\", null, { slot: \"modal-header\" }), _vm._v(\" \"), _vm._t(\"modal-title\", null, { slot: \"modal-title\" }), _vm._v(\" \"), _vm._t(\"modal-header-close\", null, { slot: \"modal-header-close\" }), _vm._v(\" \"), _vm._t(\"modal-footer\", null, { slot: \"modal-footer\" }), _vm._v(\" \"), _vm._t(\"modal-ok\", null, { slot: \"modal-ok\" }), _vm._v(\" \"), _vm._t(\"modal-cancel\", null, { slot: \"modal-cancel\" })], 2);\n};\nvar __vue_staticRenderFns__$2 = [];\n__vue_render__$2._withStripped = true;\n\n/* style */\nvar __vue_inject_styles__$2 = undefined;\n/* scoped */\nvar __vue_scope_id__$2 = undefined;\n/* module identifier */\nvar __vue_module_identifier__$2 = undefined;\n/* functional template */\nvar __vue_is_functional_template__$2 = false;\n/* component normalizer */\nfunction __vue_normalize__$2(template, style, script, scope, functional, moduleIdentifier, createInjector, createInjectorSSR) {\n  var component = (typeof script === 'function' ? script.options : script) || {};\n\n  {\n    component.__file = \"/builds/gitlab-org/gitlab-ui/components/base/modal/modal.vue\";\n  }\n\n  if (!component.render) {\n    component.render = template.render;\n    component.staticRenderFns = template.staticRenderFns;\n    component._compiled = true;\n\n    if (functional) component.functional = true;\n  }\n\n  component._scopeId = scope;\n\n  return component;\n}\n/* style inject */\nfunction __vue_create_injector__$2() {\n  var head = document.head || document.getElementsByTagName('head')[0];\n  var styles = __vue_create_injector__$2.styles || (__vue_create_injector__$2.styles = {});\n  var isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\\\\b/.test(navigator.userAgent.toLowerCase());\n\n  return function addStyle(id, css) {\n    if (document.querySelector('style[data-vue-ssr-id~=\"' + id + '\"]')) return; // SSR styles are present.\n\n    var group = isOldIE ? css.media || 'default' : id;\n    var style = styles[group] || (styles[group] = { ids: [], parts: [], element: undefined });\n\n    if (!style.ids.includes(id)) {\n      var code = css.source;\n      var index = style.ids.length;\n\n      style.ids.push(id);\n\n      if (isOldIE) {\n        style.element = style.element || document.querySelector('style[data-group=' + group + ']');\n      }\n\n      if (!style.element) {\n        var el = style.element = document.createElement('style');\n        el.type = 'text/css';\n\n        if (css.media) el.setAttribute('media', css.media);\n        if (isOldIE) {\n          el.setAttribute('data-group', group);\n          el.setAttribute('data-next-index', '0');\n        }\n\n        head.appendChild(el);\n      }\n\n      if (isOldIE) {\n        index = parseInt(style.element.getAttribute('data-next-index'));\n        style.element.setAttribute('data-next-index', index + 1);\n      }\n\n      if (style.element.styleSheet) {\n        style.parts.push(code);\n        style.element.styleSheet.cssText = style.parts.filter(Boolean).join('\\n');\n      } else {\n        var textNode = document.createTextNode(code);\n        var nodes = style.element.childNodes;\n        if (nodes[index]) style.element.removeChild(nodes[index]);\n        if (nodes.length) style.element.insertBefore(textNode, nodes[index]);else style.element.appendChild(textNode);\n      }\n    }\n  };\n}\n/* style inject SSR */\n\nvar modal = __vue_normalize__$2({ render: __vue_render__$2, staticRenderFns: __vue_staticRenderFns__$2 }, __vue_inject_styles__$2, __vue_script__$2, __vue_scope_id__$2, __vue_is_functional_template__$2, __vue_module_identifier__$2, __vue_create_injector__$2, undefined);\n\n/**\n * @param {number} length\n * @return {Array}\n */\nvar range = (function (length) {\n  return Array.apply(null, { length: length });\n});\n\n/*\n * Comon props, computed, data, render function, and methods for b-pagination and b-pagination-nav\n */\n\n// Make an array of N to N+X\nfunction makePageArray(startNum, numPages) {\n  return range(numPages).map(function (value, index) {\n    return { number: index + startNum, className: null };\n  });\n}\n\n// Threshold of limit size when we start/stop showing ellipsis\nvar ELLIPSIS_THRESHOLD = 3;\n\n// Props object\nvar props$3 = {\n  disabled: {\n    type: Boolean,\n    default: false\n  },\n  value: {\n    type: Number,\n    default: 1\n  },\n  limit: {\n    type: Number,\n    default: 5\n  },\n  size: {\n    type: String,\n    default: 'md'\n  },\n  align: {\n    type: String,\n    default: 'left'\n  },\n  hideGotoEndButtons: {\n    type: Boolean,\n    default: false\n  },\n  ariaLabel: {\n    type: String,\n    default: 'Pagination'\n  },\n  labelFirstPage: {\n    type: String,\n    default: 'Goto first page'\n  },\n  firstText: {\n    type: String,\n    default: '&laquo;'\n  },\n  labelPrevPage: {\n    type: String,\n    default: 'Goto previous page'\n  },\n  prevText: {\n    type: String,\n    default: '&lsaquo;'\n  },\n  labelNextPage: {\n    type: String,\n    default: 'Goto next page'\n  },\n  nextText: {\n    type: String,\n    default: '&rsaquo;'\n  },\n  labelLastPage: {\n    type: String,\n    default: 'Goto last page'\n  },\n  lastText: {\n    type: String,\n    default: '&raquo;'\n  },\n  labelPage: {\n    type: String,\n    default: 'Goto page'\n  },\n  hideEllipsis: {\n    type: Boolean,\n    default: false\n  },\n  ellipsisText: {\n    type: String,\n    default: '&hellip;'\n  }\n};\n\nvar paginationMixin = {\n  components: { bLink: Link },\n  data: function data() {\n    return {\n      showFirstDots: false,\n      showLastDots: false,\n      currentPage: this.value\n    };\n  },\n\n  props: props$3,\n  render: function render(h) {\n    var _this = this;\n\n    var buttons = [];\n\n    // Factory function for prev/next/first/last buttons\n    var makeEndBtns = function makeEndBtns(linkTo, ariaLabel, btnText, pageTest) {\n      var button = void 0;\n      pageTest = pageTest || linkTo; // Page # to test against to disable\n      if (_this.disabled || _this.isActive(pageTest)) {\n        button = h('li', {\n          class: ['page-item', 'disabled'],\n          attrs: { role: 'none presentation', 'aria-hidden': 'true' }\n        }, [h('span', {\n          class: ['page-link'],\n          domProps: { innerHTML: btnText }\n        })]);\n      } else {\n        button = h('li', {\n          class: ['page-item'],\n          attrs: { role: 'none presentation' }\n        }, [h('b-link', {\n          class: ['page-link'],\n          props: _this.linkProps(linkTo),\n          attrs: {\n            role: 'menuitem',\n            tabindex: '-1',\n            'aria-label': ariaLabel,\n            'aria-controls': _this.ariaControls || null\n          },\n          on: {\n            click: function click(evt) {\n              _this.onClick(linkTo, evt);\n            },\n            keydown: function keydown(evt) {\n              // Links don't normally respond to SPACE, so we add that functionality\n              if (evt.keyCode === KeyCodes.SPACE) {\n                evt.preventDefault();\n                _this.onClick(linkTo, evt);\n              }\n            }\n          }\n        }, [h('span', {\n          attrs: { 'aria-hidden': 'true' },\n          domProps: { innerHTML: btnText }\n        })])]);\n      }\n      return button;\n    };\n\n    // Ellipsis factory\n    var makeEllipsis = function makeEllipsis() {\n      return h('li', {\n        class: ['page-item', 'disabled', 'd-none', 'd-sm-flex'],\n        attrs: { role: 'separator' }\n      }, [h('span', {\n        class: ['page-link'],\n        domProps: { innerHTML: _this.ellipsisText }\n      })]);\n    };\n\n    // Goto First Page button\n    buttons.push(this.hideGotoEndButtons ? h(false) : makeEndBtns(1, this.labelFirstPage, this.firstText));\n\n    // Goto Previous page button\n    buttons.push(makeEndBtns(this.currentPage - 1, this.labelPrevPage, this.prevText, 1));\n\n    // First Ellipsis Bookend\n    buttons.push(this.showFirstDots ? makeEllipsis() : h(false));\n\n    // Individual Page links\n    this.pageList.forEach(function (page) {\n      var inner = void 0;\n      var pageNum = _this.makePage(page.number);\n      if (_this.disabled) {\n        inner = h('span', {\n          class: ['page-link'],\n          domProps: { innerHTML: pageNum }\n        });\n      } else {\n        var active = _this.isActive(page.number);\n        inner = h('b-link', {\n          class: _this.pageLinkClasses(page),\n          props: _this.linkProps(page.number),\n          attrs: {\n            role: 'menuitemradio',\n            tabindex: active ? '0' : '-1',\n            'aria-controls': _this.ariaControls || null,\n            'aria-label': _this.labelPage + ' ' + page.number,\n            'aria-checked': active ? 'true' : 'false',\n            'aria-posinset': page.number,\n            'aria-setsize': _this.numberOfPages\n          },\n          domProps: { innerHTML: pageNum },\n          on: {\n            click: function click(evt) {\n              _this.onClick(page.number, evt);\n            },\n            keydown: function keydown(evt) {\n              if (evt.keyCode === KeyCodes.SPACE) {\n                evt.preventDefault();\n                _this.onClick(page.number, evt);\n              }\n            }\n          }\n        });\n      }\n      buttons.push(h('li', {\n        key: page.number,\n        class: _this.pageItemClasses(page),\n        attrs: { role: 'none presentation' }\n      }, [inner]));\n    });\n\n    // Last Ellipsis Bookend\n    buttons.push(this.showLastDots ? makeEllipsis() : h(false));\n\n    // Goto Next page button\n    buttons.push(makeEndBtns(this.currentPage + 1, this.labelNextPage, this.nextText, this.numberOfPages));\n\n    // Goto Last Page button\n    buttons.push(this.hideGotoEndButtons ? h(false) : makeEndBtns(this.numberOfPages, this.labelLastPage, this.lastText));\n\n    // Assemble the paginatiom buttons\n    var pagination = h('ul', {\n      ref: 'ul',\n      class: ['pagination', 'b-pagination', this.btnSize, this.alignment],\n      attrs: {\n        role: 'menubar',\n        'aria-disabled': this.disabled ? 'true' : 'false',\n        'aria-label': this.ariaLabel || null\n      },\n      on: {\n        keydown: function keydown(evt) {\n          var keyCode = evt.keyCode;\n          var shift = evt.shiftKey;\n          if (keyCode === KeyCodes.LEFT) {\n            evt.preventDefault();\n            shift ? _this.focusFirst() : _this.focusPrev();\n          } else if (keyCode === KeyCodes.RIGHT) {\n            evt.preventDefault();\n            shift ? _this.focusLast() : _this.focusNext();\n          }\n        }\n      }\n    }, buttons);\n\n    // if we are pagination-nav, wrap in '<nav>' wrapper\n    return this.isNav ? h('nav', {}, [pagination]) : pagination;\n  },\n\n  watch: {\n    currentPage: function currentPage(newPage, oldPage) {\n      if (newPage !== oldPage) {\n        this.$emit('input', newPage);\n      }\n    },\n    value: function value(newValue, oldValue) {\n      if (newValue !== oldValue) {\n        this.currentPage = newValue;\n      }\n    }\n  },\n  computed: {\n    btnSize: function btnSize() {\n      return this.size ? 'pagination-' + this.size : '';\n    },\n    alignment: function alignment() {\n      if (this.align === 'center') {\n        return 'justify-content-center';\n      } else if (this.align === 'end' || this.align === 'right') {\n        return 'justify-content-end';\n      }\n      return '';\n    },\n    pageList: function pageList() {\n      // Sanity checks\n      if (this.currentPage > this.numberOfPages) {\n        this.currentPage = this.numberOfPages;\n      } else if (this.currentPage < 1) {\n        this.currentPage = 1;\n      }\n      // - Hide first ellipsis marker\n      this.showFirstDots = false;\n      // - Hide last ellipsis marker\n      this.showLastDots = false;\n      var numLinks = this.limit;\n      var startNum = 1;\n      if (this.numberOfPages <= this.limit) {\n        // Special Case: Less pages available than the limit of displayed pages\n        numLinks = this.numberOfPages;\n      } else if (this.currentPage < this.limit - 1 && this.limit > ELLIPSIS_THRESHOLD) {\n        // We are near the beginning of the page list\n        if (!this.hideEllipsis) {\n          numLinks = this.limit - 1;\n          this.showLastDots = true;\n        }\n      } else if (this.numberOfPages - this.currentPage + 2 < this.limit && this.limit > ELLIPSIS_THRESHOLD) {\n        // We are near the end of the list\n        if (!this.hideEllipsis) {\n          this.showFirstDots = true;\n          numLinks = this.limit - 1;\n        }\n        startNum = this.numberOfPages - numLinks + 1;\n      } else {\n        // We are somewhere in the middle of the page list\n        if (this.limit > ELLIPSIS_THRESHOLD && !this.hideEllipsis) {\n          this.showFirstDots = true;\n          this.showLastDots = true;\n          numLinks = this.limit - 2;\n        }\n        startNum = this.currentPage - Math.floor(numLinks / 2);\n      }\n      // Sanity checks\n      if (startNum < 1) {\n        startNum = 1;\n      } else if (startNum > this.numberOfPages - numLinks) {\n        startNum = this.numberOfPages - numLinks + 1;\n      }\n      // Generate list of page numbers\n      var pages = makePageArray(startNum, numLinks);\n      // We limit to a total of 3 page buttons on small screens\n      // Ellipsis will also be hidden on small screens\n      if (pages.length > 3) {\n        var idx = this.currentPage - startNum;\n        if (idx === 0) {\n          // Keep leftmost 3 buttons visible\n          for (var i = 3; i < pages.length; i++) {\n            pages[i].className = 'd-none d-sm-flex';\n          }\n        } else if (idx === pages.length - 1) {\n          // Keep rightmost 3 buttons visible\n          for (var _i = 0; _i < pages.length - 3; _i++) {\n            pages[_i].className = 'd-none d-sm-flex';\n          }\n        } else {\n          // hide left button(s)\n          for (var _i2 = 0; _i2 < idx - 1; _i2++) {\n            pages[_i2].className = 'd-none d-sm-flex';\n          }\n          // hide right button(s)\n          for (var _i3 = pages.length - 1; _i3 > idx + 1; _i3--) {\n            pages[_i3].className = 'd-none d-sm-flex';\n          }\n        }\n      }\n      return pages;\n    }\n  },\n  methods: {\n    isActive: function isActive(pagenum) {\n      return pagenum === this.currentPage;\n    },\n    pageItemClasses: function pageItemClasses(page) {\n      return ['page-item', this.disabled ? 'disabled' : '', this.isActive(page.number) ? 'active' : '', page.className];\n    },\n    pageLinkClasses: function pageLinkClasses(page) {\n      return ['page-link', this.disabled ? 'disabled' : '',\n      // Interim workaround to get better focus styling of active button\n      // See https://github.com/twbs/bootstrap/issues/24838\n      this.isActive(page.number) ? 'btn-primary' : ''];\n    },\n    getButtons: function getButtons() {\n      // Return only buttons that are visible\n      return selectAll('a.page-link', this.$el).filter(function (btn) {\n        return isVisible(btn);\n      });\n    },\n    setBtnFocus: function setBtnFocus(btn) {\n      this.$nextTick(function () {\n        btn.focus();\n      });\n    },\n    focusCurrent: function focusCurrent() {\n      var _this2 = this;\n\n      var btn = this.getButtons().find(function (el) {\n        return parseInt(getAttr(el, 'aria-posinset'), 10) === _this2.currentPage;\n      });\n      if (btn && btn.focus) {\n        this.setBtnFocus(btn);\n      } else {\n        // Fallback if current page is not in button list\n        this.focusFirst();\n      }\n    },\n    focusFirst: function focusFirst() {\n      var btn = this.getButtons().find(function (el) {\n        return !isDisabled(el);\n      });\n      if (btn && btn.focus && btn !== document.activeElement) {\n        this.setBtnFocus(btn);\n      }\n    },\n    focusLast: function focusLast() {\n      var btn = this.getButtons().reverse().find(function (el) {\n        return !isDisabled(el);\n      });\n      if (btn && btn.focus && btn !== document.activeElement) {\n        this.setBtnFocus(btn);\n      }\n    },\n    focusPrev: function focusPrev() {\n      var buttons = this.getButtons();\n      var idx = buttons.indexOf(document.activeElement);\n      if (idx > 0 && !isDisabled(buttons[idx - 1]) && buttons[idx - 1].focus) {\n        this.setBtnFocus(buttons[idx - 1]);\n      }\n    },\n    focusNext: function focusNext() {\n      var buttons = this.getButtons();\n      var idx = buttons.indexOf(document.activeElement);\n      var cnt = buttons.length - 1;\n      if (idx < cnt && !isDisabled(buttons[idx + 1]) && buttons[idx + 1].focus) {\n        this.setBtnFocus(buttons[idx + 1]);\n      }\n    }\n  }\n};\n\nvar props$4 = {\n  perPage: {\n    type: Number,\n    default: 20\n  },\n  totalRows: {\n    type: Number,\n    default: 20\n  },\n  ariaControls: {\n    type: String,\n    default: null\n  }\n\n  // Our render function is brought in from the pagination mixin\n};var BPagination = {\n  mixins: [paginationMixin],\n  props: props$4,\n  computed: {\n    numberOfPages: function numberOfPages() {\n      var result = Math.ceil(this.totalRows / this.perPage);\n      return result < 1 ? 1 : result;\n    }\n  },\n  methods: {\n    // These methods are used by the render function\n    onClick: function onClick(num, evt) {\n      var _this = this;\n\n      // Handle edge cases where number of pages has changed (i.e. if perPage changes)\n      if (num > this.numberOfPages) {\n        num = this.numberOfPages;\n      } else if (num < 1) {\n        num = 1;\n      }\n      this.currentPage = num;\n      this.$nextTick(function () {\n        // Keep the current button focused if possible\n        var target = evt.target;\n        if (isVisible(target) && _this.$el.contains(target) && target.focus) {\n          target.focus();\n        } else {\n          _this.focusCurrent();\n        }\n      });\n      this.$emit('change', this.currentPage);\n    },\n    makePage: function makePage(pagenum) {\n      return pagenum;\n    },\n    linkProps: function linkProps(pagenum) {\n      return { href: '#' };\n    }\n  }\n};\n\nvar breakpoints = {\n  xl: 1200,\n  lg: 992,\n  md: 768,\n  sm: 576,\n  xs: 0\n};\n\nvar BreakpointInstance = {\n  windowWidth: function windowWidth() {\n    return window.innerWidth;\n  },\n  getBreakpointSize: function getBreakpointSize() {\n    var windowWidth = this.windowWidth();\n\n    var breakpoint = Object.keys(breakpoints).find(function (key) {\n      return windowWidth > breakpoints[key];\n    });\n\n    return breakpoint;\n  }\n};\n\nvar script$3 = {\n  components: {\n    BPagination: BPagination\n  },\n  props: {\n    change: {\n      type: Function,\n      required: true\n    },\n    page: {\n      type: Number,\n      required: true\n    },\n    perPage: {\n      type: Number,\n      required: true\n    },\n    totalItems: {\n      type: Number,\n      required: true\n    },\n    limits: {\n      type: Object,\n      require: false,\n      default: function _default() {\n        return {\n          xs: 1,\n          sm: 3,\n          md: 5,\n          default: 11\n        };\n      },\n      validator: function validator(value) {\n        var missingSizes = Object.keys(breakpoints).filter(function (size) {\n          return !value.hasOwnProperty(size);\n        }).length;\n\n        return missingSizes === 0 ? true : value.hasOwnProperty('default');\n      }\n    }\n  },\n  data: function data() {\n    return {\n      breakpoint: BreakpointInstance.getBreakpointSize(),\n      currentPage: this.page\n    };\n  },\n\n  computed: {\n    hideGotoEndButtons: function hideGotoEndButtons() {\n      var totalPages = Math.ceil(this.totalItems / this.perPage);\n\n      return totalPages < this.paginationLimit;\n    },\n    paginationLimit: function paginationLimit() {\n      return this.limits[this.breakpoint] || this.limits.default;\n    },\n    shouldRenderPagination: function shouldRenderPagination() {\n      return this.page && this.totalItems > this.perPage;\n    }\n  },\n  watch: {\n    currentPage: 'change',\n    page: function page(pageNumber) {\n      this.currentPage = pageNumber;\n    }\n  },\n  created: function created() {\n    window.addEventListener('resize', this.setBreakpoint);\n  },\n  beforeDestroy: function beforeDestroy() {\n    window.removeEventListener('resize', this.setBreakpoint);\n  },\n\n  methods: {\n    setBreakpoint: function setBreakpoint() {\n      this.breakpoint = BreakpointInstance.getBreakpointSize();\n    }\n  }\n};\n\n/* script */\nvar __vue_script__$3 = script$3;\n\n/* template */\nvar __vue_render__$3 = function __vue_render__() {\n  var _vm = this;\n  var _h = _vm.$createElement;\n  var _c = _vm._self._c || _h;\n  return _vm.shouldRenderPagination ? _c(\"b-pagination\", _vm._b({\n    staticClass: \"gl-pagination\",\n    attrs: {\n      limit: _vm.paginationLimit,\n      \"per-page\": _vm.perPage,\n      \"total-rows\": _vm.totalItems,\n      \"hide-goto-end-buttons\": _vm.hideGotoEndButtons\n    },\n    model: {\n      value: _vm.currentPage,\n      callback: function callback($$v) {\n        _vm.currentPage = $$v;\n      },\n      expression: \"currentPage\"\n    }\n  }, \"b-pagination\", _vm.$attrs, false)) : _vm._e();\n};\nvar __vue_staticRenderFns__$3 = [];\n__vue_render__$3._withStripped = true;\n\n/* style */\nvar __vue_inject_styles__$3 = undefined;\n/* scoped */\nvar __vue_scope_id__$3 = undefined;\n/* module identifier */\nvar __vue_module_identifier__$3 = undefined;\n/* functional template */\nvar __vue_is_functional_template__$3 = false;\n/* component normalizer */\nfunction __vue_normalize__$3(template, style, script, scope, functional, moduleIdentifier, createInjector, createInjectorSSR) {\n  var component = (typeof script === 'function' ? script.options : script) || {};\n\n  {\n    component.__file = \"/builds/gitlab-org/gitlab-ui/components/base/pagination/pagination.vue\";\n  }\n\n  if (!component.render) {\n    component.render = template.render;\n    component.staticRenderFns = template.staticRenderFns;\n    component._compiled = true;\n\n    if (functional) component.functional = true;\n  }\n\n  component._scopeId = scope;\n\n  return component;\n}\n/* style inject */\nfunction __vue_create_injector__$3() {\n  var head = document.head || document.getElementsByTagName('head')[0];\n  var styles = __vue_create_injector__$3.styles || (__vue_create_injector__$3.styles = {});\n  var isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\\\\b/.test(navigator.userAgent.toLowerCase());\n\n  return function addStyle(id, css) {\n    if (document.querySelector('style[data-vue-ssr-id~=\"' + id + '\"]')) return; // SSR styles are present.\n\n    var group = isOldIE ? css.media || 'default' : id;\n    var style = styles[group] || (styles[group] = { ids: [], parts: [], element: undefined });\n\n    if (!style.ids.includes(id)) {\n      var code = css.source;\n      var index = style.ids.length;\n\n      style.ids.push(id);\n\n      if (isOldIE) {\n        style.element = style.element || document.querySelector('style[data-group=' + group + ']');\n      }\n\n      if (!style.element) {\n        var el = style.element = document.createElement('style');\n        el.type = 'text/css';\n\n        if (css.media) el.setAttribute('media', css.media);\n        if (isOldIE) {\n          el.setAttribute('data-group', group);\n          el.setAttribute('data-next-index', '0');\n        }\n\n        head.appendChild(el);\n      }\n\n      if (isOldIE) {\n        index = parseInt(style.element.getAttribute('data-next-index'));\n        style.element.setAttribute('data-next-index', index + 1);\n      }\n\n      if (style.element.styleSheet) {\n        style.parts.push(code);\n        style.element.styleSheet.cssText = style.parts.filter(Boolean).join('\\n');\n      } else {\n        var textNode = document.createTextNode(code);\n        var nodes = style.element.childNodes;\n        if (nodes[index]) style.element.removeChild(nodes[index]);\n        if (nodes.length) style.element.insertBefore(textNode, nodes[index]);else style.element.appendChild(textNode);\n      }\n    }\n  };\n}\n/* style inject SSR */\n\nvar pagination = __vue_normalize__$3({ render: __vue_render__$3, staticRenderFns: __vue_staticRenderFns__$3 }, __vue_inject_styles__$3, __vue_script__$3, __vue_scope_id__$3, __vue_is_functional_template__$3, __vue_module_identifier__$3, __vue_create_injector__$3, undefined);\n\nvar bProgressBar = {\n  render: function render(h) {\n    var childNodes = h(false);\n    if (this.$slots.default) {\n      childNodes = this.$slots.default;\n    } else if (this.label) {\n      childNodes = h('span', { domProps: { innerHTML: this.label } });\n    } else if (this.computedShowProgress) {\n      childNodes = this.progress.toFixed(this.computedPrecision);\n    } else if (this.computedShowValue) {\n      childNodes = this.value.toFixed(this.computedPrecision);\n    }\n    return h('div', {\n      class: this.progressBarClasses,\n      style: this.progressBarStyles,\n      attrs: {\n        role: 'progressbar',\n        'aria-valuemin': '0',\n        'aria-valuemax': this.computedMax.toString(),\n        'aria-valuenow': this.value.toFixed(this.computedPrecision)\n      }\n    }, [childNodes]);\n  },\n\n  computed: {\n    progressBarClasses: function progressBarClasses() {\n      return ['progress-bar', this.computedVariant ? 'bg-' + this.computedVariant : '', this.computedStriped || this.computedAnimated ? 'progress-bar-striped' : '', this.computedAnimated ? 'progress-bar-animated' : ''];\n    },\n    progressBarStyles: function progressBarStyles() {\n      return {\n        width: 100 * (this.value / this.computedMax) + '%'\n      };\n    },\n    progress: function progress() {\n      var p = Math.pow(10, this.computedPrecision);\n      return Math.round(100 * p * this.value / this.computedMax) / p;\n    },\n    computedMax: function computedMax() {\n      // Prefer our max over parent setting\n      return typeof this.max === 'number' ? this.max : this.$parent.max || 100;\n    },\n    computedVariant: function computedVariant() {\n      // Prefer our variant over parent setting\n      return this.variant || this.$parent.variant;\n    },\n    computedPrecision: function computedPrecision() {\n      // Prefer our precision over parent setting\n      return typeof this.precision === 'number' ? this.precision : this.$parent.precision || 0;\n    },\n    computedStriped: function computedStriped() {\n      // Prefer our striped over parent setting\n      return typeof this.striped === 'boolean' ? this.striped : this.$parent.striped || false;\n    },\n    computedAnimated: function computedAnimated() {\n      // Prefer our animated over parent setting\n      return typeof this.animated === 'boolean' ? this.animated : this.$parent.animated || false;\n    },\n    computedShowProgress: function computedShowProgress() {\n      // Prefer our showProgress over parent setting\n      return typeof this.showProgress === 'boolean' ? this.showProgress : this.$parent.showProgress || false;\n    },\n    computedShowValue: function computedShowValue() {\n      // Prefer our showValue over parent setting\n      return typeof this.showValue === 'boolean' ? this.showValue : this.$parent.showValue || false;\n    }\n  },\n  props: {\n    value: {\n      type: Number,\n      default: 0\n    },\n    label: {\n      type: String,\n      default: null\n    },\n    // $parent prop values take precedence over the following props\n    // Which is why they are defaulted to null\n    max: {\n      type: Number,\n      default: null\n    },\n    precision: {\n      type: Number,\n      default: null\n    },\n    variant: {\n      type: String,\n      default: null\n    },\n    striped: {\n      type: Boolean,\n      default: null\n    },\n    animated: {\n      type: Boolean,\n      default: null\n    },\n    showProgress: {\n      type: Boolean,\n      default: null\n    },\n    showValue: {\n      type: Boolean,\n      default: null\n    }\n  }\n};\n\nvar bProgress = {\n  components: { bProgressBar: bProgressBar },\n  render: function render(h) {\n    var childNodes = this.$slots.default;\n    if (!childNodes) {\n      childNodes = h('b-progress-bar', {\n        props: {\n          value: this.value,\n          max: this.max,\n          precision: this.precision,\n          variant: this.variant,\n          animated: this.animated,\n          striped: this.striped,\n          showProgress: this.showProgress,\n          showValue: this.showValue\n        }\n      });\n    }\n    return h('div', { class: ['progress'], style: this.progressHeight }, [childNodes]);\n  },\n\n  props: {\n    // These props can be inherited via the child b-progress-bar(s)\n    variant: {\n      type: String,\n      default: null\n    },\n    striped: {\n      type: Boolean,\n      default: false\n    },\n    animated: {\n      type: Boolean,\n      default: false\n    },\n    height: {\n      type: String,\n      default: null\n    },\n    precision: {\n      type: Number,\n      default: 0\n    },\n    showProgress: {\n      type: Boolean,\n      default: false\n    },\n    showValue: {\n      type: Boolean,\n      default: false\n    },\n    max: {\n      type: Number,\n      default: 100\n    },\n    // This prop is not inherited by child b-progress-bar(s)\n    value: {\n      type: Number,\n      default: 0\n    }\n  },\n  computed: {\n    progressHeight: function progressHeight() {\n      return { height: this.height || null };\n    }\n  }\n};\n\nvar script$4 = {\n  components: {\n    bProgress: bProgress\n  }\n};\n\n/* script */\nvar __vue_script__$4 = script$4;\n\n/* template */\nvar __vue_render__$4 = function __vue_render__() {\n  var _vm = this;\n  var _h = _vm.$createElement;\n  var _c = _vm._self._c || _h;\n  return _c(\"b-progress\", _vm._b({}, \"b-progress\", _vm.$attrs, false));\n};\nvar __vue_staticRenderFns__$4 = [];\n__vue_render__$4._withStripped = true;\n\n/* style */\nvar __vue_inject_styles__$4 = undefined;\n/* scoped */\nvar __vue_scope_id__$4 = undefined;\n/* module identifier */\nvar __vue_module_identifier__$4 = undefined;\n/* functional template */\nvar __vue_is_functional_template__$4 = false;\n/* component normalizer */\nfunction __vue_normalize__$4(template, style, script, scope, functional, moduleIdentifier, createInjector, createInjectorSSR) {\n  var component = (typeof script === 'function' ? script.options : script) || {};\n\n  {\n    component.__file = \"/builds/gitlab-org/gitlab-ui/components/base/progress_bar/progress_bar.vue\";\n  }\n\n  if (!component.render) {\n    component.render = template.render;\n    component.staticRenderFns = template.staticRenderFns;\n    component._compiled = true;\n\n    if (functional) component.functional = true;\n  }\n\n  component._scopeId = scope;\n\n  return component;\n}\n/* style inject */\nfunction __vue_create_injector__$4() {\n  var head = document.head || document.getElementsByTagName('head')[0];\n  var styles = __vue_create_injector__$4.styles || (__vue_create_injector__$4.styles = {});\n  var isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\\\\b/.test(navigator.userAgent.toLowerCase());\n\n  return function addStyle(id, css) {\n    if (document.querySelector('style[data-vue-ssr-id~=\"' + id + '\"]')) return; // SSR styles are present.\n\n    var group = isOldIE ? css.media || 'default' : id;\n    var style = styles[group] || (styles[group] = { ids: [], parts: [], element: undefined });\n\n    if (!style.ids.includes(id)) {\n      var code = css.source;\n      var index = style.ids.length;\n\n      style.ids.push(id);\n\n      if (isOldIE) {\n        style.element = style.element || document.querySelector('style[data-group=' + group + ']');\n      }\n\n      if (!style.element) {\n        var el = style.element = document.createElement('style');\n        el.type = 'text/css';\n\n        if (css.media) el.setAttribute('media', css.media);\n        if (isOldIE) {\n          el.setAttribute('data-group', group);\n          el.setAttribute('data-next-index', '0');\n        }\n\n        head.appendChild(el);\n      }\n\n      if (isOldIE) {\n        index = parseInt(style.element.getAttribute('data-next-index'));\n        style.element.setAttribute('data-next-index', index + 1);\n      }\n\n      if (style.element.styleSheet) {\n        style.parts.push(code);\n        style.element.styleSheet.cssText = style.parts.filter(Boolean).join('\\n');\n      } else {\n        var textNode = document.createTextNode(code);\n        var nodes = style.element.childNodes;\n        if (nodes[index]) style.element.removeChild(nodes[index]);\n        if (nodes.length) style.element.insertBefore(textNode, nodes[index]);else style.element.appendChild(textNode);\n      }\n    }\n  };\n}\n/* style inject SSR */\n\nvar progress_bar = __vue_normalize__$4({ render: __vue_render__$4, staticRenderFns: __vue_staticRenderFns__$4 }, __vue_inject_styles__$4, __vue_script__$4, __vue_scope_id__$4, __vue_is_functional_template__$4, __vue_module_identifier__$4, __vue_create_injector__$4, undefined);\n\nvar script$5 = {\n  props: {\n    lines: {\n      type: Number,\n      required: false,\n      default: 3,\n      validator: function validator(value) {\n        return value > 0 && value < 4;\n      }\n    }\n  },\n  computed: {\n    lineClasses: function lineClasses() {\n      return new Array(this.lines).fill().map(function (_, i) {\n        return \"skeleton-line-\" + (i + 1);\n      });\n    }\n  }\n};\n\n/* script */\nvar __vue_script__$5 = script$5;\n\n/* template */\nvar __vue_render__$5 = function __vue_render__() {\n  var _vm = this;\n  var _h = _vm.$createElement;\n  var _c = _vm._self._c || _h;\n  return _c(\"div\", { staticClass: \"animation-container\" }, _vm._l(_vm.lineClasses, function (css, index) {\n    return _c(\"div\", { key: index, class: css });\n  }));\n};\nvar __vue_staticRenderFns__$5 = [];\n__vue_render__$5._withStripped = true;\n\n/* style */\nvar __vue_inject_styles__$5 = undefined;\n/* scoped */\nvar __vue_scope_id__$5 = undefined;\n/* module identifier */\nvar __vue_module_identifier__$5 = undefined;\n/* functional template */\nvar __vue_is_functional_template__$5 = false;\n/* component normalizer */\nfunction __vue_normalize__$5(template, style, script, scope, functional, moduleIdentifier, createInjector, createInjectorSSR) {\n  var component = (typeof script === 'function' ? script.options : script) || {};\n\n  {\n    component.__file = \"/builds/gitlab-org/gitlab-ui/components/base/skeleton_loading/skeleton_loading.vue\";\n  }\n\n  if (!component.render) {\n    component.render = template.render;\n    component.staticRenderFns = template.staticRenderFns;\n    component._compiled = true;\n\n    if (functional) component.functional = true;\n  }\n\n  component._scopeId = scope;\n\n  return component;\n}\n/* style inject */\nfunction __vue_create_injector__$5() {\n  var head = document.head || document.getElementsByTagName('head')[0];\n  var styles = __vue_create_injector__$5.styles || (__vue_create_injector__$5.styles = {});\n  var isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\\\\b/.test(navigator.userAgent.toLowerCase());\n\n  return function addStyle(id, css) {\n    if (document.querySelector('style[data-vue-ssr-id~=\"' + id + '\"]')) return; // SSR styles are present.\n\n    var group = isOldIE ? css.media || 'default' : id;\n    var style = styles[group] || (styles[group] = { ids: [], parts: [], element: undefined });\n\n    if (!style.ids.includes(id)) {\n      var code = css.source;\n      var index = style.ids.length;\n\n      style.ids.push(id);\n\n      if (isOldIE) {\n        style.element = style.element || document.querySelector('style[data-group=' + group + ']');\n      }\n\n      if (!style.element) {\n        var el = style.element = document.createElement('style');\n        el.type = 'text/css';\n\n        if (css.media) el.setAttribute('media', css.media);\n        if (isOldIE) {\n          el.setAttribute('data-group', group);\n          el.setAttribute('data-next-index', '0');\n        }\n\n        head.appendChild(el);\n      }\n\n      if (isOldIE) {\n        index = parseInt(style.element.getAttribute('data-next-index'));\n        style.element.setAttribute('data-next-index', index + 1);\n      }\n\n      if (style.element.styleSheet) {\n        style.parts.push(code);\n        style.element.styleSheet.cssText = style.parts.filter(Boolean).join('\\n');\n      } else {\n        var textNode = document.createTextNode(code);\n        var nodes = style.element.childNodes;\n        if (nodes[index]) style.element.removeChild(nodes[index]);\n        if (nodes.length) style.element.insertBefore(textNode, nodes[index]);else style.element.appendChild(textNode);\n      }\n    }\n  };\n}\n/* style inject SSR */\n\nvar skeleton_loading = __vue_normalize__$5({ render: __vue_render__$5, staticRenderFns: __vue_staticRenderFns__$5 }, __vue_inject_styles__$5, __vue_script__$5, __vue_scope_id__$5, __vue_is_functional_template__$5, __vue_module_identifier__$5, __vue_create_injector__$5, undefined);\n\nvar script$6 = {\n  components: {\n    BButton: BButton\n  },\n  mixins: [RelMixin]\n};\n\n/* script */\nvar __vue_script__$6 = script$6;\n\n/* template */\nvar __vue_render__$6 = function __vue_render__() {\n  var _vm = this;\n  var _h = _vm.$createElement;\n  var _c = _vm._self._c || _h;\n  return _c(\"b-button\", _vm._g(_vm._b({ attrs: { rel: _vm.relType, target: _vm.target } }, \"b-button\", _vm.$attrs, false), _vm.$listeners), [_vm._t(\"default\")], 2);\n};\nvar __vue_staticRenderFns__$6 = [];\n__vue_render__$6._withStripped = true;\n\n/* style */\nvar __vue_inject_styles__$6 = undefined;\n/* scoped */\nvar __vue_scope_id__$6 = undefined;\n/* module identifier */\nvar __vue_module_identifier__$6 = undefined;\n/* functional template */\nvar __vue_is_functional_template__$6 = false;\n/* component normalizer */\nfunction __vue_normalize__$6(template, style, script, scope, functional, moduleIdentifier, createInjector, createInjectorSSR) {\n  var component = (typeof script === 'function' ? script.options : script) || {};\n\n  {\n    component.__file = \"/builds/gitlab-org/gitlab-ui/components/base/button/button.vue\";\n  }\n\n  if (!component.render) {\n    component.render = template.render;\n    component.staticRenderFns = template.staticRenderFns;\n    component._compiled = true;\n\n    if (functional) component.functional = true;\n  }\n\n  component._scopeId = scope;\n\n  return component;\n}\n/* style inject */\nfunction __vue_create_injector__$6() {\n  var head = document.head || document.getElementsByTagName('head')[0];\n  var styles = __vue_create_injector__$6.styles || (__vue_create_injector__$6.styles = {});\n  var isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\\\\b/.test(navigator.userAgent.toLowerCase());\n\n  return function addStyle(id, css) {\n    if (document.querySelector('style[data-vue-ssr-id~=\"' + id + '\"]')) return; // SSR styles are present.\n\n    var group = isOldIE ? css.media || 'default' : id;\n    var style = styles[group] || (styles[group] = { ids: [], parts: [], element: undefined });\n\n    if (!style.ids.includes(id)) {\n      var code = css.source;\n      var index = style.ids.length;\n\n      style.ids.push(id);\n\n      if (isOldIE) {\n        style.element = style.element || document.querySelector('style[data-group=' + group + ']');\n      }\n\n      if (!style.element) {\n        var el = style.element = document.createElement('style');\n        el.type = 'text/css';\n\n        if (css.media) el.setAttribute('media', css.media);\n        if (isOldIE) {\n          el.setAttribute('data-group', group);\n          el.setAttribute('data-next-index', '0');\n        }\n\n        head.appendChild(el);\n      }\n\n      if (isOldIE) {\n        index = parseInt(style.element.getAttribute('data-next-index'));\n        style.element.setAttribute('data-next-index', index + 1);\n      }\n\n      if (style.element.styleSheet) {\n        style.parts.push(code);\n        style.element.styleSheet.cssText = style.parts.filter(Boolean).join('\\n');\n      } else {\n        var textNode = document.createTextNode(code);\n        var nodes = style.element.childNodes;\n        if (nodes[index]) style.element.removeChild(nodes[index]);\n        if (nodes.length) style.element.insertBefore(textNode, nodes[index]);else style.element.appendChild(textNode);\n      }\n    }\n  };\n}\n/* style inject SSR */\n\nvar button = __vue_normalize__$6({ render: __vue_render__$6, staticRenderFns: __vue_staticRenderFns__$6 }, __vue_inject_styles__$6, __vue_script__$6, __vue_scope_id__$6, __vue_is_functional_template__$6, __vue_module_identifier__$6, __vue_create_injector__$6, undefined);\n\n/**!\n * @fileOverview Kickass library to create and place poppers near their reference elements.\n * @version 1.14.3\n * @license\n * Copyright (c) 2016 Federico Zivolo and contributors\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined';\n\nvar longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];\nvar timeoutDuration = 0;\nfor (var i = 0; i < longerTimeoutBrowsers.length; i += 1) {\n  if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {\n    timeoutDuration = 1;\n    break;\n  }\n}\n\nfunction microtaskDebounce(fn) {\n  var called = false;\n  return function () {\n    if (called) {\n      return;\n    }\n    called = true;\n    window.Promise.resolve().then(function () {\n      called = false;\n      fn();\n    });\n  };\n}\n\nfunction taskDebounce(fn) {\n  var scheduled = false;\n  return function () {\n    if (!scheduled) {\n      scheduled = true;\n      setTimeout(function () {\n        scheduled = false;\n        fn();\n      }, timeoutDuration);\n    }\n  };\n}\n\nvar supportsMicroTasks = isBrowser && window.Promise;\n\n/**\n* Create a debounced version of a method, that's asynchronously deferred\n* but called in the minimum time possible.\n*\n* @method\n* @memberof Popper.Utils\n* @argument {Function} fn\n* @returns {Function}\n*/\nvar debounce = supportsMicroTasks ? microtaskDebounce : taskDebounce;\n\n/**\n * Check if the given variable is a function\n * @method\n * @memberof Popper.Utils\n * @argument {Any} functionToCheck - variable to check\n * @returns {Boolean} answer to: is a function?\n */\nfunction isFunction(functionToCheck) {\n  var getType = {};\n  return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]';\n}\n\n/**\n * Get CSS computed property of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Eement} element\n * @argument {String} property\n */\nfunction getStyleComputedProperty(element, property) {\n  if (element.nodeType !== 1) {\n    return [];\n  }\n  // NOTE: 1 DOM access here\n  var css = getComputedStyle(element, null);\n  return property ? css[property] : css;\n}\n\n/**\n * Returns the parentNode or the host of the element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} parent\n */\nfunction getParentNode(element) {\n  if (element.nodeName === 'HTML') {\n    return element;\n  }\n  return element.parentNode || element.host;\n}\n\n/**\n * Returns the scrolling parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} scroll parent\n */\nfunction getScrollParent(element) {\n  // Return body, `getScroll` will take care to get the correct `scrollTop` from it\n  if (!element) {\n    return document.body;\n  }\n\n  switch (element.nodeName) {\n    case 'HTML':\n    case 'BODY':\n      return element.ownerDocument.body;\n    case '#document':\n      return element.body;\n  }\n\n  // Firefox want us to check `-x` and `-y` variations as well\n\n  var _getStyleComputedProp = getStyleComputedProperty(element),\n      overflow = _getStyleComputedProp.overflow,\n      overflowX = _getStyleComputedProp.overflowX,\n      overflowY = _getStyleComputedProp.overflowY;\n\n  if (/(auto|scroll|overlay)/.test(overflow + overflowY + overflowX)) {\n    return element;\n  }\n\n  return getScrollParent(getParentNode(element));\n}\n\nvar isIE11 = isBrowser && !!(window.MSInputMethodContext && document.documentMode);\nvar isIE10 = isBrowser && /MSIE 10/.test(navigator.userAgent);\n\n/**\n * Determines if the browser is Internet Explorer\n * @method\n * @memberof Popper.Utils\n * @param {Number} version to check\n * @returns {Boolean} isIE\n */\nfunction isIE(version) {\n  if (version === 11) {\n    return isIE11;\n  }\n  if (version === 10) {\n    return isIE10;\n  }\n  return isIE11 || isIE10;\n}\n\n/**\n * Returns the offset parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} offset parent\n */\nfunction getOffsetParent(element) {\n  if (!element) {\n    return document.documentElement;\n  }\n\n  var noOffsetParent = isIE(10) ? document.body : null;\n\n  // NOTE: 1 DOM access here\n  var offsetParent = element.offsetParent;\n  // Skip hidden elements which don't have an offsetParent\n  while (offsetParent === noOffsetParent && element.nextElementSibling) {\n    offsetParent = (element = element.nextElementSibling).offsetParent;\n  }\n\n  var nodeName = offsetParent && offsetParent.nodeName;\n\n  if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {\n    return element ? element.ownerDocument.documentElement : document.documentElement;\n  }\n\n  // .offsetParent will return the closest 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 document.documentElement;\n  }\n\n  // Here we make sure to give as \"start\" the element that comes first in the DOM\n  var order = element1.compareDocumentPosition(element2) & Node.DOCUMENT_POSITION_FOLLOWING;\n  var start = order ? element1 : element2;\n  var end = order ? element2 : element1;\n\n  // Get common ancestor container\n  var range = document.createRange();\n  range.setStart(start, 0);\n  range.setEnd(end, 0);\n  var commonAncestorContainer = range.commonAncestorContainer;\n\n  // Both nodes are inside #document\n\n  if (element1 !== commonAncestorContainer && element2 !== commonAncestorContainer || start.contains(end)) {\n    if (isOffsetContainer(commonAncestorContainer)) {\n      return commonAncestorContainer;\n    }\n\n    return getOffsetParent(commonAncestorContainer);\n  }\n\n  // one of the nodes is inside shadowDOM, find which one\n  var element1root = getRoot(element1);\n  if (element1root.host) {\n    return findCommonOffsetParent(element1root.host, element2);\n  } else {\n    return findCommonOffsetParent(element1, getRoot(element2).host);\n  }\n}\n\n/**\n * Gets the scroll value of the given element in the given side (top and left)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {String} side `top` or `left`\n * @returns {number} amount of scrolled pixels\n */\nfunction getScroll(element) {\n  var side = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'top';\n\n  var upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';\n  var nodeName = element.nodeName;\n\n  if (nodeName === 'BODY' || nodeName === 'HTML') {\n    var html = element.ownerDocument.documentElement;\n    var scrollingElement = element.ownerDocument.scrollingElement || html;\n    return scrollingElement[upperSide];\n  }\n\n  return element[upperSide];\n}\n\n/*\n * Sum or subtract the element scroll values (left and top) from a given rect object\n * @method\n * @memberof Popper.Utils\n * @param {Object} rect - Rect object you want to change\n * @param {HTMLElement} element - The element from the function reads the scroll values\n * @param {Boolean} subtract - set to true if you want to subtract the scroll values\n * @return {Object} rect - The modifier rect object\n */\nfunction includeScroll(rect, element) {\n  var subtract = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n  var scrollTop = getScroll(element, 'top');\n  var scrollLeft = getScroll(element, 'left');\n  var modifier = subtract ? -1 : 1;\n  rect.top += scrollTop * modifier;\n  rect.bottom += scrollTop * modifier;\n  rect.left += scrollLeft * modifier;\n  rect.right += scrollLeft * modifier;\n  return rect;\n}\n\n/*\n * Helper to detect borders of a given element\n * @method\n * @memberof Popper.Utils\n * @param {CSSStyleDeclaration} styles\n * Result of `getStyleComputedProperty` on the given element\n * @param {String} axis - `x` or `y`\n * @return {number} borders - The borders size of the given axis\n */\n\nfunction getBordersSize(styles, axis) {\n  var sideA = axis === 'x' ? 'Left' : 'Top';\n  var sideB = sideA === 'Left' ? 'Right' : 'Bottom';\n\n  return parseFloat(styles['border' + sideA + 'Width'], 10) + parseFloat(styles['border' + sideB + 'Width'], 10);\n}\n\nfunction getSize(axis, body, html, computedStyle) {\n  return Math.max(body['offset' + axis], body['scroll' + axis], html['client' + axis], html['offset' + axis], html['scroll' + axis], isIE(10) ? html['offset' + axis] + computedStyle['margin' + (axis === 'Height' ? 'Top' : 'Left')] + computedStyle['margin' + (axis === 'Height' ? 'Bottom' : 'Right')] : 0);\n}\n\nfunction getWindowSizes() {\n  var body = document.body;\n  var html = document.documentElement;\n  var computedStyle = isIE(10) && getComputedStyle(html);\n\n  return {\n    height: getSize('Height', body, html, computedStyle),\n    width: getSize('Width', body, html, computedStyle)\n  };\n}\n\nvar classCallCheck = function (instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n};\n\nvar createClass = function () {\n  function defineProperties(target, props) {\n    for (var i = 0; i < props.length; i++) {\n      var descriptor = props[i];\n      descriptor.enumerable = descriptor.enumerable || false;\n      descriptor.configurable = true;\n      if (\"value\" in descriptor) descriptor.writable = true;\n      Object.defineProperty(target, descriptor.key, descriptor);\n    }\n  }\n\n  return function (Constructor, protoProps, staticProps) {\n    if (protoProps) defineProperties(Constructor.prototype, protoProps);\n    if (staticProps) defineProperties(Constructor, staticProps);\n    return Constructor;\n  };\n}();\n\n\n\n\n\nvar defineProperty$1 = function (obj, key, value) {\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n\n  return obj;\n};\n\nvar _extends = Object.assign || function (target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i];\n\n    for (var key in source) {\n      if (Object.prototype.hasOwnProperty.call(source, key)) {\n        target[key] = source[key];\n      }\n    }\n  }\n\n  return target;\n};\n\n/**\n * Given element offsets, generate an output similar to getBoundingClientRect\n * @method\n * @memberof Popper.Utils\n * @argument {Object} offsets\n * @returns {Object} ClientRect like output\n */\nfunction getClientRect(offsets) {\n  return _extends({}, offsets, {\n    right: offsets.left + offsets.width,\n    bottom: offsets.top + offsets.height\n  });\n}\n\n/**\n * Get bounding client rect of given element\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} element\n * @return {Object} client rect\n */\nfunction getBoundingClientRect(element) {\n  var rect = {};\n\n  // IE10 10 FIX: Please, don't ask, the element isn't\n  // considered in DOM in some circumstances...\n  // This isn't reproducible in IE10 compatibility mode of IE11\n  try {\n    if (isIE(10)) {\n      rect = element.getBoundingClientRect();\n      var scrollTop = getScroll(element, 'top');\n      var scrollLeft = getScroll(element, 'left');\n      rect.top += scrollTop;\n      rect.left += scrollLeft;\n      rect.bottom += scrollTop;\n      rect.right += scrollLeft;\n    } else {\n      rect = element.getBoundingClientRect();\n    }\n  } catch (e) {}\n\n  var result = {\n    left: rect.left,\n    top: rect.top,\n    width: rect.right - rect.left,\n    height: rect.bottom - rect.top\n  };\n\n  // subtract scrollbar size from sizes\n  var sizes = element.nodeName === 'HTML' ? getWindowSizes() : {};\n  var width = sizes.width || element.clientWidth || result.right - result.left;\n  var height = sizes.height || element.clientHeight || result.bottom - result.top;\n\n  var horizScrollbar = element.offsetWidth - width;\n  var vertScrollbar = element.offsetHeight - height;\n\n  // if an hypothetical scrollbar is detected, we must be sure it's not a `border`\n  // we make this check conditional for performance reasons\n  if (horizScrollbar || vertScrollbar) {\n    var styles = getStyleComputedProperty(element);\n    horizScrollbar -= getBordersSize(styles, 'x');\n    vertScrollbar -= getBordersSize(styles, 'y');\n\n    result.width -= horizScrollbar;\n    result.height -= vertScrollbar;\n  }\n\n  return getClientRect(result);\n}\n\nfunction getOffsetRectRelativeToArbitraryNode(children, parent) {\n  var fixedPosition = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n  var isIE10 = isIE(10);\n  var isHTML = parent.nodeName === 'HTML';\n  var childrenRect = getBoundingClientRect(children);\n  var parentRect = getBoundingClientRect(parent);\n  var scrollParent = getScrollParent(children);\n\n  var styles = getStyleComputedProperty(parent);\n  var borderTopWidth = parseFloat(styles.borderTopWidth, 10);\n  var borderLeftWidth = parseFloat(styles.borderLeftWidth, 10);\n\n  // In cases where the parent is fixed, we must ignore negative scroll in offset calc\n  if (fixedPosition && parent.nodeName === 'HTML') {\n    parentRect.top = Math.max(parentRect.top, 0);\n    parentRect.left = Math.max(parentRect.left, 0);\n  }\n  var offsets = getClientRect({\n    top: childrenRect.top - parentRect.top - borderTopWidth,\n    left: childrenRect.left - parentRect.left - borderLeftWidth,\n    width: childrenRect.width,\n    height: childrenRect.height\n  });\n  offsets.marginTop = 0;\n  offsets.marginLeft = 0;\n\n  // Subtract margins of documentElement in case it's being used as parent\n  // we do this only on HTML because it's the only element that behaves\n  // differently when margins are applied to it. The margins are included in\n  // the box of the documentElement, in the other cases not.\n  if (!isIE10 && isHTML) {\n    var marginTop = parseFloat(styles.marginTop, 10);\n    var marginLeft = parseFloat(styles.marginLeft, 10);\n\n    offsets.top -= borderTopWidth - marginTop;\n    offsets.bottom -= borderTopWidth - marginTop;\n    offsets.left -= borderLeftWidth - marginLeft;\n    offsets.right -= borderLeftWidth - marginLeft;\n\n    // Attach marginTop and marginLeft because in some circumstances we may need them\n    offsets.marginTop = marginTop;\n    offsets.marginLeft = marginLeft;\n  }\n\n  if (isIE10 && !fixedPosition ? parent.contains(scrollParent) : parent === scrollParent && scrollParent.nodeName !== 'BODY') {\n    offsets = includeScroll(offsets, parent);\n  }\n\n  return offsets;\n}\n\nfunction getViewportOffsetRectRelativeToArtbitraryNode(element) {\n  var excludeScroll = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n  var html = element.ownerDocument.documentElement;\n  var relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);\n  var width = Math.max(html.clientWidth, window.innerWidth || 0);\n  var height = Math.max(html.clientHeight, window.innerHeight || 0);\n\n  var scrollTop = !excludeScroll ? getScroll(html) : 0;\n  var scrollLeft = !excludeScroll ? getScroll(html, 'left') : 0;\n\n  var offset = {\n    top: scrollTop - relativeOffset.top + relativeOffset.marginTop,\n    left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft,\n    width: width,\n    height: height\n  };\n\n  return getClientRect(offset);\n}\n\n/**\n * Check if the given element is fixed or is inside a fixed parent\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {Element} customContainer\n * @returns {Boolean} answer to \"isFixed?\"\n */\nfunction isFixed(element) {\n  var nodeName = element.nodeName;\n  if (nodeName === 'BODY' || nodeName === 'HTML') {\n    return false;\n  }\n  if (getStyleComputedProperty(element, 'position') === 'fixed') {\n    return true;\n  }\n  return isFixed(getParentNode(element));\n}\n\n/**\n * Finds the first parent of an element that has a transformed property defined\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} first transformed parent or documentElement\n */\n\nfunction getFixedPositionOffsetParent(element) {\n  // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n  if (!element || !element.parentElement || isIE()) {\n    return document.documentElement;\n  }\n  var el = element.parentElement;\n  while (el && getStyleComputedProperty(el, 'transform') === 'none') {\n    el = el.parentElement;\n  }\n  return el || document.documentElement;\n}\n\n/**\n * Computed the boundaries limits and return them\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} popper\n * @param {HTMLElement} reference\n * @param {number} padding\n * @param {HTMLElement} boundariesElement - Element used to define the boundaries\n * @param {Boolean} fixedPosition - Is in fixed position mode\n * @returns {Object} Coordinates of the boundaries\n */\nfunction getBoundaries(popper, reference, padding, boundariesElement) {\n  var fixedPosition = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n\n  // NOTE: 1 DOM access here\n\n  var boundaries = { top: 0, left: 0 };\n  var offsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, reference);\n\n  // Handle viewport case\n  if (boundariesElement === 'viewport') {\n    boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent, fixedPosition);\n  } else {\n    // Handle other cases based on DOM element used as boundaries\n    var boundariesNode = void 0;\n    if (boundariesElement === 'scrollParent') {\n      boundariesNode = getScrollParent(getParentNode(reference));\n      if (boundariesNode.nodeName === 'BODY') {\n        boundariesNode = popper.ownerDocument.documentElement;\n      }\n    } else if (boundariesElement === 'window') {\n      boundariesNode = popper.ownerDocument.documentElement;\n    } else {\n      boundariesNode = boundariesElement;\n    }\n\n    var offsets = getOffsetRectRelativeToArbitraryNode(boundariesNode, offsetParent, fixedPosition);\n\n    // In case of HTML, we need a different computation\n    if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {\n      var _getWindowSizes = getWindowSizes(),\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 * @param {Element} fixedPosition - is in fixed position mode\n * @returns {Object} An object containing the offsets which will be applied to the popper\n */\nfunction getReferenceOffsets(state, popper, reference) {\n  var fixedPosition = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n\n  var commonOffsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, reference);\n  return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent, fixedPosition);\n}\n\n/**\n * Get the outer sizes of the given element (offset size + margins)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Object} object containing width and height properties\n */\nfunction getOuterSizes(element) {\n  var styles = 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, this.options.positionFixed);\n\n  // compute auto placement, store placement inside the data object,\n  // modifiers will be able to edit `placement` if needed\n  // and refer to originalPlacement to know the original value\n  data.placement = computeAutoPlacement(this.options.placement, data.offsets.reference, this.popper, this.reference, this.options.modifiers.flip.boundariesElement, this.options.modifiers.flip.padding);\n\n  // store the computed placement inside `originalPlacement`\n  data.originalPlacement = data.placement;\n\n  data.positionFixed = this.options.positionFixed;\n\n  // compute the popper offsets\n  data.offsets.popper = getPopperOffsets(this.popper, data.offsets.reference, data.placement);\n\n  data.offsets.popper.position = this.options.positionFixed ? 'fixed' : 'absolute';\n\n  // run the modifiers\n  data = runModifiers(this.modifiers, data);\n\n  // the first `update` will call `onCreate` callback\n  // the other ones will call `onUpdate` callback\n  if (!this.state.isCreated) {\n    this.state.isCreated = true;\n    this.options.onCreate(data);\n  } else {\n    this.options.onUpdate(data);\n  }\n}\n\n/**\n * Helper used to know if the given modifier is enabled.\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean}\n */\nfunction isModifierEnabled(modifiers, modifierName) {\n  return modifiers.some(function (_ref) {\n    var name = _ref.name,\n        enabled = _ref.enabled;\n    return enabled && name === modifierName;\n  });\n}\n\n/**\n * Get the prefixed supported property name\n * @method\n * @memberof Popper.Utils\n * @argument {String} property (camelCase)\n * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix)\n */\nfunction getSupportedPropertyName(property) {\n  var prefixes = [false, 'ms', 'Webkit', 'Moz', 'O'];\n  var upperProp = property.charAt(0).toUpperCase() + property.slice(1);\n\n  for (var i = 0; i < prefixes.length; i++) {\n    var prefix = prefixes[i];\n    var toCheck = prefix ? '' + prefix + upperProp : property;\n    if (typeof document.body.style[toCheck] !== 'undefined') {\n      return toCheck;\n    }\n  }\n  return null;\n}\n\n/**\n * 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.position = '';\n    this.popper.style.top = '';\n    this.popper.style.left = '';\n    this.popper.style.right = '';\n    this.popper.style.bottom = '';\n    this.popper.style.willChange = '';\n    this.popper.style[getSupportedPropertyName('transform')] = '';\n  }\n\n  this.disableEventListeners();\n\n  // remove the popper if user explicity asked for the deletion on destroy\n  // do not use `remove` because IE11 doesn't support it\n  if (this.options.removeOnDestroy) {\n    this.popper.parentNode.removeChild(this.popper);\n  }\n  return this;\n}\n\n/**\n * Get the window associated with the element\n * @argument {Element} element\n * @returns {Window}\n */\nfunction getWindow(element) {\n  var ownerDocument = element.ownerDocument;\n  return ownerDocument ? ownerDocument.defaultView : window;\n}\n\nfunction attachToScrollParents(scrollParent, event, callback, scrollParents) {\n  var isBody = scrollParent.nodeName === 'BODY';\n  var target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;\n  target.addEventListener(event, callback, { passive: true });\n\n  if (!isBody) {\n    attachToScrollParents(getScrollParent(target.parentNode), event, callback, scrollParents);\n  }\n  scrollParents.push(target);\n}\n\n/**\n * Setup needed event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nfunction setupEventListeners(reference, options, state, updateBound) {\n  // Resize event listener on window\n  state.updateBound = updateBound;\n  getWindow(reference).addEventListener('resize', state.updateBound, { passive: true });\n\n  // Scroll event listener on scroll parents\n  var scrollElement = getScrollParent(reference);\n  attachToScrollParents(scrollElement, 'scroll', state.updateBound, state.scrollParents);\n  state.scrollElement = scrollElement;\n  state.eventsEnabled = true;\n\n  return state;\n}\n\n/**\n * It will add resize/scroll events and start recalculating\n * position of the popper element when they are triggered.\n * @method\n * @memberof Popper\n */\nfunction enableEventListeners() {\n  if (!this.state.eventsEnabled) {\n    this.state = setupEventListeners(this.reference, this.options, this.state, this.scheduleUpdate);\n  }\n}\n\n/**\n * Remove event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nfunction removeEventListeners(reference, state) {\n  // Remove resize event listener on window\n  getWindow(reference).removeEventListener('resize', state.updateBound);\n\n  // Remove scroll event listener on scroll parents\n  state.scrollParents.forEach(function (target) {\n    target.removeEventListener('scroll', state.updateBound);\n  });\n\n  // Reset state\n  state.updateBound = null;\n  state.scrollParents = [];\n  state.scrollElement = null;\n  state.eventsEnabled = false;\n  return state;\n}\n\n/**\n * It will remove resize/scroll events and won't recalculate popper position\n * when they are triggered. It also won't trigger onUpdate callback anymore,\n * unless you call `update` method manually.\n * @method\n * @memberof Popper\n */\nfunction disableEventListeners() {\n  if (this.state.eventsEnabled) {\n    cancelAnimationFrame(this.scheduleUpdate);\n    this.state = removeEventListeners(this.reference, this.state);\n  }\n}\n\n/**\n * Tells if a given input is a number\n * @method\n * @memberof Popper.Utils\n * @param {*} input to check\n * @return {Boolean}\n */\nfunction isNumeric(n) {\n  return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);\n}\n\n/**\n * Set the style to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the style to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nfunction setStyles(element, styles) {\n  Object.keys(styles).forEach(function (prop) {\n    var unit = '';\n    // add unit if the value is numeric and is one of the following\n    if (['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !== -1 && isNumeric(styles[prop])) {\n      unit = 'px';\n    }\n    element.style[prop] = styles[prop] + unit;\n  });\n}\n\n/**\n * Set the attributes to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the attributes to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nfunction setAttributes(element, attributes) {\n  Object.keys(attributes).forEach(function (prop) {\n    var value = attributes[prop];\n    if (value !== false) {\n      element.setAttribute(prop, attributes[prop]);\n    } else {\n      element.removeAttribute(prop);\n    }\n  });\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} data.styles - List of style properties - values to apply to popper element\n * @argument {Object} data.attributes - List of attribute properties - values to apply to popper element\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The same data object\n */\nfunction applyStyle(data) {\n  // any property present in `data.styles` will be applied to the popper,\n  // in this way we can make the 3rd party modifiers add custom styles to it\n  // Be aware, modifiers could override the properties defined in the previous\n  // lines of this modifier!\n  setStyles(data.instance.popper, data.styles);\n\n  // any property present in `data.attributes` will be applied to the popper,\n  // they will be set as HTML attributes of the element\n  setAttributes(data.instance.popper, data.attributes);\n\n  // if arrowElement is defined and arrowStyles has some properties\n  if (data.arrowElement && Object.keys(data.arrowStyles).length) {\n    setStyles(data.arrowElement, data.arrowStyles);\n  }\n\n  return data;\n}\n\n/**\n * Set the x-placement attribute before everything else because it could be used\n * to add margins to the popper margins needs to be calculated to get the\n * correct popper offsets.\n * @method\n * @memberof Popper.modifiers\n * @param {HTMLElement} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as popper\n * @param {Object} options - Popper.js options\n */\nfunction applyStyleOnLoad(reference, popper, options, modifierOptions, state) {\n  // compute reference element offsets\n  var referenceOffsets = getReferenceOffsets(state, popper, reference, options.positionFixed);\n\n  // compute auto placement, store placement inside the data object,\n  // modifiers will be able to edit `placement` if needed\n  // and refer to originalPlacement to know the original value\n  var placement = computeAutoPlacement(options.placement, referenceOffsets, popper, reference, options.modifiers.flip.boundariesElement, options.modifiers.flip.padding);\n\n  popper.setAttribute('x-placement', placement);\n\n  // Apply `position` to popper before anything else because\n  // without the position applied we can't guarantee correct computations\n  setStyles(popper, { position: options.positionFixed ? 'fixed' : 'absolute' });\n\n  return options;\n}\n\n/**\n * @function\n * @memberof 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  // Avoid blurry text by using full pixel integers.\n  // For pixel-perfect positioning, top/bottom prefers rounded\n  // values, while left/right prefers floored values.\n  var offsets = {\n    left: Math.floor(popper.left),\n    top: Math.round(popper.top),\n    bottom: Math.round(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  var _data$offsets$arrow;\n\n  // arrow depends on keepTogether in order to work\n  if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) {\n    return data;\n  }\n\n  var arrowElement = options.element;\n\n  // if arrowElement is a string, suppose it's a CSS selector\n  if (typeof arrowElement === 'string') {\n    arrowElement = data.instance.popper.querySelector(arrowElement);\n\n    // if arrowElement is not found, don't run the modifier\n    if (!arrowElement) {\n      return data;\n    }\n  } else {\n    // if the arrowElement isn't a query selector we must check that the\n    // provided DOM node is child of its popper node\n    if (!data.instance.popper.contains(arrowElement)) {\n      console.warn('WARNING: `arrow.element` must be child of its popper element!');\n      return data;\n    }\n  }\n\n  var placement = data.placement.split('-')[0];\n  var _data$offsets = data.offsets,\n      popper = _data$offsets.popper,\n      reference = _data$offsets.reference;\n\n  var isVertical = ['left', 'right'].indexOf(placement) !== -1;\n\n  var len = isVertical ? 'height' : 'width';\n  var sideCapitalized = isVertical ? 'Top' : 'Left';\n  var side = sideCapitalized.toLowerCase();\n  var altSide = isVertical ? 'left' : 'top';\n  var opSide = isVertical ? 'bottom' : 'right';\n  var arrowElementSize = getOuterSizes(arrowElement)[len];\n\n  //\n  // extends keepTogether behavior making sure the popper and its\n  // reference have enough pixels in 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  data.offsets.popper = getClientRect(data.offsets.popper);\n\n  // compute center of the popper\n  var center = reference[side] + reference[len] / 2 - arrowElementSize / 2;\n\n  // Compute the sideValue using the updated popper offsets\n  // take popper margin in account because we don't have this info available\n  var css = getStyleComputedProperty(data.instance.popper);\n  var popperMarginSide = parseFloat(css['margin' + sideCapitalized], 10);\n  var popperBorderSide = parseFloat(css['border' + sideCapitalized + 'Width'], 10);\n  var sideValue = center - data.offsets.popper[side] - popperMarginSide - popperBorderSide;\n\n  // prevent arrowElement from being placed not contiguously to its popper\n  sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0);\n\n  data.arrowElement = arrowElement;\n  data.offsets.arrow = (_data$offsets$arrow = {}, defineProperty$1(_data$offsets$arrow, side, Math.round(sideValue)), defineProperty$1(_data$offsets$arrow, altSide, ''), _data$offsets$arrow);\n\n  return data;\n}\n\n/**\n * Get the opposite placement variation of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement variation\n * @returns {String} flipped placement variation\n */\nfunction getOppositeVariation(variation) {\n  if (variation === 'end') {\n    return 'start';\n  } else if (variation === 'start') {\n    return 'end';\n  }\n  return variation;\n}\n\n/**\n * List of accepted placements to use as values of the `placement` option.<br />\n * Valid placements are:\n * - `auto`\n * - `top`\n * - `right`\n * - `bottom`\n * - `left`\n *\n * Each placement can have a variation from this list:\n * - `-start`\n * - `-end`\n *\n * Variations are interpreted easily if you think of them as the left to right\n * written languages. Horizontally (`top` and `bottom`), `start` is left and `end`\n * is right.<br />\n * Vertically (`left` and `right`), `start` is top and `end` is bottom.\n *\n * Some valid examples are:\n * - `top-end` (on top of reference, right aligned)\n * - `right-start` (on right of reference, top aligned)\n * - `bottom` (on bottom, centered)\n * - `auto-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, data.positionFixed);\n\n  var placement = data.placement.split('-')[0];\n  var placementOpposite = getOppositePlacement(placement);\n  var variation = data.placement.split('-')[1] || '';\n\n  var flipOrder = [];\n\n  switch (options.behavior) {\n    case BEHAVIORS.FLIP:\n      flipOrder = [placement, placementOpposite];\n      break;\n    case BEHAVIORS.CLOCKWISE:\n      flipOrder = clockwise(placement);\n      break;\n    case BEHAVIORS.COUNTERCLOCKWISE:\n      flipOrder = clockwise(placement, true);\n      break;\n    default:\n      flipOrder = options.behavior;\n  }\n\n  flipOrder.forEach(function (step, index) {\n    if (placement !== step || flipOrder.length === index + 1) {\n      return data;\n    }\n\n    placement = data.placement.split('-')[0];\n    placementOpposite = getOppositePlacement(placement);\n\n    var popperOffsets = data.offsets.popper;\n    var refOffsets = data.offsets.reference;\n\n    // using floor because the reference offsets may contain decimals we are not going to consider here\n    var floor = Math.floor;\n    var overlapsRef = placement === 'left' && floor(popperOffsets.right) > floor(refOffsets.left) || placement === 'right' && floor(popperOffsets.left) < floor(refOffsets.right) || placement === 'top' && floor(popperOffsets.bottom) > floor(refOffsets.top) || placement === 'bottom' && floor(popperOffsets.top) < floor(refOffsets.bottom);\n\n    var overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left);\n    var overflowsRight = floor(popperOffsets.right) > floor(boundaries.right);\n    var overflowsTop = floor(popperOffsets.top) < floor(boundaries.top);\n    var overflowsBottom = floor(popperOffsets.bottom) > floor(boundaries.bottom);\n\n    var overflowsBoundaries = placement === 'left' && overflowsLeft || placement === 'right' && overflowsRight || placement === 'top' && overflowsTop || placement === 'bottom' && overflowsBottom;\n\n    // flip the variation if required\n    var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n    var flippedVariation = !!options.flipVariations && (isVertical && variation === 'start' && overflowsLeft || isVertical && variation === 'end' && overflowsRight || !isVertical && variation === 'start' && overflowsTop || !isVertical && variation === 'end' && overflowsBottom);\n\n    if (overlapsRef || overflowsBoundaries || flippedVariation) {\n      // this boolean to detect any flip loop\n      data.flipped = true;\n\n      if (overlapsRef || overflowsBoundaries) {\n        placement = flipOrder[index + 1];\n      }\n\n      if (flippedVariation) {\n        variation = getOppositeVariation(variation);\n      }\n\n      data.placement = placement + (variation ? '-' + variation : '');\n\n      // this object contains `position`, we want to preserve it along with\n      // any additional property we may add in the future\n      data.offsets.popper = _extends({}, data.offsets.popper, getPopperOffsets(data.instance.popper, data.offsets.reference, data.placement));\n\n      data = runModifiers(data.instance.modifiers, data, 'flip');\n    }\n  });\n  return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction keepTogether(data) {\n  var _data$offsets = data.offsets,\n      popper = _data$offsets.popper,\n      reference = _data$offsets.reference;\n\n  var placement = data.placement.split('-')[0];\n  var floor = Math.floor;\n  var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n  var side = isVertical ? 'right' : 'bottom';\n  var opSide = isVertical ? 'left' : 'top';\n  var measurement = isVertical ? 'width' : 'height';\n\n  if (popper[side] < floor(reference[opSide])) {\n    data.offsets.popper[opSide] = floor(reference[opSide]) - popper[measurement];\n  }\n  if (popper[opSide] > floor(reference[side])) {\n    data.offsets.popper[opSide] = floor(reference[side]);\n  }\n\n  return data;\n}\n\n/**\n * Converts a string containing value + unit into a px value number\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} str - Value + unit string\n * @argument {String} measurement - `height` or `width`\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @returns {Number|String}\n * Value in pixels, or original string if no values were extracted\n */\nfunction toValue(str, measurement, popperOffsets, referenceOffsets) {\n  // separate value from unit\n  var split = str.match(/((?:\\-|\\+)?\\d*\\.?\\d*)(.*)/);\n  var value = +split[1];\n  var unit = split[2];\n\n  // If it's not a number it's an operator, I guess\n  if (!value) {\n    return str;\n  }\n\n  if (unit.indexOf('%') === 0) {\n    var element = void 0;\n    switch (unit) {\n      case '%p':\n        element = popperOffsets;\n        break;\n      case '%':\n      case '%r':\n      default:\n        element = referenceOffsets;\n    }\n\n    var rect = getClientRect(element);\n    return rect[measurement] / 100 * value;\n  } else if (unit === 'vh' || unit === 'vw') {\n    // if is a vh or vw, we calculate the size based on the viewport\n    var size = void 0;\n    if (unit === 'vh') {\n      size = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);\n    } else {\n      size = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\n    }\n    return size / 100 * value;\n  } else {\n    // if is an explicit pixel unit, we get rid of the unit and keep the value\n    // if is an implicit unit, it's px, and we return just the value\n    return value;\n  }\n}\n\n/**\n * Parse an `offset` string to extrapolate `x` and `y` numeric offsets.\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} offset\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @argument {String} basePlacement\n * @returns {Array} a two cells array with x and y offsets in numbers\n */\nfunction parseOffset(offset, popperOffsets, referenceOffsets, basePlacement) {\n  var offsets = [0, 0];\n\n  // Use height if placement is left or right and index is 0 otherwise use width\n  // in this way the first offset will use an axis and the second one\n  // will use the other one\n  var useHeight = ['right', 'left'].indexOf(basePlacement) !== -1;\n\n  // Split the offset string to obtain a list of values and operands\n  // The regex addresses values with the plus or minus sign in front (+10, -20, etc)\n  var fragments = offset.split(/(\\+|\\-)/).map(function (frag) {\n    return frag.trim();\n  });\n\n  // Detect if the offset string contains a pair of values or a single one\n  // they could be separated by comma or space\n  var divider = fragments.indexOf(find(fragments, function (frag) {\n    return frag.search(/,|\\s/) !== -1;\n  }));\n\n  if (fragments[divider] && fragments[divider].indexOf(',') === -1) {\n    console.warn('Offsets separated by white space(s) are deprecated, use a comma (,) instead.');\n  }\n\n  // If divider is found, we divide the list of values and operands to divide\n  // them by ofset X and Y.\n  var splitRegex = /\\s*,\\s*|\\s+/;\n  var ops = divider !== -1 ? [fragments.slice(0, divider).concat([fragments[divider].split(splitRegex)[0]]), [fragments[divider].split(splitRegex)[1]].concat(fragments.slice(divider + 1))] : [fragments];\n\n  // Convert the values with units to absolute pixels to allow our computations\n  ops = ops.map(function (op, index) {\n    // Most of the units rely on the orientation of the popper\n    var measurement = (index === 1 ? !useHeight : useHeight) ? 'height' : 'width';\n    var mergeWithPrevious = false;\n    return op\n    // This aggregates any `+` or `-` sign that aren't considered operators\n    // e.g.: 10 + +5 => [10, +, +5]\n    .reduce(function (a, b) {\n      if (a[a.length - 1] === '' && ['+', '-'].indexOf(b) !== -1) {\n        a[a.length - 1] = b;\n        mergeWithPrevious = true;\n        return a;\n      } else if (mergeWithPrevious) {\n        a[a.length - 1] += b;\n        mergeWithPrevious = false;\n        return a;\n      } else {\n        return a.concat(b);\n      }\n    }, [])\n    // Here we convert the string values into number values (in px)\n    .map(function (str) {\n      return toValue(str, measurement, popperOffsets, referenceOffsets);\n    });\n  });\n\n  // Loop trough the offsets arrays and execute the operations\n  ops.forEach(function (op, index) {\n    op.forEach(function (frag, index2) {\n      if (isNumeric(frag)) {\n        offsets[index] += frag * (op[index2 - 1] === '-' ? -1 : 1);\n      }\n    });\n  });\n  return offsets;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @argument {Number|String} options.offset=0\n * The offset value as described in the modifier description\n * @returns {Object} The data object, properly modified\n */\nfunction offset$1(data, _ref) {\n  var offset = _ref.offset;\n  var placement = data.placement,\n      _data$offsets = data.offsets,\n      popper = _data$offsets.popper,\n      reference = _data$offsets.reference;\n\n  var basePlacement = placement.split('-')[0];\n\n  var offsets = void 0;\n  if (isNumeric(+offset)) {\n    offsets = [+offset, 0];\n  } else {\n    offsets = parseOffset(offset, popper, reference, basePlacement);\n  }\n\n  if (basePlacement === 'left') {\n    popper.top += offsets[0];\n    popper.left -= offsets[1];\n  } else if (basePlacement === 'right') {\n    popper.top += offsets[0];\n    popper.left += offsets[1];\n  } else if (basePlacement === 'top') {\n    popper.left += offsets[0];\n    popper.top -= offsets[1];\n  } else if (basePlacement === 'bottom') {\n    popper.left += offsets[0];\n    popper.top += offsets[1];\n  }\n\n  data.popper = popper;\n  return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction preventOverflow(data, options) {\n  var boundariesElement = options.boundariesElement || getOffsetParent(data.instance.popper);\n\n  // If offsetParent is the reference element, we really want to\n  // go one step up and use the next offsetParent as reference to\n  // avoid to make this modifier completely useless and look like broken\n  if (data.instance.reference === boundariesElement) {\n    boundariesElement = getOffsetParent(boundariesElement);\n  }\n\n  // NOTE: DOM access here\n  // resets the popper's position so that the document size can be calculated excluding\n  // the size of the popper element itself\n  var transformProp = getSupportedPropertyName('transform');\n  var popperStyles = data.instance.popper.style; // assignment to help minification\n  var top = popperStyles.top,\n      left = popperStyles.left,\n      transform = popperStyles[transformProp];\n\n  popperStyles.top = '';\n  popperStyles.left = '';\n  popperStyles[transformProp] = '';\n\n  var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, boundariesElement, data.positionFixed);\n\n  // NOTE: DOM access here\n  // restores the original style properties after the offsets have been computed\n  popperStyles.top = top;\n  popperStyles.left = left;\n  popperStyles[transformProp] = transform;\n\n  options.boundaries = boundaries;\n\n  var order = options.priority;\n  var popper = data.offsets.popper;\n\n  var check = {\n    primary: function primary(placement) {\n      var value = popper[placement];\n      if (popper[placement] < boundaries[placement] && !options.escapeWithReference) {\n        value = Math.max(popper[placement], boundaries[placement]);\n      }\n      return defineProperty$1({}, 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$1({}, 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$1({}, side, reference[side]),\n      end: defineProperty$1({}, 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$1,\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   * Set this to true if you want popper to position it self in 'fixed' mode\n   * @prop {Boolean} positionFixed=false\n   */\n  positionFixed: false,\n\n  /**\n   * Whether events (resize, scroll) are initially enabled\n   * @prop {Boolean} eventsEnabled=true\n   */\n  eventsEnabled: true,\n\n  /**\n   * Set to true if you want to automatically remove the popper when\n   * you call the `destroy` method.\n   * @prop {Boolean} removeOnDestroy=false\n   */\n  removeOnDestroy: false,\n\n  /**\n   * Callback called when the popper is created.<br />\n   * By default, 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\nvar _typeof$1 = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _createClass$1 = function () { function defineProperties$$1(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties$$1(Constructor.prototype, protoProps); if (staticProps) defineProperties$$1(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck$1(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar NAME = 'tooltip';\nvar CLASS_PREFIX = 'bs-tooltip';\nvar BSCLS_PREFIX_REGEX = new RegExp('\\\\b' + CLASS_PREFIX + '\\\\S+', 'g');\n\nvar TRANSITION_DURATION = 150;\n\n// Modal $root hidden event\nvar MODAL_CLOSE_EVENT = 'bv::modal::hidden';\n// Modal container for appending tip/popover\nvar MODAL_CLASS = '.modal-content';\n\nvar AttachmentMap = {\n  AUTO: 'auto',\n  TOP: 'top',\n  RIGHT: 'right',\n  BOTTOM: 'bottom',\n  LEFT: 'left',\n  TOPLEFT: 'top',\n  TOPRIGHT: 'top',\n  RIGHTTOP: 'right',\n  RIGHTBOTTOM: 'right',\n  BOTTOMLEFT: 'bottom',\n  BOTTOMRIGHT: 'bottom',\n  LEFTTOP: 'left',\n  LEFTBOTTOM: 'left'\n};\n\nvar OffsetMap = {\n  AUTO: 0,\n  TOPLEFT: -1,\n  TOP: 0,\n  TOPRIGHT: +1,\n  RIGHTTOP: -1,\n  RIGHT: 0,\n  RIGHTBOTTOM: +1,\n  BOTTOMLEFT: -1,\n  BOTTOM: 0,\n  BOTTOMRIGHT: +1,\n  LEFTTOP: -1,\n  LEFT: 0,\n  LEFTBOTTOM: +1\n};\n\nvar HoverState = {\n  SHOW: 'show',\n  OUT: 'out'\n};\n\nvar ClassName = {\n  FADE: 'fade',\n  SHOW: 'show'\n};\n\nvar Selector$1 = {\n  TOOLTIP: '.tooltip',\n  TOOLTIP_INNER: '.tooltip-inner',\n  ARROW: '.arrow'\n\n  // ESLINT: Not used\n  // const Trigger = {\n  //   HOVER: 'hover',\n  //   FOCUS: 'focus',\n  //   CLICK: 'click',\n  //   BLUR: 'blur',\n  //   MANUAL: 'manual'\n  // }\n\n};var Defaults$1 = {\n  animation: true,\n  template: '<div class=\"tooltip\" role=\"tooltip\">' + '<div class=\"arrow\"></div>' + '<div class=\"tooltip-inner\"></div>' + '</div>',\n  trigger: 'hover focus',\n  title: '',\n  delay: 0,\n  html: false,\n  placement: 'top',\n  offset: 0,\n  arrowPadding: 6,\n  container: false,\n  fallbackPlacement: 'flip',\n  callbacks: {},\n  boundary: 'scrollParent'\n\n  // Transition Event names\n};var TransitionEndEvents = {\n  WebkitTransition: ['webkitTransitionEnd'],\n  MozTransition: ['transitionend'],\n  OTransition: ['otransitionend', 'oTransitionEnd'],\n  transition: ['transitionend']\n\n  // Client Side Tip ID counter for aria-describedby attribute\n  // Could use Alex's uid generator util\n  // Each tooltip requires a unique client side ID\n};var NEXTID = 1;\n/* istanbul ignore next */\nfunction generateId(name) {\n  return '__BV_' + name + '_' + NEXTID++ + '__';\n}\n\n/*\n * ToolTip Class definition\n */\n/* istanbul ignore next: difficult to test in Jest/JSDOM environment */\n\nvar ToolTip = function () {\n  // Main constructor\n  function ToolTip(element, config, $root) {\n    _classCallCheck$1(this, ToolTip);\n\n    // New tooltip object\n    this.$isEnabled = true;\n    this.$fadeTimeout = null;\n    this.$hoverTimeout = null;\n    this.$visibleInterval = null;\n    this.$hoverState = '';\n    this.$activeTrigger = {};\n    this.$popper = null;\n    this.$element = element;\n    this.$tip = null;\n    this.$id = generateId(this.constructor.NAME);\n    this.$root = $root || null;\n    this.$routeWatcher = null;\n    // We use a bound version of the following handlers for root/modal listeners to maintain the 'this' context\n    this.$forceHide = this.forceHide.bind(this);\n    this.$doHide = this.doHide.bind(this);\n    this.$doShow = this.doShow.bind(this);\n    this.$doDisable = this.doDisable.bind(this);\n    this.$doEnable = this.doEnable.bind(this);\n    // Set the configuration\n    this.updateConfig(config);\n  }\n\n  // NOTE: Overridden by PopOver class\n\n\n  _createClass$1(ToolTip, [{\n    key: 'updateConfig',\n\n\n    // Update config\n    value: function updateConfig(config) {\n      // Merge config into defaults. We use \"this\" here because PopOver overrides Default\n      var updatedConfig = assign({}, this.constructor.Default, config);\n\n      // Sanitize delay\n      if (config.delay && typeof config.delay === 'number') {\n        updatedConfig.delay = {\n          show: config.delay,\n          hide: config.delay\n        };\n      }\n\n      // Title for tooltip and popover\n      if (config.title && typeof config.title === 'number') {\n        updatedConfig.title = config.title.toString();\n      }\n\n      // Content only for popover\n      if (config.content && typeof config.content === 'number') {\n        updatedConfig.content = config.content.toString();\n      }\n\n      // Hide element original title if needed\n      this.fixTitle();\n      // Update the config\n      this.$config = updatedConfig;\n      // Stop/Restart listening\n      this.unListen();\n      this.listen();\n    }\n\n    // Destroy this instance\n\n  }, {\n    key: 'destroy',\n    value: function destroy() {\n      // Stop listening to trigger events\n      this.unListen();\n      // Disable while open listeners/watchers\n      this.setWhileOpenListeners(false);\n      // Clear any timeouts\n      clearTimeout(this.$hoverTimeout);\n      this.$hoverTimeout = null;\n      clearTimeout(this.$fadeTimeout);\n      this.$fadeTimeout = null;\n      // Remove popper\n      if (this.$popper) {\n        this.$popper.destroy();\n      }\n      this.$popper = null;\n      // Remove tip from document\n      if (this.$tip && this.$tip.parentElement) {\n        this.$tip.parentElement.removeChild(this.$tip);\n      }\n      this.$tip = null;\n      // Null out other properties\n      this.$id = null;\n      this.$isEnabled = null;\n      this.$root = null;\n      this.$element = null;\n      this.$config = null;\n      this.$hoverState = null;\n      this.$activeTrigger = null;\n      this.$forceHide = null;\n      this.$doHide = null;\n      this.$doShow = null;\n      this.$doDisable = null;\n      this.$doEnable = null;\n    }\n  }, {\n    key: 'enable',\n    value: function enable() {\n      // Create a non-cancelable BvEvent\n      var enabledEvt = new BvEvent('enabled', {\n        cancelable: false,\n        target: this.$element,\n        relatedTarget: null\n      });\n      this.$isEnabled = true;\n      this.emitEvent(enabledEvt);\n    }\n  }, {\n    key: 'disable',\n    value: function disable() {\n      // Create a non-cancelable BvEvent\n      var disabledEvt = new BvEvent('disabled', {\n        cancelable: false,\n        target: this.$element,\n        relatedTarget: null\n      });\n      this.$isEnabled = false;\n      this.emitEvent(disabledEvt);\n    }\n\n    // Click toggler\n\n  }, {\n    key: 'toggle',\n    value: function toggle(event) {\n      if (!this.$isEnabled) {\n        return;\n      }\n      if (event) {\n        this.$activeTrigger.click = !this.$activeTrigger.click;\n\n        if (this.isWithActiveTrigger()) {\n          this.enter(null);\n        } else {\n          this.leave(null);\n        }\n      } else {\n        if (hasClass(this.getTipElement(), ClassName.SHOW)) {\n          this.leave(null);\n        } else {\n          this.enter(null);\n        }\n      }\n    }\n\n    // Show tooltip\n\n  }, {\n    key: 'show',\n    value: function show() {\n      var _this = this;\n\n      if (!document.body.contains(this.$element) || !isVisible(this.$element)) {\n        // If trigger element isn't in the DOM or is not visible\n        return;\n      }\n      // Build tooltip element (also sets this.$tip)\n      var tip = this.getTipElement();\n      this.fixTitle();\n      this.setContent(tip);\n      if (!this.isWithContent(tip)) {\n        // if No content, don't bother showing\n        this.$tip = null;\n        return;\n      }\n\n      // Set ID on tip and aria-describedby on element\n      setAttr(tip, 'id', this.$id);\n      this.addAriaDescribedby();\n\n      // Set animation on or off\n      if (this.$config.animation) {\n        addClass(tip, ClassName.FADE);\n      } else {\n        removeClass(tip, ClassName.FADE);\n      }\n\n      var placement = this.getPlacement();\n      var attachment = this.constructor.getAttachment(placement);\n      this.addAttachmentClass(attachment);\n\n      // Create a cancelable BvEvent\n      var showEvt = new BvEvent('show', {\n        cancelable: true,\n        target: this.$element,\n        relatedTarget: tip\n      });\n      this.emitEvent(showEvt);\n      if (showEvt.defaultPrevented) {\n        // Don't show if event cancelled\n        this.$tip = null;\n        return;\n      }\n\n      // Insert tooltip if needed\n      var container = this.getContainer();\n      if (!document.body.contains(tip)) {\n        container.appendChild(tip);\n      }\n\n      // Refresh popper\n      this.removePopper();\n      this.$popper = new Popper(this.$element, tip, this.getPopperConfig(placement, tip));\n\n      // Transitionend Callback\n      var complete = function complete() {\n        if (_this.$config.animation) {\n          _this.fixTransition(tip);\n        }\n        var prevHoverState = _this.$hoverState;\n        _this.$hoverState = null;\n        if (prevHoverState === HoverState.OUT) {\n          _this.leave(null);\n        }\n        // Create a non-cancelable BvEvent\n        var shownEvt = new BvEvent('shown', {\n          cancelable: false,\n          target: _this.$element,\n          relatedTarget: tip\n        });\n        _this.emitEvent(shownEvt);\n      };\n\n      // Enable while open listeners/watchers\n      this.setWhileOpenListeners(true);\n\n      // Show tip\n      addClass(tip, ClassName.SHOW);\n\n      // Start the transition/animation\n      this.transitionOnce(tip, complete);\n    }\n\n    // handler for periodic visibility check\n\n  }, {\n    key: 'visibleCheck',\n    value: function visibleCheck(on) {\n      var _this2 = this;\n\n      clearInterval(this.$visibleInterval);\n      this.$visibleInterval = null;\n      if (on) {\n        this.$visibleInterval = setInterval(function () {\n          var tip = _this2.getTipElement();\n          if (tip && !isVisible(_this2.$element) && hasClass(tip, ClassName.SHOW)) {\n            // Element is no longer visible, so force-hide the tooltip\n            _this2.forceHide();\n          }\n        }, 100);\n      }\n    }\n  }, {\n    key: 'setWhileOpenListeners',\n    value: function setWhileOpenListeners(on) {\n      // Modal close events\n      this.setModalListener(on);\n      // Periodic $element visibility check\n      // For handling when tip is in <keepalive>, tabs, carousel, etc\n      this.visibleCheck(on);\n      // Route change events\n      this.setRouteWatcher(on);\n      // Ontouch start listeners\n      this.setOnTouchStartListener(on);\n      if (on && /(focus|blur)/.test(this.$config.trigger)) {\n        // If focus moves between trigger element and tip container, dont close\n        eventOn(this.$tip, 'focusout', this);\n      } else {\n        eventOff(this.$tip, 'focusout', this);\n      }\n    }\n\n    // force hide of tip (internal method)\n\n  }, {\n    key: 'forceHide',\n    value: function forceHide() {\n      if (!this.$tip || !hasClass(this.$tip, ClassName.SHOW)) {\n        return;\n      }\n      // Disable while open listeners/watchers\n      this.setWhileOpenListeners(false);\n      // Clear any hover enter/leave event\n      clearTimeout(this.$hoverTimeout);\n      this.$hoverTimeout = null;\n      this.$hoverState = '';\n      // Hide the tip\n      this.hide(null, true);\n    }\n\n    // Hide tooltip\n\n  }, {\n    key: 'hide',\n    value: function hide(callback, force) {\n      var _this3 = this;\n\n      var tip = this.$tip;\n      if (!tip) {\n        return;\n      }\n\n      // Create a canelable BvEvent\n      var hideEvt = new BvEvent('hide', {\n        // We disable cancelling if force is true\n        cancelable: !force,\n        target: this.$element,\n        relatedTarget: tip\n      });\n      this.emitEvent(hideEvt);\n      if (hideEvt.defaultPrevented) {\n        // Don't hide if event cancelled\n        return;\n      }\n\n      // Transitionend Callback\n      /* istanbul ignore next */\n      var complete = function complete() {\n        if (_this3.$hoverState !== HoverState.SHOW && tip.parentNode) {\n          // Remove tip from dom, and force recompile on next show\n          tip.parentNode.removeChild(tip);\n          _this3.removeAriaDescribedby();\n          _this3.removePopper();\n          _this3.$tip = null;\n        }\n        if (callback) {\n          callback();\n        }\n        // Create a non-cancelable BvEvent\n        var hiddenEvt = new BvEvent('hidden', {\n          cancelable: false,\n          target: _this3.$element,\n          relatedTarget: null\n        });\n        _this3.emitEvent(hiddenEvt);\n      };\n\n      // Disable while open listeners/watchers\n      this.setWhileOpenListeners(false);\n\n      // If forced close, disable animation\n      if (force) {\n        removeClass(tip, ClassName.FADE);\n      }\n      // Hide tip\n      removeClass(tip, ClassName.SHOW);\n\n      this.$activeTrigger.click = false;\n      this.$activeTrigger.focus = false;\n      this.$activeTrigger.hover = false;\n\n      // Start the hide transition\n      this.transitionOnce(tip, complete);\n\n      this.$hoverState = '';\n    }\n  }, {\n    key: 'emitEvent',\n    value: function emitEvent(evt) {\n      var evtName = evt.type;\n      if (this.$root && this.$root.$emit) {\n        // Emit an event on $root\n        this.$root.$emit('bv::' + this.constructor.NAME + '::' + evtName, evt);\n      }\n      var callbacks = this.$config.callbacks || {};\n      if (typeof callbacks[evtName] === 'function') {\n        callbacks[evtName](evt);\n      }\n    }\n  }, {\n    key: 'getContainer',\n    value: function getContainer() {\n      var container = this.$config.container;\n      var body = document.body;\n      // If we are in a modal, we append to the modal instead of body, unless a container is specified\n      return container === false ? closest(MODAL_CLASS, this.$element) || body : select(container, body) || body;\n    }\n\n    // Will be overritten by popover if needed\n\n  }, {\n    key: 'addAriaDescribedby',\n    value: function addAriaDescribedby() {\n      // Add aria-describedby on trigger element, without removing any other IDs\n      var desc = getAttr(this.$element, 'aria-describedby') || '';\n      desc = desc.split(/\\s+/).concat(this.$id).join(' ').trim();\n      setAttr(this.$element, 'aria-describedby', desc);\n    }\n\n    // Will be overritten by popover if needed\n\n  }, {\n    key: 'removeAriaDescribedby',\n    value: function removeAriaDescribedby() {\n      var _this4 = this;\n\n      var desc = getAttr(this.$element, 'aria-describedby') || '';\n      desc = desc.split(/\\s+/).filter(function (d) {\n        return d !== _this4.$id;\n      }).join(' ').trim();\n      if (desc) {\n        setAttr(this.$element, 'aria-describedby', desc);\n      } else {\n        removeAttr(this.$element, 'aria-describedby');\n      }\n    }\n  }, {\n    key: 'removePopper',\n    value: function removePopper() {\n      if (this.$popper) {\n        this.$popper.destroy();\n      }\n      this.$popper = null;\n    }\n\n    /* istanbul ignore next */\n\n  }, {\n    key: 'transitionOnce',\n    value: function transitionOnce(tip, complete) {\n      var _this5 = this;\n\n      var transEvents = this.getTransitionEndEvents();\n      var called = false;\n      clearTimeout(this.$fadeTimeout);\n      this.$fadeTimeout = null;\n      var fnOnce = function fnOnce() {\n        if (called) {\n          return;\n        }\n        called = true;\n        clearTimeout(_this5.$fadeTimeout);\n        _this5.$fadeTimeout = null;\n        transEvents.forEach(function (evtName) {\n          eventOff(tip, evtName, fnOnce);\n        });\n        // Call complete callback\n        complete();\n      };\n      if (hasClass(tip, ClassName.FADE)) {\n        transEvents.forEach(function (evtName) {\n          eventOn(tip, evtName, fnOnce);\n        });\n        // Fallback to setTimeout\n        this.$fadeTimeout = setTimeout(fnOnce, TRANSITION_DURATION);\n      } else {\n        fnOnce();\n      }\n    }\n\n    // What transitionend event(s) to use? (returns array of event names)\n\n  }, {\n    key: 'getTransitionEndEvents',\n    value: function getTransitionEndEvents() {\n      for (var name in TransitionEndEvents) {\n        if (this.$element.style[name] !== undefined) {\n          return TransitionEndEvents[name];\n        }\n      }\n      // fallback\n      return [];\n    }\n  }, {\n    key: 'update',\n    value: function update() {\n      if (this.$popper !== null) {\n        this.$popper.scheduleUpdate();\n      }\n    }\n\n    // NOTE: Overridden by PopOver class\n\n  }, {\n    key: 'isWithContent',\n    value: function isWithContent(tip) {\n      tip = tip || this.$tip;\n      if (!tip) {\n        return false;\n      }\n      return Boolean((select(Selector$1.TOOLTIP_INNER, tip) || {}).innerHTML);\n    }\n\n    // NOTE: Overridden by PopOver class\n\n  }, {\n    key: 'addAttachmentClass',\n    value: function addAttachmentClass(attachment) {\n      addClass(this.getTipElement(), CLASS_PREFIX + '-' + attachment);\n    }\n  }, {\n    key: 'getTipElement',\n    value: function getTipElement() {\n      if (!this.$tip) {\n        // Try and compile user supplied template, or fallback to default template\n        this.$tip = this.compileTemplate(this.$config.template) || this.compileTemplate(this.constructor.Default.template);\n      }\n      // Add tab index so tip can be focused, and to allow it to be set as relatedTargt in focusin/out events\n      this.$tip.tabIndex = -1;\n      return this.$tip;\n    }\n  }, {\n    key: 'compileTemplate',\n    value: function compileTemplate(html) {\n      if (!html || typeof html !== 'string') {\n        return null;\n      }\n      var div = document.createElement('div');\n      div.innerHTML = html.trim();\n      var node = div.firstElementChild ? div.removeChild(div.firstElementChild) : null;\n      div = null;\n      return node;\n    }\n\n    // NOTE: Overridden by PopOver class\n\n  }, {\n    key: 'setContent',\n    value: function setContent(tip) {\n      this.setElementContent(select(Selector$1.TOOLTIP_INNER, tip), this.getTitle());\n      removeClass(tip, ClassName.FADE);\n      removeClass(tip, ClassName.SHOW);\n    }\n  }, {\n    key: 'setElementContent',\n    value: function setElementContent(container, content) {\n      if (!container) {\n        // If container element doesn't exist, just return\n        return;\n      }\n      var allowHtml = this.$config.html;\n      if ((typeof content === 'undefined' ? 'undefined' : _typeof$1(content)) === 'object' && content.nodeType) {\n        // content is a DOM node\n        if (allowHtml) {\n          if (content.parentElement !== container) {\n            container.innerHtml = '';\n            container.appendChild(content);\n          }\n        } else {\n          container.innerText = content.innerText;\n        }\n      } else {\n        // We have a plain HTML string or Text\n        container[allowHtml ? 'innerHTML' : 'innerText'] = content;\n      }\n    }\n\n    // NOTE: Overridden by PopOver class\n\n  }, {\n    key: 'getTitle',\n    value: function getTitle() {\n      var title = this.$config.title || '';\n      if (typeof title === 'function') {\n        // Call the function to get the title value\n        title = title(this.$element);\n      }\n      if ((typeof title === 'undefined' ? 'undefined' : _typeof$1(title)) === 'object' && title.nodeType && !title.innerHTML.trim()) {\n        // We have a DOM node, but without inner content, so just return empty string\n        title = '';\n      }\n      if (typeof title === 'string') {\n        title = title.trim();\n      }\n      if (!title) {\n        // If an explicit title is not given, try element's title atributes\n        title = getAttr(this.$element, 'title') || getAttr(this.$element, 'data-original-title') || '';\n        title = title.trim();\n      }\n\n      return title;\n    }\n  }, {\n    key: 'listen',\n    value: function listen() {\n      var _this6 = this;\n\n      var triggers = this.$config.trigger.trim().split(/\\s+/);\n      var el = this.$element;\n\n      // Listen for global show/hide events\n      this.setRootListener(true);\n\n      // Using 'this' as the handler will get automagically directed to this.handleEvent\n      // And maintain our binding to 'this'\n      triggers.forEach(function (trigger) {\n        if (trigger === 'click') {\n          eventOn(el, 'click', _this6);\n        } else if (trigger === 'focus') {\n          eventOn(el, 'focusin', _this6);\n          eventOn(el, 'focusout', _this6);\n        } else if (trigger === 'blur') {\n          // Used to close $tip when element looses focus\n          eventOn(el, 'focusout', _this6);\n        } else if (trigger === 'hover') {\n          eventOn(el, 'mouseenter', _this6);\n          eventOn(el, 'mouseleave', _this6);\n        }\n      }, this);\n    }\n  }, {\n    key: 'unListen',\n    value: function unListen() {\n      var _this7 = this;\n\n      var events = ['click', 'focusin', 'focusout', 'mouseenter', 'mouseleave'];\n      // Using \"this\" as the handler will get automagically directed to this.handleEvent\n      events.forEach(function (evt) {\n        eventOff(_this7.$element, evt, _this7);\n      }, this);\n\n      // Stop listening for global show/hide/enable/disable events\n      this.setRootListener(false);\n    }\n  }, {\n    key: 'handleEvent',\n    value: function handleEvent(e) {\n      // This special method allows us to use \"this\" as the event handlers\n      if (isDisabled(this.$element)) {\n        // If disabled, don't do anything. Note: if tip is shown before element gets\n        // disabled, then tip not close until no longer disabled or forcefully closed.\n        return;\n      }\n      if (!this.$isEnabled) {\n        // If not enable\n        return;\n      }\n      var type = e.type;\n      var target = e.target;\n      var relatedTarget = e.relatedTarget;\n      var $element = this.$element;\n      var $tip = this.$tip;\n      if (type === 'click') {\n        this.toggle(e);\n      } else if (type === 'focusin' || type === 'mouseenter') {\n        this.enter(e);\n      } else if (type === 'focusout') {\n        // target is the element which is loosing focus\n        // And relatedTarget is the element gaining focus\n        if ($tip && $element && $element.contains(target) && $tip.contains(relatedTarget)) {\n          // If focus moves from $element to $tip, don't trigger a leave\n          return;\n        }\n        if ($tip && $element && $tip.contains(target) && $element.contains(relatedTarget)) {\n          // If focus moves from $tip to $element, don't trigger a leave\n          return;\n        }\n        if ($tip && $tip.contains(target) && $tip.contains(relatedTarget)) {\n          // If focus moves within $tip, don't trigger a leave\n          return;\n        }\n        if ($element && $element.contains(target) && $element.contains(relatedTarget)) {\n          // If focus moves within $element, don't trigger a leave\n          return;\n        }\n        // Otherwise trigger a leave\n        this.leave(e);\n      } else if (type === 'mouseleave') {\n        this.leave(e);\n      }\n    }\n\n    /* istanbul ignore next */\n\n  }, {\n    key: 'setRouteWatcher',\n    value: function setRouteWatcher(on) {\n      var _this8 = this;\n\n      if (on) {\n        this.setRouteWatcher(false);\n        if (this.$root && Boolean(this.$root.$route)) {\n          this.$routeWatcher = this.$root.$watch('$route', function (newVal, oldVal) {\n            if (newVal === oldVal) {\n              return;\n            }\n            // If route has changed, we force hide the tooltip/popover\n            _this8.forceHide();\n          });\n        }\n      } else {\n        if (this.$routeWatcher) {\n          // cancel the route watcher by calling hte stored reference\n          this.$routeWatcher();\n          this.$routeWatcher = null;\n        }\n      }\n    }\n\n    /* istanbul ignore next */\n\n  }, {\n    key: 'setModalListener',\n    value: function setModalListener(on) {\n      var modal = closest(MODAL_CLASS, this.$element);\n      if (!modal) {\n        // If we are not in a modal, don't worry. be happy\n        return;\n      }\n      // We can listen for modal hidden events on $root\n      if (this.$root) {\n        this.$root[on ? '$on' : '$off'](MODAL_CLOSE_EVENT, this.$forceHide);\n      }\n    }\n\n    /* istanbul ignore next */\n\n  }, {\n    key: 'setRootListener',\n    value: function setRootListener(on) {\n      // Listen for global 'bv::{hide|show}::{tooltip|popover}' hide request event\n      if (this.$root) {\n        this.$root[on ? '$on' : '$off']('bv::hide::' + this.constructor.NAME, this.$doHide);\n        this.$root[on ? '$on' : '$off']('bv::show::' + this.constructor.NAME, this.$doShow);\n        this.$root[on ? '$on' : '$off']('bv::disable::' + this.constructor.NAME, this.$doDisable);\n        this.$root[on ? '$on' : '$off']('bv::enable::' + this.constructor.NAME, this.$doEnable);\n      }\n    }\n  }, {\n    key: 'doHide',\n    value: function doHide(id) {\n      // Programmatically hide tooltip or popover\n      if (!id) {\n        // Close all tooltips or popovers\n        this.forceHide();\n      } else if (this.$element && this.$element.id && this.$element.id === id) {\n        // Close this specific tooltip or popover\n        this.hide();\n      }\n    }\n  }, {\n    key: 'doShow',\n    value: function doShow(id) {\n      // Programmatically show tooltip or popover\n      if (!id) {\n        // Open all tooltips or popovers\n        this.show();\n      } else if (id && this.$element && this.$element.id && this.$element.id === id) {\n        // Show this specific tooltip or popover\n        this.show();\n      }\n    }\n  }, {\n    key: 'doDisable',\n    value: function doDisable(id) {\n      // Programmatically disable tooltip or popover\n      if (!id) {\n        // Disable all tooltips or popovers\n        this.disable();\n      } else if (this.$element && this.$element.id && this.$element.id === id) {\n        // Disable this specific tooltip or popover\n        this.disable();\n      }\n    }\n  }, {\n    key: 'doEnable',\n    value: function doEnable(id) {\n      // Programmatically enable tooltip or popover\n      if (!id) {\n        // Enable all tooltips or popovers\n        this.enable();\n      } else if (this.$element && this.$element.id && this.$element.id === id) {\n        // Enable this specific tooltip or popover\n        this.enable();\n      }\n    }\n\n    /* istanbul ignore next */\n\n  }, {\n    key: 'setOnTouchStartListener',\n    value: function setOnTouchStartListener(on) {\n      var _this9 = this;\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        from(document.body.children).forEach(function (el) {\n          if (on) {\n            eventOn(el, 'mouseover', _this9._noop);\n          } else {\n            eventOff(el, 'mouseover', _this9._noop);\n          }\n        });\n      }\n    }\n\n    /* istanbul ignore next */\n\n  }, {\n    key: '_noop',\n    value: function _noop() {\n      // Empty noop handler for ontouchstart devices\n    }\n  }, {\n    key: 'fixTitle',\n    value: function fixTitle() {\n      var el = this.$element;\n      var titleType = _typeof$1(getAttr(el, 'data-original-title'));\n      if (getAttr(el, 'title') || titleType !== 'string') {\n        setAttr(el, 'data-original-title', getAttr(el, 'title') || '');\n        setAttr(el, 'title', '');\n      }\n    }\n\n    // Enter handler\n    /* istanbul ignore next */\n\n  }, {\n    key: 'enter',\n    value: function enter(e) {\n      var _this10 = this;\n\n      if (e) {\n        this.$activeTrigger[e.type === 'focusin' ? 'focus' : 'hover'] = true;\n      }\n      if (hasClass(this.getTipElement(), ClassName.SHOW) || this.$hoverState === HoverState.SHOW) {\n        this.$hoverState = HoverState.SHOW;\n        return;\n      }\n      clearTimeout(this.$hoverTimeout);\n      this.$hoverState = HoverState.SHOW;\n      if (!this.$config.delay || !this.$config.delay.show) {\n        this.show();\n        return;\n      }\n      this.$hoverTimeout = setTimeout(function () {\n        if (_this10.$hoverState === HoverState.SHOW) {\n          _this10.show();\n        }\n      }, this.$config.delay.show);\n    }\n\n    // Leave handler\n    /* istanbul ignore next */\n\n  }, {\n    key: 'leave',\n    value: function leave(e) {\n      var _this11 = this;\n\n      if (e) {\n        this.$activeTrigger[e.type === 'focusout' ? 'focus' : 'hover'] = false;\n        if (e.type === 'focusout' && /blur/.test(this.$config.trigger)) {\n          // Special case for `blur`: we clear out the other triggers\n          this.$activeTrigger.click = false;\n          this.$activeTrigger.hover = false;\n        }\n      }\n      if (this.isWithActiveTrigger()) {\n        return;\n      }\n      clearTimeout(this.$hoverTimeout);\n      this.$hoverState = HoverState.OUT;\n      if (!this.$config.delay || !this.$config.delay.hide) {\n        this.hide();\n        return;\n      }\n      this.$hoverTimeout = setTimeout(function () {\n        if (_this11.$hoverState === HoverState.OUT) {\n          _this11.hide();\n        }\n      }, this.$config.delay.hide);\n    }\n  }, {\n    key: 'getPopperConfig',\n    value: function getPopperConfig(placement, tip) {\n      var _this12 = this;\n\n      return {\n        placement: this.constructor.getAttachment(placement),\n        modifiers: {\n          offset: { offset: this.getOffset(placement, tip) },\n          flip: { behavior: this.$config.fallbackPlacement },\n          arrow: { element: '.arrow' },\n          preventOverflow: { boundariesElement: this.$config.boundary }\n        },\n        onCreate: function onCreate(data) {\n          // Handle flipping arrow classes\n          if (data.originalPlacement !== data.placement) {\n            _this12.handlePopperPlacementChange(data);\n          }\n        },\n        onUpdate: function onUpdate(data) {\n          // Handle flipping arrow classes\n          _this12.handlePopperPlacementChange(data);\n        }\n      };\n    }\n  }, {\n    key: 'getOffset',\n    value: function getOffset(placement, tip) {\n      if (!this.$config.offset) {\n        var arrow = select(Selector$1.ARROW, tip);\n        var arrowOffset = parseFloat(getCS(arrow).width) + parseFloat(this.$config.arrowPadding);\n        switch (OffsetMap[placement.toUpperCase()]) {\n          case +1:\n            return '+50%p - ' + arrowOffset + 'px';\n          case -1:\n            return '-50%p + ' + arrowOffset + 'px';\n          default:\n            return 0;\n        }\n      }\n      return this.$config.offset;\n    }\n  }, {\n    key: 'getPlacement',\n    value: function getPlacement() {\n      var placement = this.$config.placement;\n      if (typeof placement === 'function') {\n        return placement.call(this, this.$tip, this.$element);\n      }\n      return placement;\n    }\n  }, {\n    key: 'isWithActiveTrigger',\n    value: function isWithActiveTrigger() {\n      for (var trigger in this.$activeTrigger) {\n        if (this.$activeTrigger[trigger]) {\n          return true;\n        }\n      }\n      return false;\n    }\n\n    // NOTE: Overridden by PopOver class\n\n  }, {\n    key: 'cleanTipClass',\n    value: function cleanTipClass() {\n      var tip = this.getTipElement();\n      var tabClass = tip.className.match(BSCLS_PREFIX_REGEX);\n      if (tabClass !== null && tabClass.length > 0) {\n        tabClass.forEach(function (cls) {\n          removeClass(tip, cls);\n        });\n      }\n    }\n  }, {\n    key: 'handlePopperPlacementChange',\n    value: function handlePopperPlacementChange(data) {\n      this.cleanTipClass();\n      this.addAttachmentClass(this.constructor.getAttachment(data.placement));\n    }\n  }, {\n    key: 'fixTransition',\n    value: function fixTransition(tip) {\n      var initConfigAnimation = this.$config.animation || false;\n      if (getAttr(tip, 'x-placement') !== null) {\n        return;\n      }\n      removeClass(tip, ClassName.FADE);\n      this.$config.animation = false;\n      this.hide();\n      this.show();\n      this.$config.animation = initConfigAnimation;\n    }\n  }], [{\n    key: 'getAttachment',\n    value: function getAttachment(placement) {\n      return AttachmentMap[placement.toUpperCase()];\n    }\n  }, {\n    key: 'Default',\n    get: function get() {\n      return Defaults$1;\n    }\n\n    // NOTE: Overridden by PopOver class\n\n  }, {\n    key: 'NAME',\n    get: function get() {\n      return NAME;\n    }\n  }]);\n\n  return ToolTip;\n}();\n\n// Polyfills for SSR\n\nvar isSSR = typeof window === 'undefined';\n\nvar HTMLElement = isSSR ? Object : window.HTMLElement;\n\nvar _typeof$2 = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar PLACEMENTS = {\n  top: 'top',\n  topleft: 'topleft',\n  topright: 'topright',\n  right: 'right',\n  righttop: 'righttop',\n  rightbottom: 'rightbottom',\n  bottom: 'bottom',\n  bottomleft: 'bottomleft',\n  bottomright: 'bottomright',\n  left: 'left',\n  lefttop: 'lefttop',\n  leftbottom: 'leftbottom',\n  auto: 'auto'\n};\n\nvar OBSERVER_CONFIG$1 = {\n  subtree: true,\n  childList: true,\n  characterData: true,\n  attributes: true,\n  attributeFilter: ['class', 'style']\n};\n\nvar toolpopMixin = {\n  props: {\n    target: {\n      // String ID of element, or element/component reference\n      type: [String, Object, HTMLElement, Function]\n    },\n    delay: {\n      type: [Number, Object, String],\n      default: 0\n    },\n    offset: {\n      type: [Number, String],\n      default: 0\n    },\n    noFade: {\n      type: Boolean,\n      default: false\n    },\n    container: {\n      // String ID of container, if null body is used (default)\n      type: String,\n      default: null\n    },\n    boundary: {\n      // String: scrollParent, window, or viewport\n      // Element: element reference\n      type: [String, Object],\n      default: 'scrollParent'\n    },\n    show: {\n      type: Boolean,\n      default: false\n    },\n    disabled: {\n      type: Boolean,\n      default: false\n    }\n  },\n  watch: {\n    show: function show(_show, old) {\n      if (_show === old) {\n        return;\n      }\n      _show ? this.onOpen() : this.onClose();\n    },\n    disabled: function disabled(_disabled, old) {\n      if (_disabled === old) {\n        return;\n      }\n      _disabled ? this.onDisable() : this.onEnable();\n    }\n  },\n  created: function created() {\n    // Create non-reactive property\n    this._toolpop = null;\n    this._obs_title = null;\n    this._obs_content = null;\n  },\n  mounted: function mounted() {\n    var _this = this;\n\n    // We do this in a next tick to ensure DOM has rendered first\n    this.$nextTick(function () {\n      // Instantiate ToolTip/PopOver on target\n      // The createToolpop method must exist in main component\n      if (_this.createToolpop()) {\n        if (_this.disabled) {\n          // Initially disabled\n          _this.onDisable();\n        }\n        // Listen to open signals from others\n        _this.$on('open', _this.onOpen);\n        // Listen to close signals from others\n        _this.$on('close', _this.onClose);\n        // Listen to disable signals from others\n        _this.$on('disable', _this.onDisable);\n        // Listen to disable signals from others\n        _this.$on('enable', _this.onEnable);\n        // Observe content Child changes so we can notify popper of possible size change\n        _this.setObservers(true);\n        // Set intially open state\n        if (_this.show) {\n          _this.onOpen();\n        }\n      }\n    });\n  },\n  updated: function updated() {\n    // If content/props changes, etc\n    if (this._toolpop) {\n      this._toolpop.updateConfig(this.getConfig());\n    }\n  },\n\n  /* istanbul ignore next: not easy to test */\n  activated: function activated() {\n    // Called when component is inside a <keep-alive> and component brought offline\n    this.setObservers(true);\n  },\n\n  /* istanbul ignore next: not easy to test */\n  deactivated: function deactivated() {\n    // Called when component is inside a <keep-alive> and component taken offline\n    if (this._toolpop) {\n      this.setObservers(false);\n      this._toolpop.hide();\n    }\n  },\n\n  /* istanbul ignore next: not easy to test */\n  beforeDestroy: function beforeDestroy() {\n    // Shutdown our local event listeners\n    this.$off('open', this.onOpen);\n    this.$off('close', this.onClose);\n    this.$off('disable', this.onDisable);\n    this.$off('enable', this.onEnable);\n    this.setObservers(false);\n    // bring our content back if needed\n    this.bringItBack();\n    if (this._toolpop) {\n      this._toolpop.destroy();\n      this._toolpop = null;\n    }\n  },\n\n  computed: {\n    baseConfig: function baseConfig() {\n      var cont = this.container;\n      var delay = _typeof$2(this.delay) === 'object' ? this.delay : parseInt(this.delay, 10) || 0;\n      return {\n        // Title prop\n        title: (this.title || '').trim() || '',\n        // Contnt prop (if popover)\n        content: (this.content || '').trim() || '',\n        // Tooltip/Popover placement\n        placement: PLACEMENTS[this.placement] || 'auto',\n        // Container curently needs to be an ID with '#' prepended, if null then body is used\n        container: cont ? /^#/.test(cont) ? cont : '#' + cont : false,\n        // boundariesElement passed to popper\n        boundary: this.boundary,\n        // Show/Hide delay\n        delay: delay || 0,\n        // Offset can be css distance. if no units, pixels are assumed\n        offset: this.offset || 0,\n        // Disable fade Animation?\n        animation: !this.noFade,\n        // Open/Close Trigger(s)\n        trigger: isArray(this.triggers) ? this.triggers.join(' ') : this.triggers,\n        // Callbacks so we can trigger events on component\n        callbacks: {\n          show: this.onShow,\n          shown: this.onShown,\n          hide: this.onHide,\n          hidden: this.onHidden,\n          enabled: this.onEnabled,\n          disabled: this.onDisabled\n        }\n      };\n    }\n  },\n  methods: {\n    getConfig: function getConfig() {\n      var cfg = assign({}, this.baseConfig);\n      if (this.$refs.title && this.$refs.title.innerHTML.trim()) {\n        // If slot has content, it overrides 'title' prop\n        // We use the DOM node as content to allow components!\n        cfg.title = this.$refs.title;\n        cfg.html = true;\n      }\n      if (this.$refs.content && this.$refs.content.innerHTML.trim()) {\n        // If slot has content, it overrides 'content' prop\n        // We use the DOM node as content to allow components!\n        cfg.content = this.$refs.content;\n        cfg.html = true;\n      }\n      return cfg;\n    },\n    onOpen: function onOpen() {\n      if (this._toolpop) {\n        this._toolpop.show();\n      }\n    },\n    onClose: function onClose(callback) {\n      if (this._toolpop) {\n        this._toolpop.hide(callback);\n      } else if (typeof callback === 'function') {\n        callback();\n      }\n    },\n    onDisable: function onDisable() {\n      if (this._toolpop) {\n        this._toolpop.disable();\n      }\n    },\n    onEnable: function onEnable() {\n      if (this._toolpop) {\n        this._toolpop.enable();\n      }\n    },\n    updatePosition: function updatePosition() {\n      if (this._toolpop) {\n        // Instruct popper to reposition popover if necessary\n        this._toolpop.update();\n      }\n    },\n    getTarget: function getTarget() {\n      var target = this.target;\n      if (typeof target === 'function') {\n        target = target();\n      }\n      if (typeof target === 'string') {\n        // Assume ID of element\n        return getById(target);\n      } else if ((typeof target === 'undefined' ? 'undefined' : _typeof$2(target)) === 'object' && isElement(target.$el)) {\n        // Component reference\n        return target.$el;\n      } else if ((typeof target === 'undefined' ? 'undefined' : _typeof$2(target)) === 'object' && isElement(target)) {\n        // Element reference\n        return target;\n      }\n      return null;\n    },\n    onShow: function onShow(evt) {\n      this.$emit('show', evt);\n    },\n    onShown: function onShown(evt) {\n      this.setObservers(true);\n      this.$emit('update:show', true);\n      this.$emit('shown', evt);\n    },\n    onHide: function onHide(evt) {\n      this.$emit('hide', evt);\n    },\n    onHidden: function onHidden(evt) {\n      this.setObservers(false);\n      // bring our content back if needed to keep Vue happy\n      // Tooltip class will move it back to tip when shown again\n      this.bringItBack();\n      this.$emit('update:show', false);\n      this.$emit('hidden', evt);\n    },\n    onEnabled: function onEnabled(evt) {\n      if (!evt || evt.type !== 'enabled') {\n        // Prevent possible endless loop if user mistakienly fires enabled instead of enable\n        return;\n      }\n      this.$emit('update:disabled', false);\n      this.$emit('disabled');\n    },\n    onDisabled: function onDisabled(evt) {\n      if (!evt || evt.type !== 'disabled') {\n        // Prevent possible endless loop if user mistakienly fires disabled instead of disable\n        return;\n      }\n      this.$emit('update:disabled', true);\n      this.$emit('enabled');\n    },\n    bringItBack: function bringItBack() {\n      // bring our content back if needed to keep Vue happy\n      if (this.$el && this.$refs.title) {\n        this.$el.appendChild(this.$refs.title);\n      }\n      if (this.$el && this.$refs.content) {\n        this.$el.appendChild(this.$refs.content);\n      }\n    },\n\n    /* istanbul ignore next: not easy to test */\n    setObservers: function setObservers(on) {\n      if (on) {\n        if (this.$refs.title) {\n          this._obs_title = observeDOM(this.$refs.title, this.updatePosition.bind(this), OBSERVER_CONFIG$1);\n        }\n        if (this.$refs.content) {\n          this._obs_content = observeDOM(this.$refs.content, this.updatePosition.bind(this), OBSERVER_CONFIG$1);\n        }\n      } else {\n        if (this._obs_title) {\n          this._obs_title.disconnect();\n          this._obs_title = null;\n        }\n        if (this._obs_content) {\n          this._obs_content.disconnect();\n          this._obs_content = null;\n        }\n      }\n    }\n  }\n};\n\nvar bTooltip = {\n  mixins: [toolpopMixin],\n  render: function render(h) {\n    return h('div', { class: ['d-none'], style: { display: 'none' }, attrs: { 'aria-hidden': true } }, [h('div', { ref: 'title' }, this.$slots.default)]);\n  },\n  data: function data() {\n    return {};\n  },\n\n  props: {\n    title: {\n      type: String,\n      default: ''\n    },\n    triggers: {\n      type: [String, Array],\n      default: 'hover focus'\n    },\n    placement: {\n      type: String,\n      default: 'top'\n    }\n  },\n  methods: {\n    createToolpop: function createToolpop() {\n      // getTarget is in toolpop mixin\n      var target = this.getTarget();\n      if (target) {\n        this._toolpop = new ToolTip(target, this.getConfig(), this.$root);\n      } else {\n        this._toolpop = null;\n        warn(\"b-tooltip: 'target' element not found!\");\n      }\n      return this._toolpop;\n    }\n  }\n};\n\nvar script$7 = {\n  components: {\n    bTooltip: bTooltip\n  },\n  inheritAttrs: false\n};\n\n/* script */\nvar __vue_script__$7 = script$7;\n\n/* template */\nvar __vue_render__$7 = function __vue_render__() {\n  var _vm = this;\n  var _h = _vm.$createElement;\n  var _c = _vm._self._c || _h;\n  return _c(\"b-tooltip\", _vm._b({}, \"b-tooltip\", _vm.$attrs, false), [_vm._t(\"default\")], 2);\n};\nvar __vue_staticRenderFns__$7 = [];\n__vue_render__$7._withStripped = true;\n\n/* style */\nvar __vue_inject_styles__$7 = undefined;\n/* scoped */\nvar __vue_scope_id__$7 = undefined;\n/* module identifier */\nvar __vue_module_identifier__$7 = undefined;\n/* functional template */\nvar __vue_is_functional_template__$7 = false;\n/* component normalizer */\nfunction __vue_normalize__$7(template, style, script, scope, functional, moduleIdentifier, createInjector, createInjectorSSR) {\n  var component = (typeof script === 'function' ? script.options : script) || {};\n\n  {\n    component.__file = \"/builds/gitlab-org/gitlab-ui/components/base/tooltip/tooltip.vue\";\n  }\n\n  if (!component.render) {\n    component.render = template.render;\n    component.staticRenderFns = template.staticRenderFns;\n    component._compiled = true;\n\n    if (functional) component.functional = true;\n  }\n\n  component._scopeId = scope;\n\n  return component;\n}\n/* style inject */\nfunction __vue_create_injector__$7() {\n  var head = document.head || document.getElementsByTagName('head')[0];\n  var styles = __vue_create_injector__$7.styles || (__vue_create_injector__$7.styles = {});\n  var isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\\\\b/.test(navigator.userAgent.toLowerCase());\n\n  return function addStyle(id, css) {\n    if (document.querySelector('style[data-vue-ssr-id~=\"' + id + '\"]')) return; // SSR styles are present.\n\n    var group = isOldIE ? css.media || 'default' : id;\n    var style = styles[group] || (styles[group] = { ids: [], parts: [], element: undefined });\n\n    if (!style.ids.includes(id)) {\n      var code = css.source;\n      var index = style.ids.length;\n\n      style.ids.push(id);\n\n      if (isOldIE) {\n        style.element = style.element || document.querySelector('style[data-group=' + group + ']');\n      }\n\n      if (!style.element) {\n        var el = style.element = document.createElement('style');\n        el.type = 'text/css';\n\n        if (css.media) el.setAttribute('media', css.media);\n        if (isOldIE) {\n          el.setAttribute('data-group', group);\n          el.setAttribute('data-next-index', '0');\n        }\n\n        head.appendChild(el);\n      }\n\n      if (isOldIE) {\n        index = parseInt(style.element.getAttribute('data-next-index'));\n        style.element.setAttribute('data-next-index', index + 1);\n      }\n\n      if (style.element.styleSheet) {\n        style.parts.push(code);\n        style.element.styleSheet.cssText = style.parts.filter(Boolean).join('\\n');\n      } else {\n        var textNode = document.createTextNode(code);\n        var nodes = style.element.childNodes;\n        if (nodes[index]) style.element.removeChild(nodes[index]);\n        if (nodes.length) style.element.insertBefore(textNode, nodes[index]);else style.element.appendChild(textNode);\n      }\n    }\n  };\n}\n/* style inject SSR */\n\nvar tooltip = __vue_normalize__$7({ render: __vue_render__$7, staticRenderFns: __vue_staticRenderFns__$7 }, __vue_inject_styles__$7, __vue_script__$7, __vue_scope_id__$7, __vue_is_functional_template__$7, __vue_module_identifier__$7, __vue_create_injector__$7, undefined);\n\nvar allListenTypes = { hover: true, click: true, focus: true };\n\nvar BVBoundListeners = '__BV_boundEventListeners__';\n\nvar bindTargets = function bindTargets(vnode, binding, listenTypes, fn) {\n  var targets = keys(binding.modifiers || {}).filter(function (t) {\n    return !allListenTypes[t];\n  });\n\n  if (binding.value) {\n    targets.push(binding.value);\n  }\n\n  var listener = function listener() {\n    fn({ targets: targets, vnode: vnode });\n  };\n\n  keys(allListenTypes).forEach(function (type) {\n    if (listenTypes[type] || binding.modifiers[type]) {\n      vnode.elm.addEventListener(type, listener);\n      var boundListeners = vnode.elm[BVBoundListeners] || {};\n      boundListeners[type] = boundListeners[type] || [];\n      boundListeners[type].push(listener);\n      vnode.elm[BVBoundListeners] = boundListeners;\n    }\n  });\n\n  // Return the list of targets\n  return targets;\n};\n\nvar unbindTargets = function unbindTargets(vnode, binding, listenTypes) {\n  keys(allListenTypes).forEach(function (type) {\n    if (listenTypes[type] || binding.modifiers[type]) {\n      var boundListeners = vnode.elm[BVBoundListeners] && vnode.elm[BVBoundListeners][type];\n      if (boundListeners) {\n        boundListeners.forEach(function (listener) {\n          return vnode.elm.removeEventListener(type, listener);\n        });\n        delete vnode.elm[BVBoundListeners][type];\n      }\n    }\n  });\n};\n\nvar listenTypes = { click: true };\n\nvar Modal = {\n  // eslint-disable-next-line no-shadow-restricted-names\n  bind: function bind(el, binding, vnode) {\n    bindTargets(vnode, binding, listenTypes, function (_ref) {\n      var targets = _ref.targets,\n          vnode = _ref.vnode;\n\n      targets.forEach(function (target) {\n        vnode.context.$root.$emit('bv::show::modal', target, vnode.elm);\n      });\n    });\n    if (el.tagName !== 'BUTTON') {\n      // If element is not a button, we add `role=\"button\"` for accessibility\n      setAttr(el, 'role', 'button');\n    }\n  },\n  unbind: function unbind(el, binding, vnode) {\n    unbindTargets(vnode, binding, listenTypes);\n    if (el.tagName !== 'BUTTON') {\n      // If element is not a button, we add `role=\"button\"` for accessibility\n      removeAttr(el, 'role', 'button');\n    }\n  }\n};\n\nvar _typeof$3 = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar inBrowser = typeof window !== 'undefined' && typeof document !== 'undefined';\n\n// Key which we use to store tooltip object on element\nvar BVTT = '__BV_ToolTip__';\n\n// Valid event triggers\nvar validTriggers = {\n  'focus': true,\n  'hover': true,\n  'click': true,\n  'blur': true\n\n  // Build a ToolTip config based on bindings (if any)\n  // Arguments and modifiers take precedence over passed value config object\n  /* istanbul ignore next: not easy to test */\n};function parseBindings(bindings) {\n  // We start out with a blank config\n  var config = {};\n\n  // Process bindings.value\n  if (typeof bindings.value === 'string') {\n    // Value is tooltip content (html optionally supported)\n    config.title = bindings.value;\n  } else if (typeof bindings.value === 'function') {\n    // Title generator function\n    config.title = bindings.value;\n  } else if (_typeof$3(bindings.value) === 'object') {\n    // Value is config object, so merge\n    config = assign(bindings.value);\n  }\n\n  // If Argument, assume element ID of container element\n  if (bindings.arg) {\n    // Element ID specified as arg. We must prepend '#' to become a CSS selector\n    config.container = '#' + bindings.arg;\n  }\n\n  // Process modifiers\n  keys(bindings.modifiers).forEach(function (mod) {\n    if (/^html$/.test(mod)) {\n      // Title allows HTML\n      config.html = true;\n    } else if (/^nofade$/.test(mod)) {\n      // no animation\n      config.animation = false;\n    } else if (/^(auto|top(left|right)?|bottom(left|right)?|left(top|bottom)?|right(top|bottom)?)$/.test(mod)) {\n      // placement of tooltip\n      config.placement = mod;\n    } else if (/^(window|viewport)$/.test(mod)) {\n      // bounday of tooltip\n      config.boundary = mod;\n    } else if (/^d\\d+$/.test(mod)) {\n      // delay value\n      var delay = parseInt(mod.slice(1), 10) || 0;\n      if (delay) {\n        config.delay = delay;\n      }\n    } else if (/^o-?\\d+$/.test(mod)) {\n      // offset value. Negative allowed\n      var offset = parseInt(mod.slice(1), 10) || 0;\n      if (offset) {\n        config.offset = offset;\n      }\n    }\n  });\n\n  // Special handling of event trigger modifiers Trigger is a space separated list\n  var selectedTriggers = {};\n\n  // parse current config object trigger\n  var triggers = typeof config.trigger === 'string' ? config.trigger.trim().split(/\\s+/) : [];\n  triggers.forEach(function (trigger) {\n    if (validTriggers[trigger]) {\n      selectedTriggers[trigger] = true;\n    }\n  });\n\n  // Parse Modifiers for triggers\n  keys(validTriggers).forEach(function (trigger) {\n    if (bindings.modifiers[trigger]) {\n      selectedTriggers[trigger] = true;\n    }\n  });\n\n  // Sanitize triggers\n  config.trigger = keys(selectedTriggers).join(' ');\n  if (config.trigger === 'blur') {\n    // Blur by itself is useless, so convert it to 'focus'\n    config.trigger = 'focus';\n  }\n  if (!config.trigger) {\n    // remove trigger config\n    delete config.trigger;\n  }\n\n  return config;\n}\n\n//\n// Add or Update tooltip on our element\n//\n/* istanbul ignore next: not easy to test */\nfunction applyBVTT(el, bindings, vnode) {\n  if (!inBrowser) {\n    return;\n  }\n  if (!Popper) {\n    // Popper is required for tooltips to work\n    warn('v-b-tooltip: Popper.js is required for tooltips to work');\n    return;\n  }\n  if (el[BVTT]) {\n    el[BVTT].updateConfig(parseBindings(bindings));\n  } else {\n    el[BVTT] = new ToolTip(el, parseBindings(bindings), vnode.context.$root);\n  }\n}\n\n//\n// Remove tooltip on our element\n//\n/* istanbul ignore next: not easy to test */\nfunction removeBVTT(el) {\n  if (!inBrowser) {\n    return;\n  }\n  if (el[BVTT]) {\n    el[BVTT].destroy();\n    el[BVTT] = null;\n    delete el[BVTT];\n  }\n}\n\n/*\n * Export our directive\n */\n/* istanbul ignore next: not easy to test */\nvar Tooltip = {\n  bind: function bind(el, bindings, vnode) {\n    applyBVTT(el, bindings, vnode);\n  },\n  inserted: function inserted(el, bindings, vnode) {\n    applyBVTT(el, bindings, vnode);\n  },\n  update: function update(el, bindings, vnode) {\n    if (bindings.value !== bindings.oldValue) {\n      applyBVTT(el, bindings, vnode);\n    }\n  },\n  componentUpdated: function componentUpdated(el, bindings, vnode) {\n    if (bindings.value !== bindings.oldValue) {\n      applyBVTT(el, bindings, vnode);\n    }\n  },\n  unbind: function unbind(el) {\n    removeBVTT(el);\n  }\n};\n\n// Components\n\nexport { link as GlLink, loading_icon as GlLoadingIcon, modal as GlModal, pagination as GlPagination, progress_bar as GlProgressBar, skeleton_loading as GlSkeletonLoading, button as GlButton, tooltip as GlTooltip, Modal as GlModalDirective, Tooltip as GlTooltipDirective };\n"]}