{"version":3,"sources":["webpack:///./node_modules/bootstrap-vue/esm/components/pagination/pagination.js","webpack:///./node_modules/bootstrap-vue/esm/mixins/pagination.js","webpack:///./node_modules/bootstrap-vue/esm/mixins/form-size.js","webpack:///./node_modules/bootstrap-vue/esm/mixins/form-control.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","_watch","_makeModelMixin","defaultValue","validator","modelMixin","mixin","modelProps","MODEL_PROP_NAME","prop","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","data","localLimit","btnSize","concat","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","render","h","_this7","pageNumbers","map","p","_this$paginationParam2","fill","$buttons","isActivePage","noCurrentPage","makeEndBtn","linkTo","btnSlot","btnText","btnClass","pageTest","isDisabled","scope","$btnContent","normalizeSlot","$inner","staticClass","class","attrs","role","tabindex","on","keydown","makeEllipsis","isLast","makePageButton","active","tabIndex","btnContent","content","$firstPageBtn","offset","$lastPageBtn","$pagination","ref","formSizeMixin","sizeFormClass","SELECTOR","autofocus","form","id","required","formControlMixin","mounted","handleAutofocus","activated"],"mappings":"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","file":"js/chunk-5e098e24.05846706.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});","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 `