{"version":3,"sources":["webpack:///./node_modules/bootstrap-vue/esm/components/pagination/pagination.js","webpack:///./node_modules/bootstrap-vue/esm/components/layout/row.js","webpack:///./node_modules/bootstrap-vue/esm/mixins/pagination.js"],"names":["ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","obj","value","configurable","writable","DEFAULT_PER_PAGE","DEFAULT_TOTAL_ROWS","sanitizePerPage","sanitizeTotalRows","props","ariaControls","perPage","totalRows","BPagination","extend","name","mixins","computed","numberOfPages","result","this","pageSizeNumberOfPages","watch","newValue","oldValue","currentPage","localNumberOfPages","created","_this","$nextTick","methods","onClick","event","pageNumber","_this2","clickEvt","cancelable","vueTarget","$emit","type","defaultPrevented","$el","contains","focusCurrent","makePage","pageNum","linkProps","COMMON_ALIGNMENT","computeRowColsClass","breakpoint","cols","join","computeRowColsBreakpoint","prop","replace","rowColsPropList","generateProps","rowColsProps","reduce","alignContent","alignH","alignV","noGutters","tag","BRow","functional","render","h","_ref","_classList$push","data","children","classList","c","concat","staticClass","class","_watch","_makeModelMixin","defaultValue","validator","modelMixin","mixin","modelProps","MODEL_PROP_NAME","MODEL_EVENT_NAME","ELLIPSIS_THRESHOLD","DEFAULT_LIMIT","makePageArray","startNumber","_","number","classes","sanitizeLimit","limit","sanitizeCurrentPage","val","page","onSpaceKey","keyCode","immediatePropagation","currentTarget","click","align","ariaLabel","disabled","ellipsisClass","ellipsisText","firstClass","firstNumber","firstText","hideEllipsis","hideGotoEndButtons","labelFirstPage","labelLastPage","labelNextPage","labelPage","labelPrevPage","lastClass","lastNumber","lastText","nextClass","nextText","pageClass","pills","prevClass","prevText","size","paginationMixin","localLimit","btnSize","alignment","styleClass","computedCurrentPage","paginationParams","showFirstDots","showLastDots","numberOfLinks","lastPageNumber","pageList","_this$paginationParam","pages","idx","_i","_i2","_i3","handleKeyNav","shiftKey","isNav","propagation","focusFirst","focusPrev","focusLast","focusNext","getButtons","btn","find","el","_this3","_this4","reverse","_this5","buttons","index","indexOf","_this6","_this7","pageNumbers","map","p","_this$paginationParam2","fill","$buttons","isActivePage","noCurrentPage","makeEndBtn","linkTo","btnSlot","btnText","btnClass","pageTest","isDisabled","scope","$btnContent","normalizeSlot","$inner","attrs","role","tabindex","on","keydown","makeEllipsis","isLast","makePageButton","active","tabIndex","btnContent","content","$firstPageBtn","offset","$lastPageBtn","$pagination","ref"],"mappings":"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","file":"js/chunk-3ae7e4e2.26112b09.js","sourcesContent":["function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\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\nimport { Vue } from '../../vue';\nimport { NAME_PAGINATION } from '../../constants/components';\nimport { EVENT_NAME_CHANGE, EVENT_NAME_PAGE_CLICK } from '../../constants/events';\nimport { PROP_TYPE_NUMBER_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { BvEvent } from '../../utils/bv-event.class';\nimport { attemptFocus, isVisible } from '../../utils/dom';\nimport { isUndefinedOrNull } from '../../utils/inspect';\nimport { mathCeil, mathMax } from '../../utils/math';\nimport { toInteger } from '../../utils/number';\nimport { sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { MODEL_PROP_NAME, paginationMixin, props as paginationProps } from '../../mixins/pagination'; // --- Constants ---\n\nvar DEFAULT_PER_PAGE = 20;\nvar DEFAULT_TOTAL_ROWS = 0; // --- Helper methods ---\n// Sanitize the provided per page number (converting to a number)\n\nvar sanitizePerPage = function sanitizePerPage(value) {\n return mathMax(toInteger(value) || DEFAULT_PER_PAGE, 1);\n}; // Sanitize the provided total rows number (converting to a number)\n\n\nvar sanitizeTotalRows = function sanitizeTotalRows(value) {\n return mathMax(toInteger(value) || DEFAULT_TOTAL_ROWS, 0);\n}; // --- Props ---\n\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, paginationProps), {}, {\n ariaControls: makeProp(PROP_TYPE_STRING),\n perPage: makeProp(PROP_TYPE_NUMBER_STRING, DEFAULT_PER_PAGE),\n totalRows: makeProp(PROP_TYPE_NUMBER_STRING, DEFAULT_TOTAL_ROWS)\n})), NAME_PAGINATION); // --- Main component ---\n// @vue/component\n\nexport var BPagination = /*#__PURE__*/Vue.extend({\n name: NAME_PAGINATION,\n // The render function is brought in via the `paginationMixin`\n mixins: [paginationMixin],\n props: props,\n computed: {\n numberOfPages: function numberOfPages() {\n var result = mathCeil(sanitizeTotalRows(this.totalRows) / sanitizePerPage(this.perPage));\n return result < 1 ? 1 : result;\n },\n // Used for watching changes to `perPage` and `numberOfPages`\n pageSizeNumberOfPages: function pageSizeNumberOfPages() {\n return {\n perPage: sanitizePerPage(this.perPage),\n totalRows: sanitizeTotalRows(this.totalRows),\n numberOfPages: this.numberOfPages\n };\n }\n },\n watch: {\n pageSizeNumberOfPages: function pageSizeNumberOfPages(newValue, oldValue) {\n if (!isUndefinedOrNull(oldValue)) {\n if (newValue.perPage !== oldValue.perPage && newValue.totalRows === oldValue.totalRows) {\n // If the page size changes, reset to page 1\n this.currentPage = 1;\n } else if (newValue.numberOfPages !== oldValue.numberOfPages && this.currentPage > newValue.numberOfPages) {\n // If `numberOfPages` changes and is less than\n // the `currentPage` number, reset to page 1\n this.currentPage = 1;\n }\n }\n\n this.localNumberOfPages = newValue.numberOfPages;\n }\n },\n created: function created() {\n var _this = this;\n\n // Set the initial page count\n this.localNumberOfPages = this.numberOfPages; // Set the initial page value\n\n var currentPage = toInteger(this[MODEL_PROP_NAME], 0);\n\n if (currentPage > 0) {\n this.currentPage = currentPage;\n } else {\n this.$nextTick(function () {\n // If this value parses to `NaN` or a value less than `1`\n // trigger an initial emit of `null` if no page specified\n _this.currentPage = 0;\n });\n }\n },\n methods: {\n // These methods are used by the render function\n onClick: function onClick(event, pageNumber) {\n var _this2 = this;\n\n // Dont do anything if clicking the current active page\n if (pageNumber === this.currentPage) {\n return;\n }\n\n var target = event.target; // Emit a user-cancelable `page-click` event\n\n var clickEvt = new BvEvent(EVENT_NAME_PAGE_CLICK, {\n cancelable: true,\n vueTarget: this,\n target: target\n });\n this.$emit(clickEvt.type, clickEvt, pageNumber);\n\n if (clickEvt.defaultPrevented) {\n return;\n } // Update the `v-model`\n\n\n this.currentPage = pageNumber; // Emit event triggered by user interaction\n\n this.$emit(EVENT_NAME_CHANGE, this.currentPage); // Keep the current button focused if possible\n\n this.$nextTick(function () {\n if (isVisible(target) && _this2.$el.contains(target)) {\n attemptFocus(target);\n } else {\n _this2.focusCurrent();\n }\n });\n },\n makePage: function makePage(pageNum) {\n return pageNum;\n },\n\n /* istanbul ignore next */\n linkProps: function linkProps() {\n // No props, since we render a plain button\n return {};\n }\n }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\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\nimport { mergeData } from '../../vue';\nimport { NAME_ROW } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_NUMBER_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { arrayIncludes, concat } from '../../utils/array';\nimport { getBreakpointsUpCached } from '../../utils/config';\nimport { identity } from '../../utils/identity';\nimport { memoize } from '../../utils/memoize';\nimport { create, keys, sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable, suffixPropName } from '../../utils/props';\nimport { lowerCase, toString, trim } from '../../utils/string'; // --- Constants ---\n\nvar COMMON_ALIGNMENT = ['start', 'end', 'center']; // --- Helper methods ---\n// Compute a `row-cols-{breakpoint}-{cols}` class name\n// Memoized function for better performance on generating class names\n\nvar computeRowColsClass = memoize(function (breakpoint, cols) {\n cols = trim(toString(cols));\n return cols ? lowerCase(['row-cols', breakpoint, cols].filter(identity).join('-')) : null;\n}); // Get the breakpoint name from the `rowCols` prop name\n// Memoized function for better performance on extracting breakpoint names\n\nvar computeRowColsBreakpoint = memoize(function (prop) {\n return lowerCase(prop.replace('cols', ''));\n}); // Cached copy of the `row-cols` breakpoint prop names\n// Will be populated when the props are generated\n\nvar rowColsPropList = []; // --- Props ---\n// Prop generator for lazy generation of props\n\nexport var generateProps = function generateProps() {\n // i.e. 'row-cols-2', 'row-cols-md-4', 'row-cols-xl-6', ...\n var rowColsProps = getBreakpointsUpCached().reduce(function (props, breakpoint) {\n props[suffixPropName(breakpoint, 'cols')] = makeProp(PROP_TYPE_NUMBER_STRING);\n return props;\n }, create(null)); // Cache the row-cols prop names\n\n rowColsPropList = keys(rowColsProps); // Return the generated props\n\n return makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, rowColsProps), {}, {\n alignContent: makeProp(PROP_TYPE_STRING, null, function (value) {\n return arrayIncludes(concat(COMMON_ALIGNMENT, 'between', 'around', 'stretch'), value);\n }),\n alignH: makeProp(PROP_TYPE_STRING, null, function (value) {\n return arrayIncludes(concat(COMMON_ALIGNMENT, 'between', 'around'), value);\n }),\n alignV: makeProp(PROP_TYPE_STRING, null, function (value) {\n return arrayIncludes(concat(COMMON_ALIGNMENT, 'baseline', 'stretch'), value);\n }),\n noGutters: makeProp(PROP_TYPE_BOOLEAN, false),\n tag: makeProp(PROP_TYPE_STRING, 'div')\n })), NAME_ROW);\n}; // --- Main component ---\n// We do not use `Vue.extend()` here as that would evaluate the props\n// immediately, which we do not want to happen\n// @vue/component\n\nexport var BRow = {\n name: NAME_ROW,\n functional: true,\n\n get props() {\n // Allow props to be lazy evaled on first access and\n // then they become a non-getter afterwards\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/get#Smart_self-overwriting_lazy_getters\n delete this.props;\n this.props = generateProps();\n return this.props;\n },\n\n render: function render(h, _ref) {\n var _classList$push;\n\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var alignV = props.alignV,\n alignH = props.alignH,\n alignContent = props.alignContent; // Loop through row-cols breakpoint props and generate the classes\n\n var classList = [];\n rowColsPropList.forEach(function (prop) {\n var c = computeRowColsClass(computeRowColsBreakpoint(prop), props[prop]); // If a class is returned, push it onto the array\n\n if (c) {\n classList.push(c);\n }\n });\n classList.push((_classList$push = {\n 'no-gutters': props.noGutters\n }, _defineProperty(_classList$push, \"align-items-\".concat(alignV), alignV), _defineProperty(_classList$push, \"justify-content-\".concat(alignH), alignH), _defineProperty(_classList$push, \"align-content-\".concat(alignContent), alignContent), _classList$push));\n return h(props.tag, mergeData(data, {\n staticClass: 'row',\n class: classList\n }), children);\n }\n};","var _watch;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\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\nimport { Vue } from '../vue';\nimport { NAME_PAGINATION } from '../constants/components';\nimport { CODE_DOWN, CODE_LEFT, CODE_RIGHT, CODE_SPACE, CODE_UP } from '../constants/key-codes';\nimport { PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_BOOLEAN, PROP_TYPE_BOOLEAN_NUMBER_STRING, PROP_TYPE_FUNCTION_STRING, PROP_TYPE_NUMBER_STRING, PROP_TYPE_STRING } from '../constants/props';\nimport { SLOT_NAME_ELLIPSIS_TEXT, SLOT_NAME_FIRST_TEXT, SLOT_NAME_LAST_TEXT, SLOT_NAME_NEXT_TEXT, SLOT_NAME_PAGE, SLOT_NAME_PREV_TEXT } from '../constants/slots';\nimport { createArray } from '../utils/array';\nimport { attemptFocus, getActiveElement, getAttr, isDisabled, isVisible, selectAll } from '../utils/dom';\nimport { stopEvent } from '../utils/events';\nimport { isFunction, isNull } from '../utils/inspect';\nimport { mathFloor, mathMax, mathMin } from '../utils/math';\nimport { makeModelMixin } from '../utils/model';\nimport { toInteger } from '../utils/number';\nimport { sortKeys } from '../utils/object';\nimport { hasPropFunction, makeProp, makePropsConfigurable } from '../utils/props';\nimport { toString } from '../utils/string';\nimport { warn } from '../utils/warn';\nimport { normalizeSlotMixin } from '../mixins/normalize-slot';\nimport { BLink } from '../components/link/link'; // Common props, computed, data, render function, and methods\n// for `` and ``\n// --- Constants ---\n\nvar _makeModelMixin = makeModelMixin('value', {\n type: PROP_TYPE_BOOLEAN_NUMBER_STRING,\n defaultValue: null,\n\n /* istanbul ignore next */\n validator: function validator(value) {\n if (!isNull(value) && toInteger(value, 0) < 1) {\n warn('\"v-model\" value must be a number greater than \"0\"', NAME_PAGINATION);\n return false;\n }\n\n return true;\n }\n}),\n modelMixin = _makeModelMixin.mixin,\n modelProps = _makeModelMixin.props,\n MODEL_PROP_NAME = _makeModelMixin.prop,\n MODEL_EVENT_NAME = _makeModelMixin.event;\n\nexport { MODEL_PROP_NAME, MODEL_EVENT_NAME }; // Threshold of limit size when we start/stop showing ellipsis\n\nvar ELLIPSIS_THRESHOLD = 3; // Default # of buttons limit\n\nvar DEFAULT_LIMIT = 5; // --- Helper methods ---\n// Make an array of N to N+X\n\nvar makePageArray = function makePageArray(startNumber, numberOfPages) {\n return createArray(numberOfPages, function (_, i) {\n return {\n number: startNumber + i,\n classes: null\n };\n });\n}; // Sanitize the provided limit value (converting to a number)\n\n\nvar sanitizeLimit = function sanitizeLimit(value) {\n var limit = toInteger(value) || 1;\n return limit < 1 ? DEFAULT_LIMIT : limit;\n}; // Sanitize the provided current page number (converting to a number)\n\n\nvar sanitizeCurrentPage = function sanitizeCurrentPage(val, numberOfPages) {\n var page = toInteger(val) || 1;\n return page > numberOfPages ? numberOfPages : page < 1 ? 1 : page;\n}; // Links don't normally respond to SPACE, so we add that\n// functionality via this handler\n\n\nvar onSpaceKey = function onSpaceKey(event) {\n if (event.keyCode === CODE_SPACE) {\n // Stop page from scrolling\n stopEvent(event, {\n immediatePropagation: true\n }); // Trigger the click event on the link\n\n event.currentTarget.click();\n return false;\n }\n}; // --- Props ---\n\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, modelProps), {}, {\n align: makeProp(PROP_TYPE_STRING, 'left'),\n ariaLabel: makeProp(PROP_TYPE_STRING, 'Pagination'),\n disabled: makeProp(PROP_TYPE_BOOLEAN, false),\n ellipsisClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n ellipsisText: makeProp(PROP_TYPE_STRING, \"\\u2026\"),\n // '…'\n firstClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n firstNumber: makeProp(PROP_TYPE_BOOLEAN, false),\n firstText: makeProp(PROP_TYPE_STRING, \"\\xAB\"),\n // '«'\n hideEllipsis: makeProp(PROP_TYPE_BOOLEAN, false),\n hideGotoEndButtons: makeProp(PROP_TYPE_BOOLEAN, false),\n labelFirstPage: makeProp(PROP_TYPE_STRING, 'Go to first page'),\n labelLastPage: makeProp(PROP_TYPE_STRING, 'Go to last page'),\n labelNextPage: makeProp(PROP_TYPE_STRING, 'Go to next page'),\n labelPage: makeProp(PROP_TYPE_FUNCTION_STRING, 'Go to page'),\n labelPrevPage: makeProp(PROP_TYPE_STRING, 'Go to previous page'),\n lastClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n lastNumber: makeProp(PROP_TYPE_BOOLEAN, false),\n lastText: makeProp(PROP_TYPE_STRING, \"\\xBB\"),\n // '»'\n limit: makeProp(PROP_TYPE_NUMBER_STRING, DEFAULT_LIMIT,\n /* istanbul ignore next */\n function (value) {\n if (toInteger(value, 0) < 1) {\n warn('Prop \"limit\" must be a number greater than \"0\"', NAME_PAGINATION);\n return false;\n }\n\n return true;\n }),\n nextClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n nextText: makeProp(PROP_TYPE_STRING, \"\\u203A\"),\n // '›'\n pageClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n pills: makeProp(PROP_TYPE_BOOLEAN, false),\n prevClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n prevText: makeProp(PROP_TYPE_STRING, \"\\u2039\"),\n // '‹'\n size: makeProp(PROP_TYPE_STRING)\n})), 'pagination'); // --- Mixin ---\n// @vue/component\n\nexport var paginationMixin = Vue.extend({\n mixins: [modelMixin, normalizeSlotMixin],\n props: props,\n data: function data() {\n // `-1` signifies no page initially selected\n var currentPage = toInteger(this[MODEL_PROP_NAME], 0);\n currentPage = currentPage > 0 ? currentPage : -1;\n return {\n currentPage: currentPage,\n localNumberOfPages: 1,\n localLimit: DEFAULT_LIMIT\n };\n },\n computed: {\n btnSize: function btnSize() {\n var size = this.size;\n return size ? \"pagination-\".concat(size) : '';\n },\n alignment: function alignment() {\n var align = this.align;\n\n if (align === 'center') {\n return 'justify-content-center';\n } else if (align === 'end' || align === 'right') {\n return 'justify-content-end';\n } else if (align === 'fill') {\n // The page-items will also have 'flex-fill' added\n // We add text centering to make the button appearance better in fill mode\n return 'text-center';\n }\n\n return '';\n },\n styleClass: function styleClass() {\n return this.pills ? 'b-pagination-pills' : '';\n },\n computedCurrentPage: function computedCurrentPage() {\n return sanitizeCurrentPage(this.currentPage, this.localNumberOfPages);\n },\n paginationParams: function paginationParams() {\n // Determine if we should show the the ellipsis\n var limit = this.localLimit,\n numberOfPages = this.localNumberOfPages,\n currentPage = this.computedCurrentPage,\n hideEllipsis = this.hideEllipsis,\n firstNumber = this.firstNumber,\n lastNumber = this.lastNumber;\n var showFirstDots = false;\n var showLastDots = false;\n var numberOfLinks = limit;\n var startNumber = 1;\n\n if (numberOfPages <= limit) {\n // Special case: Less pages available than the limit of displayed pages\n numberOfLinks = numberOfPages;\n } else if (currentPage < limit - 1 && limit > ELLIPSIS_THRESHOLD) {\n if (!hideEllipsis || lastNumber) {\n showLastDots = true;\n numberOfLinks = limit - (firstNumber ? 0 : 1);\n }\n\n numberOfLinks = mathMin(numberOfLinks, limit);\n } else if (numberOfPages - currentPage + 2 < limit && limit > ELLIPSIS_THRESHOLD) {\n if (!hideEllipsis || firstNumber) {\n showFirstDots = true;\n numberOfLinks = limit - (lastNumber ? 0 : 1);\n }\n\n startNumber = numberOfPages - numberOfLinks + 1;\n } else {\n // We are somewhere in the middle of the page list\n if (limit > ELLIPSIS_THRESHOLD) {\n numberOfLinks = limit - (hideEllipsis ? 0 : 2);\n showFirstDots = !!(!hideEllipsis || firstNumber);\n showLastDots = !!(!hideEllipsis || lastNumber);\n }\n\n startNumber = currentPage - mathFloor(numberOfLinks / 2);\n } // Sanity checks\n\n /* istanbul ignore if */\n\n\n if (startNumber < 1) {\n startNumber = 1;\n showFirstDots = false;\n } else if (startNumber > numberOfPages - numberOfLinks) {\n startNumber = numberOfPages - numberOfLinks + 1;\n showLastDots = false;\n }\n\n if (showFirstDots && firstNumber && startNumber < 4) {\n numberOfLinks = numberOfLinks + 2;\n startNumber = 1;\n showFirstDots = false;\n }\n\n var lastPageNumber = startNumber + numberOfLinks - 1;\n\n if (showLastDots && lastNumber && lastPageNumber > numberOfPages - 3) {\n numberOfLinks = numberOfLinks + (lastPageNumber === numberOfPages - 2 ? 2 : 3);\n showLastDots = false;\n } // Special handling for lower limits (where ellipsis are never shown)\n\n\n if (limit <= ELLIPSIS_THRESHOLD) {\n if (firstNumber && startNumber === 1) {\n numberOfLinks = mathMin(numberOfLinks + 1, numberOfPages, limit + 1);\n } else if (lastNumber && numberOfPages === startNumber + numberOfLinks - 1) {\n startNumber = mathMax(startNumber - 1, 1);\n numberOfLinks = mathMin(numberOfPages - startNumber + 1, numberOfPages, limit + 1);\n }\n }\n\n numberOfLinks = mathMin(numberOfLinks, numberOfPages - startNumber + 1);\n return {\n showFirstDots: showFirstDots,\n showLastDots: showLastDots,\n numberOfLinks: numberOfLinks,\n startNumber: startNumber\n };\n },\n pageList: function pageList() {\n // Generates the pageList array\n var _this$paginationParam = this.paginationParams,\n numberOfLinks = _this$paginationParam.numberOfLinks,\n startNumber = _this$paginationParam.startNumber;\n var currentPage = this.computedCurrentPage; // Generate list of page numbers\n\n var pages = makePageArray(startNumber, numberOfLinks); // We limit to a total of 3 page buttons on XS screens\n // So add classes to page links to hide them for XS breakpoint\n // Note: Ellipsis will also be hidden on XS screens\n // TODO: Make this visual limit configurable based on breakpoint(s)\n\n if (pages.length > 3) {\n var idx = currentPage - startNumber; // THe following is a bootstrap-vue custom utility class\n\n var classes = 'bv-d-xs-down-none';\n\n if (idx === 0) {\n // Keep leftmost 3 buttons visible when current page is first page\n for (var i = 3; i < pages.length; i++) {\n pages[i].classes = classes;\n }\n } else if (idx === pages.length - 1) {\n // Keep rightmost 3 buttons visible when current page is last page\n for (var _i = 0; _i < pages.length - 3; _i++) {\n pages[_i].classes = classes;\n }\n } else {\n // Hide all except current page, current page - 1 and current page + 1\n for (var _i2 = 0; _i2 < idx - 1; _i2++) {\n // hide some left button(s)\n pages[_i2].classes = classes;\n }\n\n for (var _i3 = pages.length - 1; _i3 > idx + 1; _i3--) {\n // hide some right button(s)\n pages[_i3].classes = classes;\n }\n }\n }\n\n return pages;\n }\n },\n watch: (_watch = {}, _defineProperty(_watch, MODEL_PROP_NAME, function (newValue, oldValue) {\n if (newValue !== oldValue) {\n this.currentPage = sanitizeCurrentPage(newValue, this.localNumberOfPages);\n }\n }), _defineProperty(_watch, \"currentPage\", function currentPage(newValue, oldValue) {\n if (newValue !== oldValue) {\n // Emit `null` if no page selected\n this.$emit(MODEL_EVENT_NAME, newValue > 0 ? newValue : null);\n }\n }), _defineProperty(_watch, \"limit\", function limit(newValue, oldValue) {\n if (newValue !== oldValue) {\n this.localLimit = sanitizeLimit(newValue);\n }\n }), _watch),\n created: function created() {\n var _this = this;\n\n // Set our default values in data\n this.localLimit = sanitizeLimit(this.limit);\n this.$nextTick(function () {\n // Sanity check\n _this.currentPage = _this.currentPage > _this.localNumberOfPages ? _this.localNumberOfPages : _this.currentPage;\n });\n },\n methods: {\n handleKeyNav: function handleKeyNav(event) {\n var keyCode = event.keyCode,\n shiftKey = event.shiftKey;\n /* istanbul ignore if */\n\n if (this.isNav) {\n // We disable left/right keyboard navigation in ``\n return;\n }\n\n if (keyCode === CODE_LEFT || keyCode === CODE_UP) {\n stopEvent(event, {\n propagation: false\n });\n shiftKey ? this.focusFirst() : this.focusPrev();\n } else if (keyCode === CODE_RIGHT || keyCode === CODE_DOWN) {\n stopEvent(event, {\n propagation: false\n });\n shiftKey ? this.focusLast() : this.focusNext();\n }\n },\n getButtons: function getButtons() {\n // Return only buttons that are visible\n return selectAll('button.page-link, a.page-link', this.$el).filter(function (btn) {\n return isVisible(btn);\n });\n },\n focusCurrent: function focusCurrent() {\n var _this2 = this;\n\n // We do this in `$nextTick()` to ensure buttons have finished rendering\n this.$nextTick(function () {\n var btn = _this2.getButtons().find(function (el) {\n return toInteger(getAttr(el, 'aria-posinset'), 0) === _this2.computedCurrentPage;\n });\n\n if (!attemptFocus(btn)) {\n // Fallback if current page is not in button list\n _this2.focusFirst();\n }\n });\n },\n focusFirst: function focusFirst() {\n var _this3 = this;\n\n // We do this in `$nextTick()` to ensure buttons have finished rendering\n this.$nextTick(function () {\n var btn = _this3.getButtons().find(function (el) {\n return !isDisabled(el);\n });\n\n attemptFocus(btn);\n });\n },\n focusLast: function focusLast() {\n var _this4 = this;\n\n // We do this in `$nextTick()` to ensure buttons have finished rendering\n this.$nextTick(function () {\n var btn = _this4.getButtons().reverse().find(function (el) {\n return !isDisabled(el);\n });\n\n attemptFocus(btn);\n });\n },\n focusPrev: function focusPrev() {\n var _this5 = this;\n\n // We do this in `$nextTick()` to ensure buttons have finished rendering\n this.$nextTick(function () {\n var buttons = _this5.getButtons();\n\n var index = buttons.indexOf(getActiveElement());\n\n if (index > 0 && !isDisabled(buttons[index - 1])) {\n attemptFocus(buttons[index - 1]);\n }\n });\n },\n focusNext: function focusNext() {\n var _this6 = this;\n\n // We do this in `$nextTick()` to ensure buttons have finished rendering\n this.$nextTick(function () {\n var buttons = _this6.getButtons();\n\n var index = buttons.indexOf(getActiveElement());\n\n if (index < buttons.length - 1 && !isDisabled(buttons[index + 1])) {\n attemptFocus(buttons[index + 1]);\n }\n });\n }\n },\n render: function render(h) {\n var _this7 = this;\n\n var disabled = this.disabled,\n labelPage = this.labelPage,\n ariaLabel = this.ariaLabel,\n isNav = this.isNav,\n numberOfPages = this.localNumberOfPages,\n currentPage = this.computedCurrentPage;\n var pageNumbers = this.pageList.map(function (p) {\n return p.number;\n });\n var _this$paginationParam2 = this.paginationParams,\n showFirstDots = _this$paginationParam2.showFirstDots,\n showLastDots = _this$paginationParam2.showLastDots;\n var fill = this.align === 'fill';\n var $buttons = []; // Helper function and flag\n\n var isActivePage = function isActivePage(pageNumber) {\n return pageNumber === currentPage;\n };\n\n var noCurrentPage = this.currentPage < 1; // Factory function for prev/next/first/last buttons\n\n var makeEndBtn = function makeEndBtn(linkTo, ariaLabel, btnSlot, btnText, btnClass, pageTest, key) {\n var isDisabled = disabled || isActivePage(pageTest) || noCurrentPage || linkTo < 1 || linkTo > numberOfPages;\n var pageNumber = linkTo < 1 ? 1 : linkTo > numberOfPages ? numberOfPages : linkTo;\n var scope = {\n disabled: isDisabled,\n page: pageNumber,\n index: pageNumber - 1\n };\n var $btnContent = _this7.normalizeSlot(btnSlot, scope) || toString(btnText) || h();\n var $inner = h(isDisabled ? 'span' : isNav ? BLink : 'button', {\n staticClass: 'page-link',\n class: {\n 'flex-grow-1': !isNav && !isDisabled && fill\n },\n props: isDisabled || !isNav ? {} : _this7.linkProps(linkTo),\n attrs: {\n role: isNav ? null : 'menuitem',\n type: isNav || isDisabled ? null : 'button',\n tabindex: isDisabled || isNav ? null : '-1',\n 'aria-label': ariaLabel,\n 'aria-controls': _this7.ariaControls || null,\n 'aria-disabled': isDisabled ? 'true' : null\n },\n on: isDisabled ? {} : {\n '!click': function click(event) {\n _this7.onClick(event, linkTo);\n },\n keydown: onSpaceKey\n }\n }, [$btnContent]);\n return h('li', {\n key: key,\n staticClass: 'page-item',\n class: [{\n disabled: isDisabled,\n 'flex-fill': fill,\n 'd-flex': fill && !isNav && !isDisabled\n }, btnClass],\n attrs: {\n role: isNav ? null : 'presentation',\n 'aria-hidden': isDisabled ? 'true' : null\n }\n }, [$inner]);\n }; // Ellipsis factory\n\n\n var makeEllipsis = function makeEllipsis(isLast) {\n return h('li', {\n staticClass: 'page-item',\n class: ['disabled', 'bv-d-xs-down-none', fill ? 'flex-fill' : '', _this7.ellipsisClass],\n attrs: {\n role: 'separator'\n },\n key: \"ellipsis-\".concat(isLast ? 'last' : 'first')\n }, [h('span', {\n staticClass: 'page-link'\n }, [_this7.normalizeSlot(SLOT_NAME_ELLIPSIS_TEXT) || toString(_this7.ellipsisText) || h()])]);\n }; // Page button factory\n\n\n var makePageButton = function makePageButton(page, idx) {\n var pageNumber = page.number;\n var active = isActivePage(pageNumber) && !noCurrentPage; // Active page will have tabindex of 0, or if no current page and first page button\n\n var tabIndex = disabled ? null : active || noCurrentPage && idx === 0 ? '0' : '-1';\n var attrs = {\n role: isNav ? null : 'menuitemradio',\n type: isNav || disabled ? null : 'button',\n 'aria-disabled': disabled ? 'true' : null,\n 'aria-controls': _this7.ariaControls || null,\n 'aria-label': hasPropFunction(labelPage) ?\n /* istanbul ignore next */\n labelPage(pageNumber) : \"\".concat(isFunction(labelPage) ? labelPage() : labelPage, \" \").concat(pageNumber),\n 'aria-checked': isNav ? null : active ? 'true' : 'false',\n 'aria-current': isNav && active ? 'page' : null,\n 'aria-posinset': isNav ? null : pageNumber,\n 'aria-setsize': isNav ? null : numberOfPages,\n // ARIA \"roving tabindex\" method (except in `isNav` mode)\n tabindex: isNav ? null : tabIndex\n };\n var btnContent = toString(_this7.makePage(pageNumber));\n var scope = {\n page: pageNumber,\n index: pageNumber - 1,\n content: btnContent,\n active: active,\n disabled: disabled\n };\n var $inner = h(disabled ? 'span' : isNav ? BLink : 'button', {\n props: disabled || !isNav ? {} : _this7.linkProps(pageNumber),\n staticClass: 'page-link',\n class: {\n 'flex-grow-1': !isNav && !disabled && fill\n },\n attrs: attrs,\n on: disabled ? {} : {\n '!click': function click(event) {\n _this7.onClick(event, pageNumber);\n },\n keydown: onSpaceKey\n }\n }, [_this7.normalizeSlot(SLOT_NAME_PAGE, scope) || btnContent]);\n return h('li', {\n staticClass: 'page-item',\n class: [{\n disabled: disabled,\n active: active,\n 'flex-fill': fill,\n 'd-flex': fill && !isNav && !disabled\n }, page.classes, _this7.pageClass],\n attrs: {\n role: isNav ? null : 'presentation'\n },\n key: \"page-\".concat(pageNumber)\n }, [$inner]);\n }; // Goto first page button\n // Don't render button when `hideGotoEndButtons` or `firstNumber` is set\n\n\n var $firstPageBtn = h();\n\n if (!this.firstNumber && !this.hideGotoEndButtons) {\n $firstPageBtn = makeEndBtn(1, this.labelFirstPage, SLOT_NAME_FIRST_TEXT, this.firstText, this.firstClass, 1, 'pagination-goto-first');\n }\n\n $buttons.push($firstPageBtn); // Goto previous page button\n\n $buttons.push(makeEndBtn(currentPage - 1, this.labelPrevPage, SLOT_NAME_PREV_TEXT, this.prevText, this.prevClass, 1, 'pagination-goto-prev')); // Show first (1) button?\n\n $buttons.push(this.firstNumber && pageNumbers[0] !== 1 ? makePageButton({\n number: 1\n }, 0) : h()); // First ellipsis\n\n $buttons.push(showFirstDots ? makeEllipsis(false) : h()); // Individual page links\n\n this.pageList.forEach(function (page, idx) {\n var offset = showFirstDots && _this7.firstNumber && pageNumbers[0] !== 1 ? 1 : 0;\n $buttons.push(makePageButton(page, idx + offset));\n }); // Last ellipsis\n\n $buttons.push(showLastDots ? makeEllipsis(true) : h()); // Show last page button?\n\n $buttons.push(this.lastNumber && pageNumbers[pageNumbers.length - 1] !== numberOfPages ? makePageButton({\n number: numberOfPages\n }, -1) : h()); // Goto next page button\n\n $buttons.push(makeEndBtn(currentPage + 1, this.labelNextPage, SLOT_NAME_NEXT_TEXT, this.nextText, this.nextClass, numberOfPages, 'pagination-goto-next')); // Goto last page button\n // Don't render button when `hideGotoEndButtons` or `lastNumber` is set\n\n var $lastPageBtn = h();\n\n if (!this.lastNumber && !this.hideGotoEndButtons) {\n $lastPageBtn = makeEndBtn(numberOfPages, this.labelLastPage, SLOT_NAME_LAST_TEXT, this.lastText, this.lastClass, numberOfPages, 'pagination-goto-last');\n }\n\n $buttons.push($lastPageBtn); // Assemble the pagination buttons\n\n var $pagination = h('ul', {\n staticClass: 'pagination',\n class: ['b-pagination', this.btnSize, this.alignment, this.styleClass],\n attrs: {\n role: isNav ? null : 'menubar',\n 'aria-disabled': disabled ? 'true' : 'false',\n 'aria-label': isNav ? null : ariaLabel || null\n },\n // We disable keyboard left/right nav when ``\n on: isNav ? {} : {\n keydown: this.handleKeyNav\n },\n ref: 'ul'\n }, $buttons); // If we are ``, wrap in `