{"version":3,"sources":["webpack:////build/source/node_modules/lodash/_baseClone.js","webpack:////build/source/node_modules/lodash/isSet.js","webpack:////build/source/node_modules/lodash/_initCloneByTag.js","webpack:////build/source/node_modules/lodash/_baseIsSet.js","webpack:////build/source/node_modules/lodash/_baseAssign.js","webpack:///./vue_shared/components/navigation_tabs.vue","webpack:///./vue_shared/components/navigation_tabs.vue?4f88","webpack:///vue_shared/components/navigation_tabs.vue","webpack:///./vue_shared/components/navigation_tabs.vue?11ab","webpack:///./lib/utils/http_status.js","webpack:////build/source/node_modules/lodash/_cloneSymbol.js","webpack:////build/source/node_modules/lodash/_initCloneArray.js","webpack:////build/source/node_modules/lodash/isMap.js","webpack:////build/source/node_modules/lodash/_copySymbols.js","webpack:////build/source/node_modules/lodash/_copySymbolsIn.js","webpack:////build/source/node_modules/lodash/_cloneDataView.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/nav/nav.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/tabs/tabs.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/tabs/tabs/tabs.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/pagination/pagination.js","webpack:////build/source/node_modules/lodash/_baseAssignIn.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/tabs/tab.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/tabs/tab/tab.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/tabs/constants.js","webpack:////build/source/node_modules/lodash/_baseIsMap.js","webpack:////build/source/node_modules/lodash/_cloneRegExp.js"],"names":["Stack","arrayEach","assignValue","baseAssign","baseAssignIn","cloneBuffer","copyArray","copySymbols","copySymbolsIn","getAllKeys","getAllKeysIn","getTag","initCloneArray","initCloneByTag","initCloneObject","isArray","isBuffer","isMap","isObject","isSet","keys","keysIn","cloneableTags","module","exports","baseClone","value","bitmask","customizer","key","object","stack","result","isDeep","isFlat","isFull","undefined","isArr","tag","isFunc","stacked","get","set","forEach","subValue","add","props","baseIsSet","baseUnary","nodeUtil","nodeIsSet","cloneArrayBuffer","cloneDataView","cloneRegExp","cloneSymbol","cloneTypedArray","Ctor","constructor","isObjectLike","copyObject","source","name","components","GlBadge","GlTabs","GlTab","tabs","type","Array","required","scope","String","default","mounted","initScrollingTabs","methods","shouldRenderBadge","count","onTabClick","tab","$emit","component","_vm","this","_c","_self","staticClass","attrs","_l","i","isActive","on","$event","scopedSlots","_u","fn","_v","_s","_e","proxy","HTTP_STATUS_ABORTED","HTTP_STATUS_OK","HTTP_STATUS_CREATED","HTTP_STATUS_NO_CONTENT","HTTP_STATUS_BAD_REQUEST","HTTP_STATUS_UNAUTHORIZED","HTTP_STATUS_FORBIDDEN","HTTP_STATUS_NOT_FOUND","HTTP_STATUS_CONFLICT","HTTP_STATUS_GONE","HTTP_STATUS_PAYLOAD_TOO_LARGE","HTTP_STATUS_UNPROCESSABLE_ENTITY","HTTP_STATUS_TOO_MANY_REQUESTS","HTTP_STATUS_INTERNAL_SERVER_ERROR","successCodes","Symbol","symbolProto","prototype","symbolValueOf","valueOf","symbol","Object","call","hasOwnProperty","array","length","index","input","baseIsMap","nodeIsMap","getSymbols","getSymbolsIn","dataView","buffer","byteOffset","byteLength","align","cardHeader","fill","justified","pills","small","BNav","functional","h","_ref","data","children","class","mixin","modelMixin","modelProps","prop","MODEL_PROP_NAME","event","MODEL_EVENT_NAME","notDisabled","disabled","BVTabButton","inject","getBvTabs","controls","id","noKeyNav","posInSet","setSize","tabIndex","computed","$refs","link","keyCode","shiftKey","indexOf","handleEvent","title","localActive","titleItemClass","titleLinkClass","titleLinkAttributes","$link","active","bvTabs","activeNavItemClass","role","tabindex","click","keydown","ref","normalizeSlot","navProps","activeTabClass","contentClass","end","lazy","navClass","navWrapperClass","noFade","noNavStyle","BTabs","mixins","currentTab","registeredTabs","watch","newValue","oldValue","$tab","activateTab","previousTab","nextTab","map","$nextTick","slice","updateTabs","$_observer","setObserver","push","filter","$t","arguments","disconnect","handler","content","childList","subtree","attributes","attributeFilter","$tabs","order","selector","safeId","join","$el","identity","a","b","getTabs","reverse","find","buttons","$btn","$button","getButtonForTab","$forceUpdate","tabEvent","cancelable","vueTarget","componentId","defaultPrevented","emitTabClick","focus","focusButton","currentIndex","math","firstTab","lastTab","$activeTab","$fallbackTab","$buttons","controlledBy","clickTab","$nav","$children","$empty","$content","validatorHelper","obj","every","val","__vue_script__","GlButton","inheritAttrs","actionPrimary","validator","actionSecondary","actionTertiary","Boolean","syncActiveTabWithQueryParams","queryParamName","Number","activeTabIndex","some","$listeners","handleInput","immediate","syncActiveTabFromQueryParams","window","addEventListener","removeEventListener","buttonBinding","queryParamValue","getQueryParamValue","tabIndexToActivate","findIndex","getTabQueryParamValue","bTabs","URLSearchParams","location","search","currentQueryParamValue","newQueryParamValue","searchParams","history","pushState","pathname","toString","$attrs","setQueryParamValueIfNecessary","__vue_component__","render","_h","$createElement","_g","_b","$slots","slot","_t","primary","text","secondary","tertiary","listeners","staticRenderFns","GlLink","GlIcon","model","x","perPage","totalItems","limits","xs","sm","md","size","linkGen","Function","prevPage","prevText","nextPage","nextText","ellipsisText","labelNav","labelFirstPage","labelPrevPage","labelNextPage","labelLastPage","labelPage","left","includes","breakpoint","getBreakpointSize","minTotalPagesToCollapse","totalPages","isCompactPagination","Math","max","ceil","paginationLimit","classes","center","right","isFillAlign","diff","maxAdjacentPages","items","firstPage","shouldCollapseLeftSide","min","lastPage","shouldCollapseRightSide","from","to","page","getPageItem","splice","getEllipsisItem","pageIsDisabled","prevPageIsDisabled","labelForPage","nextPageIsDisabled","isLinkBased","setBreakpoint","commonAttrs","href","isActivePage","isDisabled","e","handleClick","slotData","side","preventDefault","wrapperClasses","prevPageAriaLabel","prevPageHref","handlePrevious","item","nextPageAriaLabel","nextPageHref","handleNext","MODEL_EVENT_NAME_ACTIVE","buttonId","noBody","BTab","_isTab","card","fade","activate","deactivate","registerTab","updateButton","hasNormalizedSlot","unregisterTab","deactivateTab","tabClasses","directives","computedLazy","mode","computedNoFade","trim","linkClass","reFlags","regexp","exec","lastIndex"],"mappings":"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","file":"commons-pages.projects.environments.folder-pages.projects.environments.k8s-pages.projects.environmen-b90eac25.fe02763c.chunk.js","sourcesContent":["var Stack = require('./_Stack'),\n arrayEach = require('./_arrayEach'),\n assignValue = require('./_assignValue'),\n baseAssign = require('./_baseAssign'),\n baseAssignIn = require('./_baseAssignIn'),\n cloneBuffer = require('./_cloneBuffer'),\n copyArray = require('./_copyArray'),\n copySymbols = require('./_copySymbols'),\n copySymbolsIn = require('./_copySymbolsIn'),\n getAllKeys = require('./_getAllKeys'),\n getAllKeysIn = require('./_getAllKeysIn'),\n getTag = require('./_getTag'),\n initCloneArray = require('./_initCloneArray'),\n initCloneByTag = require('./_initCloneByTag'),\n initCloneObject = require('./_initCloneObject'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isMap = require('./isMap'),\n isObject = require('./isObject'),\n isSet = require('./isSet'),\n keys = require('./keys'),\n keysIn = require('./keysIn');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n}\n\nmodule.exports = baseClone;\n","var baseIsSet = require('./_baseIsSet'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsSet = nodeUtil && nodeUtil.isSet;\n\n/**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\nvar isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\nmodule.exports = isSet;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer'),\n cloneDataView = require('./_cloneDataView'),\n cloneRegExp = require('./_cloneRegExp'),\n cloneSymbol = require('./_cloneSymbol'),\n cloneTypedArray = require('./_cloneTypedArray');\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n}\n\nmodule.exports = initCloneByTag;\n","var getTag = require('./_getTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar setTag = '[object Set]';\n\n/**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\nfunction baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n}\n\nmodule.exports = baseIsSet;\n","var copyObject = require('./_copyObject'),\n keys = require('./keys');\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\nmodule.exports = baseAssign;\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('gl-tabs',{staticClass:\"gl-flex gl-w-full\",attrs:{\"nav-class\":\"!gl-border-0\"}},_vm._l((_vm.tabs),function(tab,i){return _c('gl-tab',{key:i,attrs:{\"title-link-class\":`js-${_vm.scope}-tab-${tab.scope} gl-inline-flex`,\"title-link-attributes\":/* eslint-disable @gitlab/vue-no-new-non-primitive-in-template */ {\n 'data-testid': `${_vm.scope}-tab-${tab.scope}`,\n } /* eslint-enable @gitlab/vue-no-new-non-primitive-in-template */,\"active\":tab.isActive},on:{\"click\":function($event){return _vm.onTabClick(tab)}},scopedSlots:_vm._u([{key:\"title\",fn:function(){return [_c('span',{staticClass:\"gl-mr-2\"},[_vm._v(\" \"+_vm._s(tab.name)+\" \")]),_vm._v(\" \"),(_vm.shouldRenderBadge(tab.count))?_c('gl-badge',{staticClass:\"gl-tab-counter-badge\"},[_vm._v(_vm._s(tab.count))]):_vm._e()]},proxy:true}],null,true)})}),1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--14-0!../../../../../node_modules/babel-loader/lib/index.js??ref--14-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./navigation_tabs.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--14-0!../../../../../node_modules/babel-loader/lib/index.js??ref--14-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./navigation_tabs.vue?vue&type=script&lang=js\"","\n\n \n \n \n {{ tab.name }} \n {{\n tab.count\n }}\n \n \n \n\n","import { render, staticRenderFns } from \"./navigation_tabs.vue?vue&type=template&id=957ef30e\"\nimport script from \"./navigation_tabs.vue?vue&type=script&lang=js\"\nexport * from \"./navigation_tabs.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","export const HTTP_STATUS_ABORTED = 0;\nexport const HTTP_STATUS_OK = 200;\nexport const HTTP_STATUS_CREATED = 201;\nexport const HTTP_STATUS_ACCEPTED = 202;\nexport const HTTP_STATUS_NON_AUTHORITATIVE_INFORMATION = 203;\nexport const HTTP_STATUS_NO_CONTENT = 204;\nexport const HTTP_STATUS_RESET_CONTENT = 205;\nexport const HTTP_STATUS_PARTIAL_CONTENT = 206;\nexport const HTTP_STATUS_MULTI_STATUS = 207;\nexport const HTTP_STATUS_ALREADY_REPORTED = 208;\nexport const HTTP_STATUS_IM_USED = 226;\nexport const HTTP_STATUS_BAD_REQUEST = 400;\nexport const HTTP_STATUS_UNAUTHORIZED = 401;\nexport const HTTP_STATUS_FORBIDDEN = 403;\nexport const HTTP_STATUS_NOT_FOUND = 404;\nexport const HTTP_STATUS_METHOD_NOT_ALLOWED = 405;\nexport const HTTP_STATUS_CONFLICT = 409;\nexport const HTTP_STATUS_GONE = 410;\nexport const HTTP_STATUS_PAYLOAD_TOO_LARGE = 413;\nexport const HTTP_STATUS_IM_A_TEAPOT = 418;\nexport const HTTP_STATUS_UNPROCESSABLE_ENTITY = 422;\nexport const HTTP_STATUS_TOO_MANY_REQUESTS = 429;\nexport const HTTP_STATUS_INTERNAL_SERVER_ERROR = 500;\nexport const HTTP_STATUS_SERVICE_UNAVAILABLE = 503;\n\nexport const successCodes = [\n HTTP_STATUS_OK,\n HTTP_STATUS_CREATED,\n HTTP_STATUS_ACCEPTED,\n HTTP_STATUS_NON_AUTHORITATIVE_INFORMATION,\n HTTP_STATUS_NO_CONTENT,\n HTTP_STATUS_RESET_CONTENT,\n HTTP_STATUS_PARTIAL_CONTENT,\n HTTP_STATUS_MULTI_STATUS,\n HTTP_STATUS_ALREADY_REPORTED,\n HTTP_STATUS_IM_USED,\n];\n","var Symbol = require('./_Symbol');\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\nmodule.exports = cloneSymbol;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\n\nmodule.exports = initCloneArray;\n","var baseIsMap = require('./_baseIsMap'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsMap = nodeUtil && nodeUtil.isMap;\n\n/**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\nvar isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\nmodule.exports = isMap;\n","var copyObject = require('./_copyObject'),\n getSymbols = require('./_getSymbols');\n\n/**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\n\nmodule.exports = copySymbols;\n","var copyObject = require('./_copyObject'),\n getSymbolsIn = require('./_getSymbolsIn');\n\n/**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n}\n\nmodule.exports = copySymbolsIn;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\nmodule.exports = cloneDataView;\n","import { extend, mergeData } from '../../vue';\nimport { NAME_NAV } from '../../constants/components';\nimport { PROP_TYPE_STRING, PROP_TYPE_BOOLEAN } from '../../constants/props';\nimport { makePropsConfigurable, makeProp } from '../../utils/props';\n\n// --- Helper methods ---\n\nconst computeJustifyContent = value => {\n value = value === 'left' ? 'start' : value === 'right' ? 'end' : value;\n return `justify-content-${value}`;\n};\n\n// --- Props ---\n\nconst props = makePropsConfigurable({\n align: makeProp(PROP_TYPE_STRING),\n // Set to `true` if placing in a card header\n cardHeader: makeProp(PROP_TYPE_BOOLEAN, false),\n fill: makeProp(PROP_TYPE_BOOLEAN, false),\n justified: makeProp(PROP_TYPE_BOOLEAN, false),\n pills: makeProp(PROP_TYPE_BOOLEAN, false),\n small: makeProp(PROP_TYPE_BOOLEAN, false),\n tabs: makeProp(PROP_TYPE_BOOLEAN, false),\n tag: makeProp(PROP_TYPE_STRING, 'ul')\n}, NAME_NAV);\n\n// --- Main component ---\n\n// @vue/component\nconst BNav = /*#__PURE__*/extend({\n name: NAME_NAV,\n functional: true,\n props,\n render(h, _ref) {\n let {\n props,\n data,\n children\n } = _ref;\n const {\n tabs,\n pills,\n align,\n cardHeader\n } = props;\n return h(props.tag, mergeData(data, {\n staticClass: 'nav',\n class: {\n 'nav-tabs': tabs,\n 'nav-pills': pills && !tabs,\n 'card-header-tabs': cardHeader && tabs,\n 'card-header-pills': cardHeader && pills && !tabs,\n 'nav-fill': props.fill,\n 'nav-justified': props.justified,\n [computeJustifyContent(align)]: align,\n small: props.small\n }\n }), children);\n }\n});\n\nexport { BNav, props };\n","import { extend, COMPONENT_UID_KEY, REF_FOR_KEY } from '../../vue';\nimport { NAME_TAB_BUTTON_HELPER, NAME_TABS } from '../../constants/components';\nimport { IS_BROWSER } from '../../constants/env';\nimport { EVENT_NAME_CLICK, EVENT_NAME_FIRST, EVENT_NAME_PREV, EVENT_NAME_LAST, EVENT_NAME_NEXT, EVENT_NAME_CHANGED, EVENT_NAME_ACTIVATE_TAB } from '../../constants/events';\nimport { CODE_SPACE, CODE_UP, CODE_LEFT, CODE_HOME, CODE_DOWN, CODE_RIGHT, CODE_END } from '../../constants/key-codes';\nimport { PROP_TYPE_NUMBER, PROP_TYPE_STRING, PROP_TYPE_BOOLEAN, PROP_TYPE_ARRAY_OBJECT_STRING } from '../../constants/props';\nimport { SLOT_NAME_TITLE, SLOT_NAME_TABS_START, SLOT_NAME_TABS_END, SLOT_NAME_EMPTY } from '../../constants/slots';\nimport { arrayIncludes } from '../../utils/array';\nimport { BvEvent } from '../../utils/bv-event.class';\nimport { attemptFocus, selectAll, requestAF } from '../../utils/dom';\nimport { stopEvent } from '../../utils/events';\nimport { identity } from '../../utils/identity';\nimport { isEvent } from '../../utils/inspect';\nimport { looseEqual } from '../../utils/loose-equal';\nimport { mathMax } from '../../utils/math';\nimport { makeModelMixin } from '../../utils/model';\nimport { toInteger } from '../../utils/number';\nimport { omit, sortKeys } from '../../utils/object';\nimport { observeDom } from '../../utils/observe-dom';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { stableSort } from '../../utils/stable-sort';\nimport { props as props$2, idMixin } from '../../mixins/id';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { BLink } from '../link/link';\nimport { props as props$1, BNav } from '../nav/nav';\n\n// --- Constants ---\n\nconst {\n mixin: modelMixin,\n props: modelProps,\n prop: MODEL_PROP_NAME,\n event: MODEL_EVENT_NAME\n} = makeModelMixin('value', {\n type: PROP_TYPE_NUMBER\n});\n\n// --- Helper methods ---\n\n// Filter function to filter out disabled tabs\nconst notDisabled = tab => !tab.disabled;\n\n// --- Helper components ---\n\n// @vue/component\nconst BVTabButton = /*#__PURE__*/extend({\n name: NAME_TAB_BUTTON_HELPER,\n inject: {\n getBvTabs: {\n default: /* istanbul ignore next */() => () => ({})\n }\n },\n props: {\n controls: makeProp(PROP_TYPE_STRING),\n id: makeProp(PROP_TYPE_STRING),\n noKeyNav: makeProp(PROP_TYPE_BOOLEAN, false),\n posInSet: makeProp(PROP_TYPE_NUMBER),\n setSize: makeProp(PROP_TYPE_NUMBER),\n // Reference to the child instance\n tab: makeProp(),\n tabIndex: makeProp(PROP_TYPE_NUMBER)\n },\n computed: {\n bvTabs() {\n return this.getBvTabs();\n }\n },\n methods: {\n focus() {\n attemptFocus(this.$refs.link);\n },\n handleEvent(event) {\n /* istanbul ignore next */\n if (this.tab.disabled) {\n return;\n }\n const {\n type,\n keyCode,\n shiftKey\n } = event;\n if (type === 'click') {\n stopEvent(event);\n this.$emit(EVENT_NAME_CLICK, event);\n } else if (type === 'keydown' && keyCode === CODE_SPACE) {\n // For ARIA tabs the SPACE key will also trigger a click/select\n // Even with keyboard navigation disabled, SPACE should \"click\" the button\n // See: https://github.com/bootstrap-vue/bootstrap-vue/issues/4323\n stopEvent(event);\n this.$emit(EVENT_NAME_CLICK, event);\n } else if (type === 'keydown' && !this.noKeyNav) {\n // For keyboard navigation\n if ([CODE_UP, CODE_LEFT, CODE_HOME].indexOf(keyCode) !== -1) {\n stopEvent(event);\n if (shiftKey || keyCode === CODE_HOME) {\n this.$emit(EVENT_NAME_FIRST, event);\n } else {\n this.$emit(EVENT_NAME_PREV, event);\n }\n } else if ([CODE_DOWN, CODE_RIGHT, CODE_END].indexOf(keyCode) !== -1) {\n stopEvent(event);\n if (shiftKey || keyCode === CODE_END) {\n this.$emit(EVENT_NAME_LAST, event);\n } else {\n this.$emit(EVENT_NAME_NEXT, event);\n }\n }\n }\n }\n },\n render(h) {\n const {\n id,\n tabIndex,\n setSize,\n posInSet,\n controls,\n handleEvent\n } = this;\n const {\n title,\n localActive,\n disabled,\n titleItemClass,\n titleLinkClass,\n titleLinkAttributes\n } = this.tab;\n const $link = h(BLink, {\n staticClass: 'nav-link',\n class: [{\n active: localActive && !disabled,\n disabled\n }, titleLinkClass,\n // Apply `activeNavItemClass` styles when the tab is active\n localActive ? this.bvTabs.activeNavItemClass : null],\n props: {\n disabled\n },\n attrs: {\n ...titleLinkAttributes,\n id,\n role: 'tab',\n // Roving tab index when keynav enabled\n tabindex: tabIndex,\n 'aria-selected': localActive && !disabled ? 'true' : 'false',\n 'aria-setsize': setSize,\n 'aria-posinset': posInSet,\n 'aria-controls': controls\n },\n on: {\n click: handleEvent,\n keydown: handleEvent\n },\n ref: 'link'\n }, [this.tab.normalizeSlot(SLOT_NAME_TITLE) || title]);\n return h('li', {\n staticClass: 'nav-item',\n class: [titleItemClass],\n attrs: {\n role: 'presentation'\n }\n }, [$link]);\n }\n});\n\n// --- Props ---\n\nconst navProps = omit(props$1, ['tabs', 'cardHeader']);\nconst props = makePropsConfigurable(sortKeys({\n ...props$2,\n ...modelProps,\n ...navProps,\n // Only applied to the currently active ``\n activeNavItemClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n // Only applied to the currently active ``\n // This prop is sniffed by the `` child\n activeTabClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n contentClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n // Synonym for 'bottom'\n end: makeProp(PROP_TYPE_BOOLEAN, false),\n // This prop is sniffed by the `` child\n lazy: makeProp(PROP_TYPE_BOOLEAN, false),\n navClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n navWrapperClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n noFade: makeProp(PROP_TYPE_BOOLEAN, false),\n noKeyNav: makeProp(PROP_TYPE_BOOLEAN, false),\n noNavStyle: makeProp(PROP_TYPE_BOOLEAN, false),\n tag: makeProp(PROP_TYPE_STRING, 'div')\n}), NAME_TABS);\n\n// --- Main component ---\n\n// @vue/component\nconst BTabs = /*#__PURE__*/extend({\n name: NAME_TABS,\n mixins: [idMixin, modelMixin, normalizeSlotMixin],\n provide() {\n return {\n getBvTabs: () => this\n };\n },\n props,\n data() {\n return {\n // Index of current tab\n currentTab: toInteger(this[MODEL_PROP_NAME], -1),\n // Array of direct child `` instances, in DOM order\n tabs: [],\n // Array of child instances registered (for triggering reactive updates)\n registeredTabs: []\n };\n },\n computed: {\n fade() {\n // This computed prop is sniffed by the tab child\n return !this.noFade;\n }\n },\n watch: {\n [MODEL_PROP_NAME](newValue, oldValue) {\n if (newValue !== oldValue) {\n newValue = toInteger(newValue, -1);\n oldValue = toInteger(oldValue, 0);\n const $tab = this.tabs[newValue];\n if ($tab && !$tab.disabled) {\n this.activateTab($tab);\n } else {\n // Try next or prev tabs\n if (newValue < oldValue) {\n this.previousTab();\n } else {\n this.nextTab();\n }\n }\n }\n },\n currentTab(newValue) {\n let index = -1;\n\n // Ensure only one tab is active at most\n this.tabs.forEach(($tab, i) => {\n if (i === newValue && !$tab.disabled) {\n $tab.localActive = true;\n index = i;\n } else {\n $tab.localActive = false;\n }\n });\n\n // Update the v-model\n this.$emit(MODEL_EVENT_NAME, index);\n },\n // If tabs added, removed, or re-ordered, we emit a `changed` event\n tabs(newValue, oldValue) {\n // We use `_uid` instead of `safeId()`, as the later is changed in a `$nextTick()`\n // if no explicit ID is provided, causing duplicate emits\n if (!looseEqual(newValue.map($tab => $tab[COMPONENT_UID_KEY]), oldValue.map($tab => $tab[COMPONENT_UID_KEY]))) {\n // In a `$nextTick()` to ensure `currentTab` has been set first\n this.$nextTick(() => {\n // We emit shallow copies of the new and old arrays of tabs,\n // to prevent users from potentially mutating the internal arrays\n this.$emit(EVENT_NAME_CHANGED, newValue.slice(), oldValue.slice());\n });\n }\n },\n // Each `` will register/unregister itself\n // We use this to detect when tabs are added/removed\n // to trigger the update of the tabs\n registeredTabs() {\n this.updateTabs();\n }\n },\n created() {\n // Create private non-reactive props\n this.$_observer = null;\n },\n mounted() {\n this.setObserver(true);\n },\n beforeDestroy() {\n this.setObserver(false);\n // Ensure no references to child instances exist\n this.tabs = [];\n },\n methods: {\n registerTab($tab) {\n if (!arrayIncludes(this.registeredTabs, $tab)) {\n this.registeredTabs.push($tab);\n }\n },\n unregisterTab($tab) {\n this.registeredTabs = this.registeredTabs.slice().filter($t => $t !== $tab);\n },\n // DOM observer is needed to detect changes in order of tabs\n setObserver() {\n let on = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n this.$_observer && this.$_observer.disconnect();\n this.$_observer = null;\n if (on) {\n /* istanbul ignore next: difficult to test mutation observer in JSDOM */\n const handler = () => {\n this.$nextTick(() => {\n requestAF(() => {\n this.updateTabs();\n });\n });\n };\n\n // Watch for changes to `` sub components\n this.$_observer = observeDom(this.$refs.content, handler, {\n childList: true,\n subtree: false,\n attributes: true,\n attributeFilter: ['id']\n });\n }\n },\n getTabs() {\n const $tabs = this.registeredTabs;\n // Dropped intentionally\n // .filter(\n // $tab => $tab.$children.filter($t => $t && $t._isTab).length === 0\n // )\n\n // DOM Order of Tabs\n let order = [];\n /* istanbul ignore next: too difficult to test */\n if (IS_BROWSER && $tabs.length > 0) {\n // We rely on the DOM when mounted to get the \"true\" order of the `` children\n // `querySelectorAll()` always returns elements in document order, regardless of\n // order specified in the selector\n const selector = $tabs.map($tab => `#${$tab.safeId()}`).join(', ');\n order = selectAll(selector, this.$el).map($el => $el.id).filter(identity);\n }\n\n // Stable sort keeps the original order if not found in the `order` array,\n // which will be an empty array before mount\n return stableSort($tabs, (a, b) => order.indexOf(a.safeId()) - order.indexOf(b.safeId()));\n },\n updateTabs() {\n const $tabs = this.getTabs();\n\n // Find last active non-disabled tab in current tabs\n // We trust tab state over `currentTab`, in case tabs were added/removed/re-ordered\n let tabIndex = $tabs.indexOf($tabs.slice().reverse().find($tab => $tab.localActive && !$tab.disabled));\n\n // Else try setting to `currentTab`\n if (tabIndex < 0) {\n const {\n currentTab\n } = this;\n if (currentTab >= $tabs.length) {\n // Handle last tab being removed, so find the last non-disabled tab\n tabIndex = $tabs.indexOf($tabs.slice().reverse().find(notDisabled));\n } else if ($tabs[currentTab] && !$tabs[currentTab].disabled) {\n // Current tab is not disabled\n tabIndex = currentTab;\n }\n }\n\n // Else find first non-disabled tab in current tabs\n if (tabIndex < 0) {\n tabIndex = $tabs.indexOf($tabs.find(notDisabled));\n }\n\n // Ensure only one tab is active at a time\n $tabs.forEach(($tab, index) => {\n $tab.localActive = index === tabIndex;\n });\n this.tabs = $tabs;\n this.currentTab = tabIndex;\n },\n // Find a button that controls a tab, given the tab reference\n // Returns the button vm instance\n getButtonForTab($tab) {\n return (this.$refs.buttons || []).find($btn => $btn.tab === $tab);\n },\n // Force a button to re-render its content, given a `` instance\n // Called by `` on `update()`\n updateButton($tab) {\n const $button = this.getButtonForTab($tab);\n if ($button && $button.$forceUpdate) {\n $button.$forceUpdate();\n }\n },\n // Activate a tab given a `` instance\n // Also accessed by ``\n activateTab($tab) {\n const {\n currentTab,\n tabs: $tabs\n } = this;\n let result = false;\n if ($tab) {\n const index = $tabs.indexOf($tab);\n if (index !== currentTab && index > -1 && !$tab.disabled) {\n const tabEvent = new BvEvent(EVENT_NAME_ACTIVATE_TAB, {\n cancelable: true,\n vueTarget: this,\n componentId: this.safeId()\n });\n this.$emit(tabEvent.type, index, currentTab, tabEvent);\n if (!tabEvent.defaultPrevented) {\n this.currentTab = index;\n result = true;\n }\n }\n }\n\n // Couldn't set tab, so ensure v-model is up to date\n /* istanbul ignore next: should rarely happen */\n if (!result && this[MODEL_PROP_NAME] !== currentTab) {\n this.$emit(MODEL_EVENT_NAME, currentTab);\n }\n return result;\n },\n // Deactivate a tab given a `` instance\n // Accessed by ``\n deactivateTab($tab) {\n if ($tab) {\n // Find first non-disabled tab that isn't the one being deactivated\n // If no tabs are available, then don't deactivate current tab\n return this.activateTab(this.tabs.filter($t => $t !== $tab).find(notDisabled));\n }\n /* istanbul ignore next: should never/rarely happen */\n return false;\n },\n // Focus a tab button given its `` instance\n focusButton($tab) {\n // Wrap in `$nextTick()` to ensure DOM has completed rendering\n this.$nextTick(() => {\n attemptFocus(this.getButtonForTab($tab));\n });\n },\n // Emit a click event on a specified `` component instance\n emitTabClick(tab, event) {\n if (isEvent(event) && tab && tab.$emit && !tab.disabled) {\n tab.$emit(EVENT_NAME_CLICK, event);\n }\n },\n // Click handler\n clickTab($tab, event) {\n this.activateTab($tab);\n this.emitTabClick($tab, event);\n },\n // Move to first non-disabled tab\n firstTab(focus) {\n const $tab = this.tabs.find(notDisabled);\n if (this.activateTab($tab) && focus) {\n this.focusButton($tab);\n this.emitTabClick($tab, focus);\n }\n },\n // Move to previous non-disabled tab\n previousTab(focus) {\n const currentIndex = mathMax(this.currentTab, 0);\n const $tab = this.tabs.slice(0, currentIndex).reverse().find(notDisabled);\n if (this.activateTab($tab) && focus) {\n this.focusButton($tab);\n this.emitTabClick($tab, focus);\n }\n },\n // Move to next non-disabled tab\n nextTab(focus) {\n const currentIndex = mathMax(this.currentTab, -1);\n const $tab = this.tabs.slice(currentIndex + 1).find(notDisabled);\n if (this.activateTab($tab) && focus) {\n this.focusButton($tab);\n this.emitTabClick($tab, focus);\n }\n },\n // Move to last non-disabled tab\n lastTab(focus) {\n const $tab = this.tabs.slice().reverse().find(notDisabled);\n if (this.activateTab($tab) && focus) {\n this.focusButton($tab);\n this.emitTabClick($tab, focus);\n }\n }\n },\n render(h) {\n const {\n align,\n end,\n fill,\n firstTab,\n justified,\n lastTab,\n nextTab,\n noKeyNav,\n noNavStyle,\n pills,\n previousTab,\n small,\n tabs: $tabs\n } = this;\n\n // Currently active tab\n const $activeTab = $tabs.find($tab => $tab.localActive && !$tab.disabled);\n\n // Tab button to allow focusing when no active tab found (keynav only)\n const $fallbackTab = $tabs.find($tab => !$tab.disabled);\n\n // For each `` found create the tab buttons\n const $buttons = $tabs.map(($tab, index) => {\n const {\n safeId\n } = $tab;\n\n // Ensure at least one tab button is focusable when keynav enabled (if possible)\n let tabIndex = null;\n if (!noKeyNav) {\n // Buttons are not in tab index unless active, or a fallback tab\n tabIndex = -1;\n if ($tab === $activeTab || !$activeTab && $tab === $fallbackTab) {\n // Place tab button in tab sequence\n tabIndex = null;\n }\n }\n return h(BVTabButton, {\n props: {\n controls: safeId ? safeId() : null,\n id: $tab.controlledBy || (safeId ? safeId(`_BV_tab_button_`) : null),\n noKeyNav,\n posInSet: index + 1,\n setSize: $tabs.length,\n tab: $tab,\n tabIndex\n },\n on: {\n [EVENT_NAME_CLICK]: event => {\n this.clickTab($tab, event);\n },\n [EVENT_NAME_FIRST]: firstTab,\n [EVENT_NAME_PREV]: previousTab,\n [EVENT_NAME_NEXT]: nextTab,\n [EVENT_NAME_LAST]: lastTab\n },\n key: $tab[COMPONENT_UID_KEY] || index,\n ref: 'buttons',\n // Needed to make `this.$refs.buttons` an array\n [REF_FOR_KEY]: true\n });\n });\n let $nav = h(BNav, {\n class: this.navClass,\n attrs: {\n role: 'tablist',\n id: this.safeId('_BV_tab_controls_')\n },\n props: {\n fill,\n justified,\n align,\n tabs: !noNavStyle && !pills,\n pills: !noNavStyle && pills,\n small\n },\n ref: 'nav'\n }, [this.normalizeSlot(SLOT_NAME_TABS_START) || h(), $buttons, this.normalizeSlot(SLOT_NAME_TABS_END) || h()]);\n $nav = h('div', {\n class: this.navWrapperClass,\n key: 'bv-tabs-nav'\n }, [$nav]);\n const $children = this.normalizeSlot() || [];\n let $empty = h();\n if ($children.length === 0) {\n $empty = h('div', {\n class: ['tab-pane', 'active'],\n key: 'bv-empty-tab'\n }, this.normalizeSlot(SLOT_NAME_EMPTY));\n }\n const $content = h('div', {\n staticClass: 'tab-content',\n class: this.contentClass,\n attrs: {\n id: this.safeId('_BV_tab_container_')\n },\n key: 'bv-content',\n ref: 'content'\n }, [$children, $empty]);\n\n // Render final output\n return h(this.tag, {\n staticClass: 'tabs',\n attrs: {\n id: this.safeId()\n }\n }, [end ? $content : h(), $nav, end ? h() : $content]);\n }\n});\n\nexport { BTabs, props };\n","import { BTabs } from '../../../../vendor/bootstrap-vue/src/components/tabs/tabs';\nimport { tabsButtonDefaults } from '../../../../utils/constants';\nimport GlButton from '../../button/button';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\n//\nconst validatorHelper = obj => Object.keys(obj).every(val => val === 'text' || val === 'attributes');\nvar script = {\n name: 'GlTabs',\n components: {\n BTabs,\n GlButton\n },\n inheritAttrs: false,\n props: {\n actionPrimary: {\n type: Object,\n required: false,\n default: null,\n validator: obj => validatorHelper(obj)\n },\n actionSecondary: {\n type: Object,\n required: false,\n default: null,\n validator: obj => validatorHelper(obj)\n },\n actionTertiary: {\n type: Object,\n required: false,\n default: null,\n validator: obj => validatorHelper(obj)\n },\n contentClass: {\n type: [String, Array, Object],\n required: false,\n default: null\n },\n navClass: {\n type: [String, Array, Object],\n required: false,\n default: null\n },\n justified: {\n type: Boolean,\n required: false,\n default: false\n },\n /**\n * Sync active tab with query string parameters. Allows for deep linking into specific tabs.\n */\n syncActiveTabWithQueryParams: {\n type: Boolean,\n required: false,\n default: false\n },\n /**\n * Name to use for query string parameter.\n */\n queryParamName: {\n type: String,\n required: false,\n default: 'tab'\n },\n value: {\n type: Number,\n required: false,\n default: 0\n }\n },\n data() {\n return {\n activeTabIndex: 0\n };\n },\n computed: {\n hasActions() {\n return [this.actionPrimary, this.actionSecondary, this.actionTertiary].some(Boolean);\n },\n listeners() {\n return {\n ...this.$listeners,\n input: this.handleInput\n };\n }\n },\n watch: {\n value: {\n handler(newValue) {\n if (this.activeTabIndex !== newValue) {\n this.activeTabIndex = newValue;\n }\n },\n immediate: true\n }\n },\n mounted() {\n if (this.syncActiveTabWithQueryParams) {\n this.syncActiveTabFromQueryParams();\n window.addEventListener('popstate', this.syncActiveTabFromQueryParams);\n }\n\n // Because we are manually binding `value` attribute to `b-tabs` the `input`\n // event is no longer automatically fired when the component is mounted.\n // To maintain parity with original `b-tabs` functionality\n // we manually fire the `input` event when the component is mounted.\n this.$emit('input', this.activeTabIndex);\n },\n destroyed() {\n window.removeEventListener('popstate', this.syncActiveTabFromQueryParams);\n },\n methods: {\n buttonBinding(prop, name) {\n if (!prop.attributes) {\n return tabsButtonDefaults[name];\n }\n return prop.attributes;\n },\n primary() {\n this.$emit('primary');\n },\n secondary() {\n this.$emit('secondary');\n },\n tertiary() {\n this.$emit('tertiary');\n },\n /**\n * When the query parameter is updated, update the active tab to match.\n */\n async syncActiveTabFromQueryParams() {\n await this.$nextTick();\n const queryParamValue = this.getQueryParamValue();\n const tabIndexToActivate = this.getTabs().findIndex((tab, tabIndex) => this.getTabQueryParamValue(tabIndex) === queryParamValue);\n this.activeTabIndex = tabIndexToActivate !== -1 ? tabIndexToActivate : 0;\n },\n /**\n * Returns a list of all instances associated with this tab control.\n */\n getTabs() {\n return this.$refs.bTabs.getTabs();\n },\n /**\n * Get the value of the query param as defined by the `queryParamName` prop.\n */\n getQueryParamValue() {\n const searchParams = new URLSearchParams(window.location.search);\n return searchParams.get(this.queryParamName);\n },\n /**\n * Set the value of the query param as defined by the `queryParamName` prop.\n * This method does nothing if the query param is already up to date.\n */\n setQueryParamValueIfNecessary(tabIndex) {\n const currentQueryParamValue = this.getQueryParamValue();\n const newQueryParamValue = this.getTabQueryParamValue(tabIndex);\n\n // If the current query parameter is already up-to-date,\n // avoid creating a duplicate history entry.\n if (tabIndex === 0 && !currentQueryParamValue || tabIndex !== 0 && currentQueryParamValue === newQueryParamValue) {\n return;\n }\n const searchParams = new URLSearchParams(window.location.search);\n searchParams.set(this.queryParamName, newQueryParamValue);\n window.history.pushState({}, '', `${window.location.pathname}?${searchParams.toString()}`);\n },\n /**\n * Returns the query param value for a tab.\n * Defaults to the tab index unless the `query-param-value` attribute is set.\n */\n getTabQueryParamValue(tabIndex) {\n const tab = this.getTabs()[tabIndex];\n return (tab === null || tab === void 0 ? void 0 : tab.$attrs['query-param-value']) || tabIndex.toString();\n },\n /**\n * Event handler for `input` event.\n */\n handleInput(tabIndex) {\n this.$emit('input', tabIndex);\n this.activeTabIndex = tabIndex;\n if (this.syncActiveTabWithQueryParams) {\n this.setQueryParamValueIfNecessary(tabIndex);\n }\n }\n }\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-tabs',_vm._g(_vm._b({ref:\"bTabs\",staticClass:\"gl-tabs\",attrs:{\"no-nav-style\":true,\"no-fade\":true,\"active-nav-item-class\":\"gl-tab-nav-item-active\",\"content-class\":[_vm.contentClass, 'gl-tab-content'],\"nav-class\":[_vm.navClass, 'gl-tabs-nav'],\"justified\":_vm.justified,\"value\":_vm.activeTabIndex},scopedSlots:_vm._u([_vm._l((Object.keys(_vm.$slots)),function(slot){return {key:slot,fn:function(){return [_vm._t(slot)]},proxy:true}}),(_vm.hasActions)?{key:\"tabs-start\",fn:function(){return [_c('div',{staticClass:\"gl-actions-tabs-start\",attrs:{\"data-testid\":\"actions-tabs-start\"}},[(_vm.actionPrimary)?_c('gl-button',_vm._b({attrs:{\"data-testid\":\"action-primary\"},on:{\"click\":_vm.primary}},'gl-button',_vm.buttonBinding(_vm.actionPrimary, 'actionPrimary'),false),[_vm._v(\"\\n \"+_vm._s(_vm.actionPrimary.text)+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.actionSecondary)?_c('gl-button',_vm._b({attrs:{\"data-testid\":\"action-secondary\"},on:{\"click\":_vm.secondary}},'gl-button',_vm.buttonBinding(_vm.actionSecondary, 'actionSecondary'),false),[_vm._v(\"\\n \"+_vm._s(_vm.actionSecondary.text)+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.actionTertiary)?_c('gl-button',_vm._b({attrs:{\"data-testid\":\"action-tertiary\"},on:{\"click\":_vm.tertiary}},'gl-button',_vm.buttonBinding(_vm.actionTertiary, 'actionTertiary'),false),[_vm._v(\"\\n \"+_vm._s(_vm.actionTertiary.text)+\"\\n \")]):_vm._e()],1)]},proxy:true}:null,(_vm.hasActions)?{key:\"tabs-end\",fn:function(){return [_c('div',{staticClass:\"gl-actions-tabs-end\",attrs:{\"data-testid\":\"actions-tabs-end\"}},[(_vm.actionPrimary)?_c('gl-button',_vm._b({attrs:{\"data-testid\":\"action-primary\"},on:{\"click\":_vm.primary}},'gl-button',_vm.buttonBinding(_vm.actionPrimary, 'actionPrimary'),false),[_vm._v(\"\\n \"+_vm._s(_vm.actionPrimary.text)+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.actionSecondary)?_c('gl-button',_vm._b({attrs:{\"data-testid\":\"action-secondary\"},on:{\"click\":_vm.secondary}},'gl-button',_vm.buttonBinding(_vm.actionSecondary, 'actionSecondary'),false),[_vm._v(\"\\n \"+_vm._s(_vm.actionSecondary.text)+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.actionTertiary)?_c('gl-button',_vm._b({attrs:{\"data-testid\":\"action-tertiary\"},on:{\"click\":_vm.tertiary}},'gl-button',_vm.buttonBinding(_vm.actionTertiary, 'actionTertiary'),false),[_vm._v(\"\\n \"+_vm._s(_vm.actionTertiary.text)+\"\\n \")]):_vm._e()],1)]},proxy:true}:null],null,true)},'b-tabs',_vm.$attrs,false),_vm.listeners))};\nvar __vue_staticRenderFns__ = [];\n\n /* style */\n const __vue_inject_styles__ = undefined;\n /* scoped */\n const __vue_scope_id__ = undefined;\n /* module identifier */\n const __vue_module_identifier__ = undefined;\n /* functional template */\n const __vue_is_functional_template__ = false;\n /* style inject */\n \n /* style inject SSR */\n \n /* style inject shadow dom */\n \n\n \n const __vue_component__ = __vue_normalize__(\n { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n __vue_inject_styles__,\n __vue_script__,\n __vue_scope_id__,\n __vue_is_functional_template__,\n __vue_module_identifier__,\n false,\n undefined,\n undefined,\n undefined\n );\n\nexport default __vue_component__;\n","import debounce from 'lodash/debounce';\nimport isFunction from 'lodash/isFunction';\nimport range from 'lodash/range';\nimport { breakpoints, GlBreakpointInstance } from '../../../utils/breakpoints';\nimport { alignOptions, resizeDebounceTime } from '../../../utils/constants';\nimport { translate, sprintf } from '../../../utils/i18n';\nimport GlIcon from '../icon/icon';\nimport GlLink from '../link/link';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\n//\nconst pageRange = (from, to) => range(from, to + 1, 1);\nvar script = {\n name: 'Pagination',\n components: {\n GlLink,\n GlIcon\n },\n model: {\n prop: 'value',\n event: 'input'\n },\n props: {\n value: {\n type: Number,\n required: false,\n default: 1,\n validator: x => x > 0\n },\n /**\n * Number of items per page\n */\n perPage: {\n type: Number,\n required: false,\n default: 20,\n validator: x => x > 0\n },\n /**\n * Total number of items\n */\n totalItems: {\n type: Number,\n required: false,\n default: 0\n },\n /**\n * The object must contain the xs, sm, md and default keys\n */\n limits: {\n type: Object,\n required: false,\n default: () => ({\n xs: 0,\n sm: 3,\n md: 9,\n default: 9\n }),\n validator: value => {\n const missingSizes = Object.keys(breakpoints).filter(size => !value[size]).length;\n return missingSizes === 0 ? true : value.default;\n }\n },\n /**\n * A function that receives the page number and that returns a string representing the page URL\n */\n linkGen: {\n type: Function,\n required: false,\n default: null\n },\n /**\n * When using the compact pagination, use this prop to pass the previous page number\n */\n prevPage: {\n type: Number,\n required: false,\n default: null\n },\n /**\n * Text for the previous button (overridden by \"previous\" slot)\n */\n prevText: {\n type: String,\n required: false,\n default: translate('GlPagination.prevText', 'Previous')\n },\n /**\n * When using the compact pagination, use this prop to pass the next page number\n */\n nextPage: {\n type: Number,\n required: false,\n default: null\n },\n /**\n * Text for the next button (overridden by \"next\" slot)\n */\n nextText: {\n type: String,\n required: false,\n default: translate('GlPagination.nextText', 'Next')\n },\n /**\n * Text for the ellipsis (overridden by \"ellipsis-left\" and \"ellipsis-right\" slots)\n */\n ellipsisText: {\n type: String,\n required: false,\n default: '…'\n },\n /**\n * aria-label for the nav\n */\n labelNav: {\n type: String,\n required: false,\n default: translate('GlPagination.nav', 'Pagination')\n },\n /**\n * aria-label for the first page item\n */\n labelFirstPage: {\n type: String,\n required: false,\n default: translate('GlPagination.labelFirstPage', 'Go to first page')\n },\n /**\n * aria-label for the previous page item\n */\n labelPrevPage: {\n type: String,\n required: false,\n default: translate('GlPagination.labelPrevPage', 'Go to previous page')\n },\n /**\n * aria-label for the next page item\n */\n labelNextPage: {\n type: String,\n required: false,\n default: translate('GlPagination.labelNextPage', 'Go to next page')\n },\n /**\n * aria-label for the last page item\n */\n labelLastPage: {\n type: String,\n required: false,\n default: translate('GlPagination.labelLastPage', 'Go to last page')\n },\n /**\n * aria-label getter for numbered page items, defaults to \"Go to page \"\n */\n labelPage: {\n // note: `Function` support is for legacy reasons\n type: [Function, String],\n required: false,\n default: translate('GlPagination.labelPage', 'Go to page %{page}')\n },\n /**\n * Controls the component\\'s horizontal alignment, value should be one of \"left\", \"center\", \"right\" or \"fill\"\n */\n align: {\n type: String,\n required: false,\n default: alignOptions.left,\n validator: value => Object.keys(alignOptions).includes(value)\n },\n disabled: {\n type: Boolean,\n required: false,\n default: false\n }\n },\n data() {\n return {\n breakpoint: GlBreakpointInstance.getBreakpointSize(),\n // If total pages count is below or equal to minTotalPagesToCollapse, collapsing is disabled\n minTotalPagesToCollapse: 4\n };\n },\n computed: {\n isVisible() {\n return this.totalPages > 1 || this.isCompactPagination;\n },\n isLinkBased() {\n return isFunction(this.linkGen);\n },\n paginationLimit() {\n return typeof this.limits[this.breakpoint] !== 'undefined' ? this.limits[this.breakpoint] : this.limits.default;\n },\n maxAdjacentPages() {\n return Math.max(Math.ceil((this.paginationLimit - 1) / 2), 0);\n },\n totalPages() {\n return Math.ceil(this.totalItems / this.perPage);\n },\n isFillAlign() {\n return this.align === alignOptions.fill;\n },\n wrapperClasses() {\n const classes = [];\n if (this.align === alignOptions.center) {\n classes.push('gl-justify-center');\n }\n if (this.align === alignOptions.right) {\n classes.push('gl-justify-end');\n }\n if (this.isFillAlign) {\n classes.push('gl-text-center');\n }\n return classes;\n },\n shouldCollapseLeftSide() {\n const diff = this.value - this.maxAdjacentPages;\n\n // Magic 3: prevents collapsing a single page on the left side\n return diff >= this.maxAdjacentPages && diff > 3 && this.totalPages > this.minTotalPagesToCollapse;\n },\n shouldCollapseRightSide() {\n // Magic 2: prevents collapsing a single page on the right side\n const diff = this.totalPages - 2 - this.value;\n return diff > this.maxAdjacentPages && this.totalPages > this.minTotalPagesToCollapse;\n },\n visibleItems() {\n let items = [];\n if (!this.isCompactPagination) {\n let firstPage = this.shouldCollapseLeftSide ? this.value - this.maxAdjacentPages : 1;\n // If we're on last page, show at least one page to the left\n firstPage = Math.min(firstPage, this.totalPages - 1);\n let lastPage = this.shouldCollapseRightSide ? this.value + this.maxAdjacentPages : this.totalPages;\n // If we're on first page, show at least one page to the right\n lastPage = Math.max(lastPage, 2);\n\n // Default numbered items\n items = pageRange(firstPage, lastPage).map(page => this.getPageItem(page));\n if (this.shouldCollapseLeftSide) {\n items.splice(0, 0, this.getPageItem(1, this.labelFirstPage), this.getEllipsisItem('left'));\n }\n if (this.shouldCollapseRightSide) {\n items.push(this.getEllipsisItem('right'), this.getPageItem(this.totalPages, this.labelLastPage));\n }\n }\n return items;\n },\n isCompactPagination() {\n return Boolean(!this.totalItems && (this.prevPage || this.nextPage));\n },\n prevPageIsDisabled() {\n return this.pageIsDisabled(this.value - 1);\n },\n nextPageIsDisabled() {\n return this.pageIsDisabled(this.value + 1);\n },\n prevPageAriaLabel() {\n return this.prevPageIsDisabled ? false : this.labelPrevPage || this.labelForPage(this.value - 1);\n },\n nextPageAriaLabel() {\n return this.nextPageIsDisabled ? false : this.labelNextPage || this.labelForPage(this.value + 1);\n },\n prevPageHref() {\n if (this.prevPageIsDisabled) return false;\n if (this.isLinkBased) return this.linkGen(this.value - 1);\n return '#';\n },\n nextPageHref() {\n if (this.nextPageIsDisabled) return false;\n if (this.isLinkBased) return this.linkGen(this.value + 1);\n return '#';\n }\n },\n created() {\n window.addEventListener('resize', debounce(this.setBreakpoint, resizeDebounceTime));\n },\n beforeDestroy() {\n window.removeEventListener('resize', debounce(this.setBreakpoint, resizeDebounceTime));\n },\n methods: {\n labelForPage(page) {\n if (isFunction(this.labelPage)) {\n return this.labelPage(page);\n }\n return sprintf(this.labelPage, {\n page\n });\n },\n setBreakpoint() {\n this.breakpoint = GlBreakpointInstance.getBreakpointSize();\n },\n pageIsDisabled(page) {\n return this.disabled || page < 1 || this.isCompactPagination && page > this.value && !this.nextPage || !this.isCompactPagination && page > this.totalPages;\n },\n getPageItem(page) {\n let label = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n const commonAttrs = {\n 'aria-label': label || this.labelForPage(page),\n href: '#',\n class: []\n };\n const isActivePage = page === this.value;\n const isDisabled = this.pageIsDisabled(page);\n const attrs = {\n ...commonAttrs\n };\n const listeners = {};\n if (isActivePage) {\n attrs.class.push('active');\n attrs['aria-current'] = 'page';\n }\n // Disable previous and/or next buttons if needed\n if (this.isLinkBased) {\n attrs.href = this.linkGen(page);\n }\n listeners.click = e => this.handleClick(e, page);\n return {\n content: page,\n component: isDisabled ? 'span' : GlLink,\n disabled: isDisabled,\n key: `page_${page}`,\n slot: 'page-number',\n slotData: {\n page,\n active: isActivePage,\n disabled: isDisabled\n },\n attrs,\n listeners\n };\n },\n getEllipsisItem(side) {\n return {\n content: this.ellipsisText,\n key: `ellipsis_${side}`,\n slot: `ellipsis-${side}`,\n component: 'span',\n disabled: true,\n slotData: {},\n listeners: {}\n };\n },\n handleClick(event, value) {\n if (!this.isLinkBased) {\n event.preventDefault();\n /**\n * Emitted when the page changes\n * @event input\n * @arg {number} value The page that just got loaded\n */\n this.$emit('input', value);\n }\n },\n handlePrevious(event, value) {\n this.handleClick(event, value);\n /**\n * Emitted when the \"previous\" button is clicked\n * @event previous\n */\n this.$emit('previous');\n },\n handleNext(event, value) {\n this.handleClick(event, value);\n /**\n * Emitted when the \"next\" button is clicked\n * @event next\n */\n this.$emit('next');\n }\n }\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.isVisible)?_c('nav',{staticClass:\"gl-pagination\",attrs:{\"aria-label\":_vm.labelNav}},[_c('ul',{class:_vm.wrapperClasses},[_c('li',{class:{\n disabled: _vm.prevPageIsDisabled,\n 'gl-flex-auto': _vm.isFillAlign,\n },attrs:{\"aria-disabled\":_vm.prevPageIsDisabled,\"aria-hidden\":_vm.prevPageIsDisabled,\"data-testid\":\"gl-pagination-li\"}},[_c(_vm.prevPageIsDisabled ? 'span' : 'a',{tag:\"component\",staticClass:\"gl-pagination-item\",attrs:{\"data-testid\":\"gl-pagination-prev\",\"aria-label\":_vm.prevPageAriaLabel,\"href\":_vm.prevPageHref},on:{\"click\":function($event){!_vm.prevPageIsDisabled ? _vm.handlePrevious($event, _vm.value - 1) : null;}}},[_vm._t(\"previous\",function(){return [_c('gl-icon',{attrs:{\"name\":\"chevron-left\"}}),_vm._v(\" \"),_c('span',{staticClass:\"gl-hidden sm:gl-block\"},[_vm._v(_vm._s(_vm.prevText))])]},null,{ page: _vm.value - 1, disabled: _vm.prevPageIsDisabled })],2)],1),_vm._v(\" \"),_vm._l((_vm.visibleItems),function(item){return _c('li',{key:item.key,class:{\n disabled: item.disabled,\n 'gl-flex-auto': _vm.isFillAlign,\n },attrs:{\"data-testid\":\"gl-pagination-li\"}},[_c(item.component,_vm._g(_vm._b({tag:\"component\",staticClass:\"gl-pagination-item\",attrs:{\"data-testid\":\"gl-pagination-item\",\"size\":\"md\",\"aria-disabled\":item.disabled}},'component',item.attrs,false),item.listeners),[_vm._t(item.slot,function(){return [_vm._v(_vm._s(item.content))]},null,item.slotData)],2)],1)}),_vm._v(\" \"),_c('li',{class:{\n disabled: _vm.nextPageIsDisabled,\n 'gl-flex-auto': _vm.isFillAlign,\n },attrs:{\"aria-disabled\":_vm.nextPageIsDisabled,\"aria-hidden\":_vm.nextPageIsDisabled,\"data-testid\":\"gl-pagination-li\"}},[_c(_vm.nextPageIsDisabled ? 'span' : 'a',{tag:\"component\",staticClass:\"gl-pagination-item\",attrs:{\"data-testid\":\"gl-pagination-next\",\"aria-label\":_vm.nextPageAriaLabel,\"href\":_vm.nextPageHref},on:{\"click\":function($event){!_vm.nextPageIsDisabled ? _vm.handleNext($event, _vm.value + 1) : null;}}},[_vm._t(\"next\",function(){return [_c('span',{staticClass:\"gl-hidden sm:gl-block\"},[_vm._v(_vm._s(_vm.nextText))]),_vm._v(\" \"),_c('gl-icon',{attrs:{\"name\":\"chevron-right\"}})]},null,{ page: _vm.value + 1, disabled: _vm.nextPageIsDisabled })],2)],1)],2)]):_vm._e()};\nvar __vue_staticRenderFns__ = [];\n\n /* style */\n const __vue_inject_styles__ = undefined;\n /* scoped */\n const __vue_scope_id__ = undefined;\n /* module identifier */\n const __vue_module_identifier__ = undefined;\n /* functional template */\n const __vue_is_functional_template__ = false;\n /* style inject */\n \n /* style inject SSR */\n \n /* style inject shadow dom */\n \n\n \n const __vue_component__ = __vue_normalize__(\n { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n __vue_inject_styles__,\n __vue_script__,\n __vue_scope_id__,\n __vue_is_functional_template__,\n __vue_module_identifier__,\n false,\n undefined,\n undefined,\n undefined\n );\n\nexport default __vue_component__;\n","var copyObject = require('./_copyObject'),\n keysIn = require('./keysIn');\n\n/**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n}\n\nmodule.exports = baseAssignIn;\n","import { extend } from '../../vue';\nimport { NAME_TAB } from '../../constants/components';\nimport { MODEL_EVENT_NAME_PREFIX } from '../../constants/events';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING, PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_OBJECT } from '../../constants/props';\nimport { SLOT_NAME_TITLE } from '../../constants/slots';\nimport { sortKeys } from '../../utils/object';\nimport { makePropsConfigurable, makeProp } from '../../utils/props';\nimport { props as props$1, idMixin } from '../../mixins/id';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { BVTransition } from '../transition/bv-transition';\n\n// --- Constants ---\n\nconst MODEL_PROP_NAME_ACTIVE = 'active';\nconst MODEL_EVENT_NAME_ACTIVE = MODEL_EVENT_NAME_PREFIX + MODEL_PROP_NAME_ACTIVE;\n\n// --- Props ---\n\nconst props = makePropsConfigurable(sortKeys({\n ...props$1,\n [MODEL_PROP_NAME_ACTIVE]: makeProp(PROP_TYPE_BOOLEAN, false),\n buttonId: makeProp(PROP_TYPE_STRING),\n disabled: makeProp(PROP_TYPE_BOOLEAN, false),\n lazy: makeProp(PROP_TYPE_BOOLEAN, false),\n noBody: makeProp(PROP_TYPE_BOOLEAN, false),\n tag: makeProp(PROP_TYPE_STRING, 'div'),\n title: makeProp(PROP_TYPE_STRING),\n // Sniffed by `` and added to nav `li.nav-item`\n titleItemClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n titleLinkAttributes: makeProp(PROP_TYPE_OBJECT),\n // Sniffed by `` and added to nav `a.nav-link`\n titleLinkClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING)\n}), NAME_TAB);\n\n// --- Main component ---\n\n// @vue/component\nconst BTab = /*#__PURE__*/extend({\n name: NAME_TAB,\n mixins: [idMixin, normalizeSlotMixin],\n inject: {\n getBvTabs: {\n default: () => () => ({})\n }\n },\n props,\n data() {\n return {\n localActive: this[MODEL_PROP_NAME_ACTIVE] && !this.disabled\n };\n },\n computed: {\n bvTabs() {\n return this.getBvTabs();\n },\n // For parent sniffing of child\n _isTab() {\n return true;\n },\n tabClasses() {\n const {\n localActive: active,\n disabled\n } = this;\n return [{\n active,\n disabled,\n 'card-body': this.bvTabs.card && !this.noBody\n },\n // Apply `activeTabClass` styles when this tab is active\n active ? this.bvTabs.activeTabClass : null];\n },\n controlledBy() {\n return this.buttonId || this.safeId('__BV_tab_button__');\n },\n computedNoFade() {\n return !(this.bvTabs.fade || false);\n },\n computedLazy() {\n return this.bvTabs.lazy || this.lazy;\n }\n },\n watch: {\n [MODEL_PROP_NAME_ACTIVE](newValue, oldValue) {\n if (newValue !== oldValue) {\n if (newValue) {\n // If activated post mount\n this.activate();\n } else {\n /* istanbul ignore next */\n if (!this.deactivate()) {\n // Tab couldn't be deactivated, so we reset the synced active prop\n // Deactivation will fail if no other tabs to activate\n this.$emit(MODEL_EVENT_NAME_ACTIVE, this.localActive);\n }\n }\n }\n },\n disabled(newValue, oldValue) {\n if (newValue !== oldValue) {\n const {\n firstTab\n } = this.bvTabs;\n if (newValue && this.localActive && firstTab) {\n this.localActive = false;\n firstTab();\n }\n }\n },\n localActive(newValue) {\n // Make `active` prop work with `.sync` modifier\n this.$emit(MODEL_EVENT_NAME_ACTIVE, newValue);\n }\n },\n mounted() {\n // Inform `` of our presence\n this.registerTab();\n },\n updated() {\n // Force the tab button content to update (since slots are not reactive)\n // Only done if we have a title slot, as the title prop is reactive\n const {\n updateButton\n } = this.bvTabs;\n if (updateButton && this.hasNormalizedSlot(SLOT_NAME_TITLE)) {\n updateButton(this);\n }\n },\n beforeDestroy() {\n // Inform `` of our departure\n this.unregisterTab();\n },\n methods: {\n // Private methods\n registerTab() {\n // Inform `` of our presence\n const {\n registerTab\n } = this.bvTabs;\n if (registerTab) {\n registerTab(this);\n }\n },\n unregisterTab() {\n // Inform `` of our departure\n const {\n unregisterTab\n } = this.bvTabs;\n if (unregisterTab) {\n unregisterTab(this);\n }\n },\n // Public methods\n activate() {\n // Not inside a `` component or tab is disabled\n const {\n activateTab\n } = this.bvTabs;\n return activateTab && !this.disabled ? activateTab(this) : false;\n },\n deactivate() {\n // Not inside a `` component or not active to begin with\n const {\n deactivateTab\n } = this.bvTabs;\n return deactivateTab && this.localActive ? deactivateTab(this) : false;\n }\n },\n render(h) {\n const {\n localActive\n } = this;\n const $content = h(this.tag, {\n staticClass: 'tab-pane',\n class: this.tabClasses,\n directives: [{\n name: 'show',\n value: localActive\n }],\n attrs: {\n role: 'tabpanel',\n id: this.safeId(),\n 'aria-hidden': localActive ? 'false' : 'true',\n 'aria-labelledby': this.controlledBy || null\n },\n ref: 'panel'\n },\n // Render content lazily if requested\n [localActive || !this.computedLazy ? this.normalizeSlot() : h()]);\n return h(BVTransition, {\n props: {\n mode: 'out-in',\n noFade: this.computedNoFade\n }\n }, [$content]);\n }\n});\n\nexport { BTab, props };\n","import isPlainObject from 'lodash/isPlainObject';\nimport { BTab } from '../../../../vendor/bootstrap-vue/src/components/tabs/tab';\nimport { DEFAULT_TAB_TITLE_LINK_CLASS } from '../constants';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\n//\nvar script = {\n name: 'GlTab',\n components: {\n BTab\n },\n inheritAttrs: false,\n props: {\n titleLinkClass: {\n type: [String, Array, Object],\n required: false,\n default: ''\n },\n /**\n * Query string parameter value to use when `gl-tabs` `sync-active-tab-with-query-params` prop is set to `true`.\n */\n queryParamValue: {\n type: String,\n required: false,\n default: null\n }\n },\n computed: {\n linkClass() {\n const {\n titleLinkClass\n } = this;\n if (Array.isArray(titleLinkClass)) {\n return [...titleLinkClass, DEFAULT_TAB_TITLE_LINK_CLASS];\n }\n if (isPlainObject(titleLinkClass)) {\n return {\n ...titleLinkClass,\n [DEFAULT_TAB_TITLE_LINK_CLASS]: true\n };\n }\n return `${titleLinkClass} ${DEFAULT_TAB_TITLE_LINK_CLASS}`.trim();\n }\n }\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-tab',_vm._g(_vm._b({attrs:{\"title-link-class\":_vm.linkClass,\"query-param-value\":_vm.queryParamValue},scopedSlots:_vm._u([_vm._l((Object.keys(_vm.$slots)),function(slot){return {key:slot,fn:function(){return [_vm._t(slot)]},proxy:true}})],null,true)},'b-tab',_vm.$attrs,false),_vm.$listeners))};\nvar __vue_staticRenderFns__ = [];\n\n /* style */\n const __vue_inject_styles__ = undefined;\n /* scoped */\n const __vue_scope_id__ = undefined;\n /* module identifier */\n const __vue_module_identifier__ = undefined;\n /* functional template */\n const __vue_is_functional_template__ = false;\n /* style inject */\n \n /* style inject SSR */\n \n /* style inject shadow dom */\n \n\n \n const __vue_component__ = __vue_normalize__(\n { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n __vue_inject_styles__,\n __vue_script__,\n __vue_scope_id__,\n __vue_is_functional_template__,\n __vue_module_identifier__,\n false,\n undefined,\n undefined,\n undefined\n );\n\nexport default __vue_component__;\n","const DEFAULT_TAB_TITLE_LINK_CLASS = 'gl-tab-nav-item';\n\nexport { DEFAULT_TAB_TITLE_LINK_CLASS };\n","var getTag = require('./_getTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]';\n\n/**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\nfunction baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n}\n\nmodule.exports = baseIsMap;\n","/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\nmodule.exports = cloneRegExp;\n"],"sourceRoot":""}