{"version":3,"sources":["webpack:///./node_modules/bootstrap-vue/esm/utils/stringify-object-values.js","webpack:///./node_modules/bootstrap-vue/esm/components/form/form.js","webpack:///./node_modules/core-js/modules/es.string.split.js","webpack:///./node_modules/bootstrap-vue/esm/components/pagination/pagination.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-bottom-row.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-busy.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-empty.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/sanitize-row.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/stringify-record-values.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-filtering.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-pagination.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-provider.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-selectable.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-sorting.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/default-sort-compare.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-top-row.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/table.js","webpack:///./node_modules/core-js/internals/species-constructor.js","webpack:///./node_modules/bootstrap-vue/esm/utils/stable-sort.js","webpack:///./node_modules/bootstrap-vue/esm/mixins/pagination.js"],"names":["stringifyObjectValues","value","sort","map","k","filter","v","join","props","id","inline","novalidate","validated","BForm","extend","name","functional","render","h","_ref","data","children","class","attrs","fixRegExpWellKnownSymbolLogic","isRegExp","anObject","requireObjectCoercible","speciesConstructor","advanceStringIndex","toLength","callRegExpExec","regexpExec","fails","arrayPush","push","min","Math","MAX_UINT32","SUPPORTS_Y","RegExp","SPLIT","nativeSplit","maybeCallNative","internalSplit","split","length","separator","limit","string","String","this","lim","undefined","call","match","lastIndex","lastLength","output","flags","ignoreCase","multiline","unicode","sticky","lastLastIndex","separatorCopy","source","slice","index","apply","test","O","splitter","regexp","res","done","rx","S","C","unicodeMatching","p","q","A","e","z","i","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","sym","getOwnPropertyDescriptor","enumerable","_objectSpread","target","arguments","forEach","key","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","obj","configurable","writable","DEFAULT_PER_PAGE","DEFAULT_TOTAL_ROWS","sanitizePerPage","sanitizeTotalRows","ariaControls","perPage","totalRows","BPagination","mixins","computed","numberOfPages","result","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","bottomRowMixin","renderBottomRow","fields","computedFields","stacked","tbodyTrClass","tbodyTrAttr","$createElement","hasNormalizedSlot","staticClass","normalizeSlot","columns","MODEL_PROP_NAME_BUSY","MODEL_EVENT_NAME_BUSY","busyMixin","localBusy","computedBusy","stopIfBusy","renderBusy","colspan","emptyFilteredHtml","emptyFilteredText","emptyHtml","emptyText","showEmpty","emptyMixin","renderEmpty","items","computedItems","$empty","isFiltered","domProps","html","role","row","ignoreFields","includeFields","fieldsObj","formattedRow","reduce","field","filterByFormatted","formatter","allowedKeys","array","_toConsumableArray","arr","_arrayWithoutHoles","_iterableToArray","_unsupportedIterableToArray","_nonIterableSpread","TypeError","o","minLen","_arrayLikeToArray","n","prototype","toString","constructor","Array","from","iter","Symbol","iterator","isArray","len","arr2","DEBOUNCE_DEPRECATED_MSG","concat","filterDebounce","filterFunction","filterIgnoredFields","filterIncludedFields","filteringMixin","localFilter","filterSanitize","computedFilterIgnored","identity","computedFilterIncluded","computedFilterDebounce","ms","warn","localFiltering","hasProvider","noProviderFiltering","filteredCheck","filteredItems","localItems","localFilterFn","criteria","filterFn","filterFnFactory","defaultFilterFnFactory","$_filterTimer","clearFilterTimer","deep","handler","newCriteria","timeout","setTimeout","Boolean","beforeDestroy","clearTimeout","fn","item","_this3","regExp","pattern","replace","computedFieldsObj","paginationMixin","localPaging","noProviderPaging","paginatedItems","sortedItems","math","ROOT_EVENT_NAME_REFRESHED","ROOT_ACTION_EVENT_NAME_REFRESH","apiUrl","noProviderSorting","providerMixin","providerTriggerContext","ctx","sortBy","sortDesc","localSortBy","localSortDesc","_providerUpdate","mounted","listenOnRoot","refresh","$off","$on","clearSelected","_providerSetLocal","emitOnRoot","context","then","message","_props","_watch","SELECT_MODES","noSelectOnClick","selectMode","selectable","selectedVariant","selectableMixin","selectedRows","selectedLastRow","isSelectable","hasSelectableRowClick","supportsSelectableRows","selectableHasSelection","some","selectableIsMultiSelect","selectableTableClasses","selectableTableAttrs","equal","setSelectionHandlers","_selectedRows","idx","beforeMount","selectRow","isRowSelected","selectedLastClicked","unselectRow","selectAllRows","selectableRowClasses","variant","dark","selectableRowAttrs","on","method","selectionHandler","selected","shiftKey","ctrlKey","metaKey","a","b","_ref$sortBy","_ref$formatter","_ref$locale","locale","_ref$localeOptions","localeOptions","_ref$nullLast","nullLast","aa","get","bb","localeCompare","MODEL_PROP_NAME_SORT_BY","MODEL_EVENT_NAME_SORT_BY","MODEL_PROP_NAME_SORT_DESC","MODEL_EVENT_NAME_SORT_DESC","SORT_DIRECTION_ASC","SORT_DIRECTION_DESC","SORT_DIRECTION_LAST","SORT_DIRECTIONS","labelSortAsc","labelSortClear","labelSortDesc","noFooterSorting","noLocalSorting","noSortReset","numeric","sortingMixin","localSorting","isSortable","f","sortable","sortCompareLocale","sortNullLast","sortCompare","sortCompareOptions","usage","sortByFormatted","getFieldFormatter","handleSort","isFoot","sortChanged","toggleLocalSortDesc","sortDirection","sortKey","sortTheadThClasses","sortIconLeft","sortTheadThAttrs","ariaSort","sortTheadThLabel","labelSorting","topRowMixin","renderTopRow","BTable","aFunction","wellKnownSymbol","SPECIES","module","exports","defaultConstructor","stableSort","compareFn","bind","_makeModelMixin","defaultValue","validator","modelMixin","mixin","modelProps","MODEL_PROP_NAME","prop","MODEL_EVENT_NAME","ELLIPSIS_THRESHOLD","DEFAULT_LIMIT","makePageArray","startNumber","_","number","classes","sanitizeLimit","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","localLimit","btnSize","alignment","styleClass","computedCurrentPage","paginationParams","showFirstDots","showLastDots","numberOfLinks","lastPageNumber","pageList","_this$paginationParam","pages","_i","_i2","_i3","handleKeyNav","isNav","propagation","focusFirst","focusPrev","focusLast","focusNext","getButtons","btn","find","el","_this4","reverse","_this5","buttons","indexOf","_this6","_this7","pageNumbers","_this$paginationParam2","fill","$buttons","isActivePage","noCurrentPage","makeEndBtn","linkTo","btnSlot","btnText","btnClass","pageTest","isDisabled","scope","$btnContent","$inner","tabindex","keydown","makeEllipsis","isLast","makePageButton","active","tabIndex","btnContent","content","$firstPageBtn","offset","$lastPageBtn","$pagination","ref"],"mappings":"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","file":"js/chunk-c6c83e68.b469d88d.js","sourcesContent":["import { isDate, isObject, isUndefinedOrNull } from './inspect';\nimport { keys } from './object';\nimport { toString } from './string'; // Recursively stringifies the values of an object, space separated, in an\n// SSR safe deterministic way (keys are sorted before stringification)\n//\n// ex:\n// { b: 3, c: { z: 'zzz', d: null, e: 2 }, d: [10, 12, 11], a: 'one' }\n// becomes\n// 'one 3 2 zzz 10 12 11'\n//\n// Strings are returned as-is\n// Numbers get converted to string\n// `null` and `undefined` values are filtered out\n// Dates are converted to their native string format\n\nexport var stringifyObjectValues = function stringifyObjectValues(value) {\n if (isUndefinedOrNull(value)) {\n return '';\n } // Arrays are also object, and keys just returns the array indexes\n // Date objects we convert to strings\n\n\n if (isObject(value) && !isDate(value)) {\n return keys(value).sort() // Sort to prevent SSR issues on pre-rendered sorted tables\n .map(function (k) {\n return stringifyObjectValues(value[k]);\n }).filter(function (v) {\n return !!v;\n }) // Ignore empty strings\n .join(' ');\n }\n\n return toString(value);\n};","import { Vue, mergeData } from '../../vue';\nimport { NAME_FORM } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../constants/props';\nimport { makeProp, makePropsConfigurable } from '../../utils/props'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n id: makeProp(PROP_TYPE_STRING),\n inline: makeProp(PROP_TYPE_BOOLEAN, false),\n novalidate: makeProp(PROP_TYPE_BOOLEAN, false),\n validated: makeProp(PROP_TYPE_BOOLEAN, false)\n}, NAME_FORM); // --- Main component ---\n// @vue/component\n\nexport var BForm = /*#__PURE__*/Vue.extend({\n name: NAME_FORM,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n return h('form', mergeData(data, {\n class: {\n 'form-inline': props.inline,\n 'was-validated': props.validated\n },\n attrs: {\n id: props.id,\n novalidate: props.novalidate\n }\n }), children);\n }\n});","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar isRegExp = require('../internals/is-regexp');\nvar anObject = require('../internals/an-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar speciesConstructor = require('../internals/species-constructor');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar toLength = require('../internals/to-length');\nvar callRegExpExec = require('../internals/regexp-exec-abstract');\nvar regexpExec = require('../internals/regexp-exec');\nvar fails = require('../internals/fails');\n\nvar arrayPush = [].push;\nvar min = Math.min;\nvar MAX_UINT32 = 0xFFFFFFFF;\n\n// babel-minify transpiles RegExp('x', 'y') -> /x/y and it causes SyntaxError\nvar SUPPORTS_Y = !fails(function () { return !RegExp(MAX_UINT32, 'y'); });\n\n// @@split logic\nfixRegExpWellKnownSymbolLogic('split', 2, function (SPLIT, nativeSplit, maybeCallNative) {\n var internalSplit;\n if (\n 'abbc'.split(/(b)*/)[1] == 'c' ||\n 'test'.split(/(?:)/, -1).length != 4 ||\n 'ab'.split(/(?:ab)*/).length != 2 ||\n '.'.split(/(.?)(.?)/).length != 4 ||\n '.'.split(/()()/).length > 1 ||\n ''.split(/.?/).length\n ) {\n // based on es5-shim implementation, need to rework it\n internalSplit = function (separator, limit) {\n var string = String(requireObjectCoercible(this));\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (separator === undefined) return [string];\n // If `separator` is not a regex, use native split\n if (!isRegExp(separator)) {\n return nativeSplit.call(string, separator, lim);\n }\n var output = [];\n var flags = (separator.ignoreCase ? 'i' : '') +\n (separator.multiline ? 'm' : '') +\n (separator.unicode ? 'u' : '') +\n (separator.sticky ? 'y' : '');\n var lastLastIndex = 0;\n // Make `global` and avoid `lastIndex` issues by working with a copy\n var separatorCopy = new RegExp(separator.source, flags + 'g');\n var match, lastIndex, lastLength;\n while (match = regexpExec.call(separatorCopy, string)) {\n lastIndex = separatorCopy.lastIndex;\n if (lastIndex > lastLastIndex) {\n output.push(string.slice(lastLastIndex, match.index));\n if (match.length > 1 && match.index < string.length) arrayPush.apply(output, match.slice(1));\n lastLength = match[0].length;\n lastLastIndex = lastIndex;\n if (output.length >= lim) break;\n }\n if (separatorCopy.lastIndex === match.index) separatorCopy.lastIndex++; // Avoid an infinite loop\n }\n if (lastLastIndex === string.length) {\n if (lastLength || !separatorCopy.test('')) output.push('');\n } else output.push(string.slice(lastLastIndex));\n return output.length > lim ? output.slice(0, lim) : output;\n };\n // Chakra, V8\n } else if ('0'.split(undefined, 0).length) {\n internalSplit = function (separator, limit) {\n return separator === undefined && limit === 0 ? [] : nativeSplit.call(this, separator, limit);\n };\n } else internalSplit = nativeSplit;\n\n return [\n // `String.prototype.split` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.split\n function split(separator, limit) {\n var O = requireObjectCoercible(this);\n var splitter = separator == undefined ? undefined : separator[SPLIT];\n return splitter !== undefined\n ? splitter.call(separator, O, limit)\n : internalSplit.call(String(O), separator, limit);\n },\n // `RegExp.prototype[@@split]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@split\n //\n // NOTE: This cannot be properly polyfilled in engines that don't support\n // the 'y' flag.\n function (regexp, limit) {\n var res = maybeCallNative(internalSplit, regexp, this, limit, internalSplit !== nativeSplit);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n var C = speciesConstructor(rx, RegExp);\n\n var unicodeMatching = rx.unicode;\n var flags = (rx.ignoreCase ? 'i' : '') +\n (rx.multiline ? 'm' : '') +\n (rx.unicode ? 'u' : '') +\n (SUPPORTS_Y ? 'y' : 'g');\n\n // ^(? + rx + ) is needed, in combination with some S slicing, to\n // simulate the 'y' flag.\n var splitter = new C(SUPPORTS_Y ? rx : '^(?:' + rx.source + ')', flags);\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : [];\n var p = 0;\n var q = 0;\n var A = [];\n while (q < S.length) {\n splitter.lastIndex = SUPPORTS_Y ? q : 0;\n var z = callRegExpExec(splitter, SUPPORTS_Y ? S : S.slice(q));\n var e;\n if (\n z === null ||\n (e = min(toLength(splitter.lastIndex + (SUPPORTS_Y ? 0 : q)), S.length)) === p\n ) {\n q = advanceStringIndex(S, q, unicodeMatching);\n } else {\n A.push(S.slice(p, q));\n if (A.length === lim) return A;\n for (var i = 1; i <= z.length - 1; i++) {\n A.push(z[i]);\n if (A.length === lim) return A;\n }\n q = p = e;\n }\n }\n A.push(S.slice(p));\n return A;\n }\n ];\n}, !SUPPORTS_Y);\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 { 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});","import { Vue } from '../../../vue';\nimport { SLOT_NAME_BOTTOM_ROW } from '../../../constants/slots';\nimport { isFunction } from '../../../utils/inspect';\nimport { BTr } from '../tr'; // --- Props ---\n\nexport var props = {}; // --- Mixin ---\n// @vue/component\n\nexport var bottomRowMixin = Vue.extend({\n props: props,\n methods: {\n renderBottomRow: function renderBottomRow() {\n var fields = this.computedFields,\n stacked = this.stacked,\n tbodyTrClass = this.tbodyTrClass,\n tbodyTrAttr = this.tbodyTrAttr;\n var h = this.$createElement; // Static bottom row slot (hidden in visibly stacked mode as we can't control the data-label)\n // If in *always* stacked mode, we don't bother rendering the row\n\n if (!this.hasNormalizedSlot(SLOT_NAME_BOTTOM_ROW) || stacked === true || stacked === '') {\n return h();\n }\n\n return h(BTr, {\n staticClass: 'b-table-bottom-row',\n class: [isFunction(tbodyTrClass) ?\n /* istanbul ignore next */\n tbodyTrClass(null, 'row-bottom') : tbodyTrClass],\n attrs: isFunction(tbodyTrAttr) ?\n /* istanbul ignore next */\n tbodyTrAttr(null, 'row-bottom') : tbodyTrAttr,\n key: 'b-bottom-row'\n }, this.normalizeSlot(SLOT_NAME_BOTTOM_ROW, {\n columns: fields.length,\n fields: fields\n }));\n }\n }\n});","function _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 { MODEL_EVENT_NAME_PREFIX } from '../../../constants/events';\nimport { PROP_TYPE_BOOLEAN } from '../../../constants/props';\nimport { SLOT_NAME_TABLE_BUSY } from '../../../constants/slots';\nimport { stopEvent } from '../../../utils/events';\nimport { isFunction } from '../../../utils/inspect';\nimport { makeProp } from '../../../utils/props';\nimport { BTr } from '../tr';\nimport { BTd } from '../td'; // --- Constants ---\n\nvar MODEL_PROP_NAME_BUSY = 'busy';\nvar MODEL_EVENT_NAME_BUSY = MODEL_EVENT_NAME_PREFIX + MODEL_PROP_NAME_BUSY; // --- Props ---\n\nexport var props = _defineProperty({}, MODEL_PROP_NAME_BUSY, makeProp(PROP_TYPE_BOOLEAN, false)); // --- Mixin ---\n// @vue/component\n\nexport var busyMixin = Vue.extend({\n props: props,\n data: function data() {\n return {\n localBusy: false\n };\n },\n computed: {\n computedBusy: function computedBusy() {\n return this[MODEL_PROP_NAME_BUSY] || this.localBusy;\n }\n },\n watch: {\n localBusy: function localBusy(newValue, oldValue) {\n if (newValue !== oldValue) {\n this.$emit(MODEL_EVENT_NAME_BUSY, newValue);\n }\n }\n },\n methods: {\n // Event handler helper\n stopIfBusy: function stopIfBusy(event) {\n // If table is busy (via provider) then don't propagate\n if (this.computedBusy) {\n stopEvent(event);\n return true;\n }\n\n return false;\n },\n // Render the busy indicator or return `null` if not busy\n renderBusy: function renderBusy() {\n var tbodyTrClass = this.tbodyTrClass,\n tbodyTrAttr = this.tbodyTrAttr;\n var h = this.$createElement; // Return a busy indicator row, or `null` if not busy\n\n if (this.computedBusy && this.hasNormalizedSlot(SLOT_NAME_TABLE_BUSY)) {\n return h(BTr, {\n staticClass: 'b-table-busy-slot',\n class: [isFunction(tbodyTrClass) ?\n /* istanbul ignore next */\n tbodyTrClass(null, SLOT_NAME_TABLE_BUSY) : tbodyTrClass],\n attrs: isFunction(tbodyTrAttr) ?\n /* istanbul ignore next */\n tbodyTrAttr(null, SLOT_NAME_TABLE_BUSY) : tbodyTrAttr,\n key: 'table-busy-slot'\n }, [h(BTd, {\n props: {\n colspan: this.computedFields.length || null\n }\n }, [this.normalizeSlot(SLOT_NAME_TABLE_BUSY)])]);\n } // We return `null` here so that we can determine if we need to\n // render the table items rows or not\n\n\n return null;\n }\n }\n});","import { Vue } from '../../../vue';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../../constants/props';\nimport { SLOT_NAME_EMPTY, SLOT_NAME_EMPTYFILTERED, SLOT_NAME_TABLE_BUSY } from '../../../constants/slots';\nimport { htmlOrText } from '../../../utils/html';\nimport { isFunction } from '../../../utils/inspect';\nimport { makeProp } from '../../../utils/props';\nimport { BTr } from '../tr';\nimport { BTd } from '../td'; // --- Props ---\n\nexport var props = {\n emptyFilteredHtml: makeProp(PROP_TYPE_STRING),\n emptyFilteredText: makeProp(PROP_TYPE_STRING, 'There are no records matching your request'),\n emptyHtml: makeProp(PROP_TYPE_STRING),\n emptyText: makeProp(PROP_TYPE_STRING, 'There are no records to show'),\n showEmpty: makeProp(PROP_TYPE_BOOLEAN, false)\n}; // --- Mixin ---\n// @vue/component\n\nexport var emptyMixin = Vue.extend({\n props: props,\n methods: {\n renderEmpty: function renderEmpty() {\n var items = this.computedItems;\n var h = this.$createElement;\n var $empty = h();\n\n if (this.showEmpty && (!items || items.length === 0) && !(this.computedBusy && this.hasNormalizedSlot(SLOT_NAME_TABLE_BUSY))) {\n var fields = this.computedFields,\n isFiltered = this.isFiltered,\n emptyText = this.emptyText,\n emptyHtml = this.emptyHtml,\n emptyFilteredText = this.emptyFilteredText,\n emptyFilteredHtml = this.emptyFilteredHtml,\n tbodyTrClass = this.tbodyTrClass,\n tbodyTrAttr = this.tbodyTrAttr;\n $empty = this.normalizeSlot(isFiltered ? SLOT_NAME_EMPTYFILTERED : SLOT_NAME_EMPTY, {\n emptyFilteredHtml: emptyFilteredHtml,\n emptyFilteredText: emptyFilteredText,\n emptyHtml: emptyHtml,\n emptyText: emptyText,\n fields: fields,\n // Not sure why this is included, as it will always be an empty array\n items: items\n });\n\n if (!$empty) {\n $empty = h('div', {\n class: ['text-center', 'my-2'],\n domProps: isFiltered ? htmlOrText(emptyFilteredHtml, emptyFilteredText) : htmlOrText(emptyHtml, emptyText)\n });\n }\n\n $empty = h(BTd, {\n props: {\n colspan: fields.length || null\n }\n }, [h('div', {\n attrs: {\n role: 'alert',\n 'aria-live': 'polite'\n }\n }, [$empty])]);\n $empty = h(BTr, {\n staticClass: 'b-table-empty-row',\n class: [isFunction(tbodyTrClass) ?\n /* istanbul ignore next */\n tbodyTrClass(null, 'row-empty') : tbodyTrClass],\n attrs: isFunction(tbodyTrAttr) ?\n /* istanbul ignore next */\n tbodyTrAttr(null, 'row-empty') : tbodyTrAttr,\n key: isFiltered ? 'b-empty-filtered-row' : 'b-empty-row'\n }, [$empty]);\n }\n\n return $empty;\n }\n }\n});","import { arrayIncludes } from '../../../utils/array';\nimport { isArray, isFunction } from '../../../utils/inspect';\nimport { clone, keys, pick } from '../../../utils/object';\nimport { IGNORED_FIELD_KEYS } from './constants'; // Return a copy of a row after all reserved fields have been filtered out\n\nexport var sanitizeRow = function sanitizeRow(row, ignoreFields, includeFields) {\n var fieldsObj = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n // We first need to format the row based on the field configurations\n // This ensures that we add formatted values for keys that may not\n // exist in the row itself\n var formattedRow = keys(fieldsObj).reduce(function (result, key) {\n var field = fieldsObj[key];\n var filterByFormatted = field.filterByFormatted;\n var formatter = isFunction(filterByFormatted) ?\n /* istanbul ignore next */\n filterByFormatted : filterByFormatted ?\n /* istanbul ignore next */\n field.formatter : null;\n\n if (isFunction(formatter)) {\n result[key] = formatter(row[key], key, row);\n }\n\n return result;\n }, clone(row)); // Determine the allowed keys:\n // - Ignore special fields that start with `_`\n // - Ignore fields in the `ignoreFields` array\n // - Include only fields in the `includeFields` array\n\n var allowedKeys = keys(formattedRow).filter(function (key) {\n return !IGNORED_FIELD_KEYS[key] && !(isArray(ignoreFields) && ignoreFields.length > 0 && arrayIncludes(ignoreFields, key)) && !(isArray(includeFields) && includeFields.length > 0 && !arrayIncludes(includeFields, key));\n });\n return pick(formattedRow, allowedKeys);\n};","import { isObject } from '../../../utils/inspect';\nimport { stringifyObjectValues } from '../../../utils/stringify-object-values';\nimport { sanitizeRow } from './sanitize-row'; // Stringifies the values of a record, ignoring any special top level field keys\n// TODO: Add option to stringify `scopedSlot` items\n\nexport var stringifyRecordValues = function stringifyRecordValues(row, ignoreFields, includeFields, fieldsObj) {\n return isObject(row) ? stringifyObjectValues(sanitizeRow(row, ignoreFields, includeFields, fieldsObj)) :\n /* istanbul ignore next */\n '';\n};","function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nimport { Vue } from '../../../vue';\nimport { NAME_TABLE } from '../../../constants/components';\nimport { EVENT_NAME_FILTERED } from '../../../constants/events';\nimport { PROP_TYPE_REG_EXP, PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_FUNCTION, PROP_TYPE_ARRAY, PROP_TYPE_NUMBER_STRING } from '../../../constants/props';\nimport { RX_DIGITS, RX_SPACES } from '../../../constants/regex';\nimport { concat } from '../../../utils/array';\nimport { cloneDeep } from '../../../utils/clone-deep';\nimport { identity } from '../../../utils/identity';\nimport { isFunction, isString, isRegExp } from '../../../utils/inspect';\nimport { looseEqual } from '../../../utils/loose-equal';\nimport { toInteger } from '../../../utils/number';\nimport { hasPropFunction, makeProp } from '../../../utils/props';\nimport { escapeRegExp } from '../../../utils/string';\nimport { warn } from '../../../utils/warn';\nimport { stringifyRecordValues } from './stringify-record-values'; // --- Constants ---\n\nvar DEBOUNCE_DEPRECATED_MSG = 'Prop \"filter-debounce\" is deprecated. Use the debounce feature of \"\" instead.'; // --- Props ---\n\nexport var props = {\n filter: makeProp([].concat(_toConsumableArray(PROP_TYPE_ARRAY_OBJECT_STRING), [PROP_TYPE_REG_EXP])),\n filterDebounce: makeProp(PROP_TYPE_NUMBER_STRING, 0, function (value) {\n return RX_DIGITS.test(String(value));\n }),\n filterFunction: makeProp(PROP_TYPE_FUNCTION),\n filterIgnoredFields: makeProp(PROP_TYPE_ARRAY, []),\n filterIncludedFields: makeProp(PROP_TYPE_ARRAY, [])\n}; // --- Mixin ---\n// @vue/component\n\nexport var filteringMixin = Vue.extend({\n props: props,\n data: function data() {\n return {\n // Flag for displaying which empty slot to show and some event triggering\n isFiltered: false,\n // Where we store the copy of the filter criteria after debouncing\n // We pre-set it with the sanitized filter value\n localFilter: this.filterSanitize(this.filter)\n };\n },\n computed: {\n computedFilterIgnored: function computedFilterIgnored() {\n return concat(this.filterIgnoredFields || []).filter(identity);\n },\n computedFilterIncluded: function computedFilterIncluded() {\n return concat(this.filterIncludedFields || []).filter(identity);\n },\n computedFilterDebounce: function computedFilterDebounce() {\n var ms = toInteger(this.filterDebounce, 0);\n /* istanbul ignore next */\n\n if (ms > 0) {\n warn(DEBOUNCE_DEPRECATED_MSG, NAME_TABLE);\n }\n\n return ms;\n },\n localFiltering: function localFiltering() {\n return this.hasProvider ? !!this.noProviderFiltering : true;\n },\n // For watching changes to `filteredItems` vs `localItems`\n filteredCheck: function filteredCheck() {\n var filteredItems = this.filteredItems,\n localItems = this.localItems,\n localFilter = this.localFilter;\n return {\n filteredItems: filteredItems,\n localItems: localItems,\n localFilter: localFilter\n };\n },\n // Sanitized/normalize filter-function prop\n localFilterFn: function localFilterFn() {\n // Return `null` to signal to use internal filter function\n var filterFunction = this.filterFunction;\n return hasPropFunction(filterFunction) ? filterFunction : null;\n },\n // Returns the records in `localItems` that match the filter criteria\n // Returns the original `localItems` array if not sorting\n filteredItems: function filteredItems() {\n // Note the criteria is debounced and sanitized\n var items = this.localItems,\n criteria = this.localFilter; // Resolve the filtering function, when requested\n // We prefer the provided filtering function and fallback to the internal one\n // When no filtering criteria is specified the filtering factories will return `null`\n\n var filterFn = this.localFiltering ? this.filterFnFactory(this.localFilterFn, criteria) || this.defaultFilterFnFactory(criteria) : null; // We only do local filtering when requested and there are records to filter\n\n return filterFn && items.length > 0 ? items.filter(filterFn) : items;\n }\n },\n watch: {\n // Watch for debounce being set to 0\n computedFilterDebounce: function computedFilterDebounce(newValue) {\n if (!newValue && this.$_filterTimer) {\n this.clearFilterTimer();\n this.localFilter = this.filterSanitize(this.filter);\n }\n },\n // Watch for changes to the filter criteria, and debounce if necessary\n filter: {\n // We need a deep watcher in case the user passes\n // an object when using `filter-function`\n deep: true,\n handler: function handler(newCriteria) {\n var _this = this;\n\n var timeout = this.computedFilterDebounce;\n this.clearFilterTimer();\n\n if (timeout && timeout > 0) {\n // If we have a debounce time, delay the update of `localFilter`\n this.$_filterTimer = setTimeout(function () {\n _this.localFilter = _this.filterSanitize(newCriteria);\n }, timeout);\n } else {\n // Otherwise, immediately update `localFilter` with `newFilter` value\n this.localFilter = this.filterSanitize(newCriteria);\n }\n }\n },\n // Watch for changes to the filter criteria and filtered items vs `localItems`\n // Set visual state and emit events as required\n filteredCheck: function filteredCheck(_ref) {\n var filteredItems = _ref.filteredItems,\n localFilter = _ref.localFilter;\n // Determine if the dataset is filtered or not\n var isFiltered = false;\n\n if (!localFilter) {\n // If filter criteria is falsey\n isFiltered = false;\n } else if (looseEqual(localFilter, []) || looseEqual(localFilter, {})) {\n // If filter criteria is an empty array or object\n isFiltered = false;\n } else if (localFilter) {\n // If filter criteria is truthy\n isFiltered = true;\n }\n\n if (isFiltered) {\n this.$emit(EVENT_NAME_FILTERED, filteredItems, filteredItems.length);\n }\n\n this.isFiltered = isFiltered;\n },\n isFiltered: function isFiltered(newValue, oldValue) {\n if (newValue === false && oldValue === true) {\n // We need to emit a filtered event if `isFiltered` transitions from `true` to\n // `false` so that users can update their pagination controls\n var localItems = this.localItems;\n this.$emit(EVENT_NAME_FILTERED, localItems, localItems.length);\n }\n }\n },\n created: function created() {\n var _this2 = this;\n\n // Create private non-reactive props\n this.$_filterTimer = null; // If filter is \"pre-set\", set the criteria\n // This will trigger any watchers/dependents\n // this.localFilter = this.filterSanitize(this.filter)\n // Set the initial filtered state in a `$nextTick()` so that\n // we trigger a filtered event if needed\n\n this.$nextTick(function () {\n _this2.isFiltered = Boolean(_this2.localFilter);\n });\n },\n beforeDestroy: function beforeDestroy() {\n this.clearFilterTimer();\n },\n methods: {\n clearFilterTimer: function clearFilterTimer() {\n clearTimeout(this.$_filterTimer);\n this.$_filterTimer = null;\n },\n filterSanitize: function filterSanitize(criteria) {\n // Sanitizes filter criteria based on internal or external filtering\n if (this.localFiltering && !this.localFilterFn && !(isString(criteria) || isRegExp(criteria))) {\n // If using internal filter function, which only accepts string or RegExp,\n // return '' to signify no filter\n return '';\n } // Could be a string, object or array, as needed by external filter function\n // We use `cloneDeep` to ensure we have a new copy of an object or array\n // without Vue's reactive observers\n\n\n return cloneDeep(criteria);\n },\n // Filter Function factories\n filterFnFactory: function filterFnFactory(filterFn, criteria) {\n // Wrapper factory for external filter functions\n // Wrap the provided filter-function and return a new function\n // Returns `null` if no filter-function defined or if criteria is falsey\n // Rather than directly grabbing `this.computedLocalFilterFn` or `this.filterFunction`\n // we have it passed, so that the caller computed prop will be reactive to changes\n // in the original filter-function (as this routine is a method)\n if (!filterFn || !isFunction(filterFn) || !criteria || looseEqual(criteria, []) || looseEqual(criteria, {})) {\n return null;\n } // Build the wrapped filter test function, passing the criteria to the provided function\n\n\n var fn = function fn(item) {\n // Generated function returns true if the criteria matches part\n // of the serialized data, otherwise false\n return filterFn(item, criteria);\n }; // Return the wrapped function\n\n\n return fn;\n },\n defaultFilterFnFactory: function defaultFilterFnFactory(criteria) {\n var _this3 = this;\n\n // Generates the default filter function, using the given filter criteria\n // Returns `null` if no criteria or criteria format not supported\n if (!criteria || !(isString(criteria) || isRegExp(criteria))) {\n // Built in filter can only support strings or RegExp criteria (at the moment)\n return null;\n } // Build the RegExp needed for filtering\n\n\n var regExp = criteria;\n\n if (isString(regExp)) {\n // Escape special RegExp characters in the string and convert contiguous\n // whitespace to \\s+ matches\n var pattern = escapeRegExp(criteria).replace(RX_SPACES, '\\\\s+'); // Build the RegExp (no need for global flag, as we only need\n // to find the value once in the string)\n\n regExp = new RegExp(\".*\".concat(pattern, \".*\"), 'i');\n } // Generate the wrapped filter test function to use\n\n\n var fn = function fn(item) {\n // This searches all row values (and sub property values) in the entire (excluding\n // special `_` prefixed keys), because we convert the record to a space-separated\n // string containing all the value properties (recursively), even ones that are\n // not visible (not specified in this.fields)\n // Users can ignore filtering on specific fields, or on only certain fields,\n // and can optionall specify searching results of fields with formatter\n //\n // TODO: Enable searching on scoped slots (optional, as it will be SLOW)\n //\n // Generated function returns true if the criteria matches part of\n // the serialized data, otherwise false\n //\n // We set `lastIndex = 0` on the `RegExp` in case someone specifies the `/g` global flag\n regExp.lastIndex = 0;\n return regExp.test(stringifyRecordValues(item, _this3.computedFilterIgnored, _this3.computedFilterIncluded, _this3.computedFieldsObj));\n }; // Return the generated function\n\n\n return fn;\n }\n }\n});","import { Vue } from '../../../vue';\nimport { PROP_TYPE_NUMBER_STRING } from '../../../constants/props';\nimport { mathMax } from '../../../utils/math';\nimport { toInteger } from '../../../utils/number';\nimport { makeProp } from '../../../utils/props'; // --- Props ---\n\nexport var props = {\n currentPage: makeProp(PROP_TYPE_NUMBER_STRING, 1),\n perPage: makeProp(PROP_TYPE_NUMBER_STRING, 0)\n}; // --- Mixin ---\n// @vue/component\n\nexport var paginationMixin = Vue.extend({\n props: props,\n computed: {\n localPaging: function localPaging() {\n return this.hasProvider ? !!this.noProviderPaging : true;\n },\n paginatedItems: function paginatedItems() {\n var items = this.sortedItems || this.filteredItems || this.localItems || [];\n var currentPage = mathMax(toInteger(this.currentPage, 1), 1);\n var perPage = mathMax(toInteger(this.perPage, 0), 0); // Apply local pagination\n\n if (this.localPaging && perPage) {\n // Grab the current page of data (which may be past filtered items limit)\n items = items.slice((currentPage - 1) * perPage, currentPage * perPage);\n } // Return the items to display in the table\n\n\n return items;\n }\n }\n});","import { Vue } from '../../../vue';\nimport { NAME_TABLE } from '../../../constants/components';\nimport { EVENT_NAME_REFRESH, EVENT_NAME_REFRESHED } from '../../../constants/events';\nimport { PROP_TYPE_ARRAY_FUNCTION, PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../../constants/props';\nimport { getRootActionEventName, getRootEventName } from '../../../utils/events';\nimport { isArray, isFunction, isPromise } from '../../../utils/inspect';\nimport { looseEqual } from '../../../utils/loose-equal';\nimport { clone } from '../../../utils/object';\nimport { makeProp } from '../../../utils/props';\nimport { warn } from '../../../utils/warn';\nimport { listenOnRootMixin } from '../../../mixins/listen-on-root'; // --- Constants ---\n\nvar ROOT_EVENT_NAME_REFRESHED = getRootEventName(NAME_TABLE, EVENT_NAME_REFRESHED);\nvar ROOT_ACTION_EVENT_NAME_REFRESH = getRootActionEventName(NAME_TABLE, EVENT_NAME_REFRESH); // --- Props ---\n\nexport var props = {\n // Passed to the context object\n // Not used by `` directly\n apiUrl: makeProp(PROP_TYPE_STRING),\n // Adds in 'Function' support\n items: makeProp(PROP_TYPE_ARRAY_FUNCTION, []),\n noProviderFiltering: makeProp(PROP_TYPE_BOOLEAN, false),\n noProviderPaging: makeProp(PROP_TYPE_BOOLEAN, false),\n noProviderSorting: makeProp(PROP_TYPE_BOOLEAN, false)\n}; // --- Mixin ---\n// @vue/component\n\nexport var providerMixin = Vue.extend({\n mixins: [listenOnRootMixin],\n props: props,\n computed: {\n hasProvider: function hasProvider() {\n return isFunction(this.items);\n },\n providerTriggerContext: function providerTriggerContext() {\n // Used to trigger the provider function via a watcher. Only the fields that\n // are needed for triggering a provider update are included. Note that the\n // regular this.context is sent to the provider during fetches though, as they\n // may need all the prop info.\n var ctx = {\n apiUrl: this.apiUrl,\n filter: null,\n sortBy: null,\n sortDesc: null,\n perPage: null,\n currentPage: null\n };\n\n if (!this.noProviderFiltering) {\n // Either a string, or could be an object or array.\n ctx.filter = this.localFilter;\n }\n\n if (!this.noProviderSorting) {\n ctx.sortBy = this.localSortBy;\n ctx.sortDesc = this.localSortDesc;\n }\n\n if (!this.noProviderPaging) {\n ctx.perPage = this.perPage;\n ctx.currentPage = this.currentPage;\n }\n\n return clone(ctx);\n }\n },\n watch: {\n // Provider update triggering\n items: function items(newValue) {\n // If a new provider has been specified, trigger an update\n if (this.hasProvider || isFunction(newValue)) {\n this.$nextTick(this._providerUpdate);\n }\n },\n providerTriggerContext: function providerTriggerContext(newValue, oldValue) {\n // Trigger the provider to update as the relevant context values have changed.\n if (!looseEqual(newValue, oldValue)) {\n this.$nextTick(this._providerUpdate);\n }\n }\n },\n mounted: function mounted() {\n var _this = this;\n\n // Call the items provider if necessary\n if (this.hasProvider && (!this.localItems || this.localItems.length === 0)) {\n // Fetch on mount if localItems is empty\n this._providerUpdate();\n } // Listen for global messages to tell us to force refresh the table\n\n\n this.listenOnRoot(ROOT_ACTION_EVENT_NAME_REFRESH, function (id) {\n if (id === _this.id || id === _this) {\n _this.refresh();\n }\n });\n },\n methods: {\n refresh: function refresh() {\n var items = this.items,\n refresh = this.refresh; // Public Method: Force a refresh of the provider function\n\n this.$off(EVENT_NAME_REFRESHED, refresh);\n\n if (this.computedBusy) {\n // Can't force an update when forced busy by user (busy prop === true)\n if (this.localBusy && this.hasProvider) {\n // But if provider running (localBusy), re-schedule refresh once `refreshed` emitted\n this.$on(EVENT_NAME_REFRESHED, refresh);\n }\n } else {\n this.clearSelected();\n\n if (this.hasProvider) {\n this.$nextTick(this._providerUpdate);\n } else {\n /* istanbul ignore next */\n this.localItems = isArray(items) ? items.slice() : [];\n }\n }\n },\n // Provider related methods\n _providerSetLocal: function _providerSetLocal(items) {\n this.localItems = isArray(items) ? items.slice() : [];\n this.localBusy = false;\n this.$emit(EVENT_NAME_REFRESHED); // New root emit\n\n if (this.id) {\n this.emitOnRoot(ROOT_EVENT_NAME_REFRESHED, this.id);\n }\n },\n _providerUpdate: function _providerUpdate() {\n var _this2 = this;\n\n // Refresh the provider function items.\n if (!this.hasProvider) {\n // Do nothing if no provider\n return;\n } // If table is busy, wait until refreshed before calling again\n\n\n if (this.computedBusy) {\n // Schedule a new refresh once `refreshed` is emitted\n this.$nextTick(this.refresh);\n return;\n } // Set internal busy state\n\n\n this.localBusy = true; // Call provider function with context and optional callback after DOM is fully updated\n\n this.$nextTick(function () {\n try {\n // Call provider function passing it the context and optional callback\n var data = _this2.items(_this2.context, _this2._providerSetLocal);\n\n if (isPromise(data)) {\n // Provider returned Promise\n data.then(function (items) {\n // Provider resolved with items\n _this2._providerSetLocal(items);\n });\n } else if (isArray(data)) {\n // Provider returned Array data\n _this2._providerSetLocal(data);\n } else {\n /* istanbul ignore if */\n if (_this2.items.length !== 2) {\n // Check number of arguments provider function requested\n // Provider not using callback (didn't request second argument), so we clear\n // busy state as most likely there was an error in the provider function\n\n /* istanbul ignore next */\n warn(\"Provider function didn't request callback and did not return a promise or data.\", NAME_TABLE);\n _this2.localBusy = false;\n }\n }\n } catch (e)\n /* istanbul ignore next */\n {\n // Provider function borked on us, so we spew out a warning\n // and clear the busy state\n warn(\"Provider function error [\".concat(e.name, \"] \").concat(e.message, \".\"), NAME_TABLE);\n _this2.localBusy = false;\n\n _this2.$off(EVENT_NAME_REFRESHED, _this2.refresh);\n }\n });\n }\n }\n});","function _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 { EVENT_NAME_CONTEXT_CHANGED, EVENT_NAME_FILTERED, EVENT_NAME_ROW_CLICKED, EVENT_NAME_ROW_SELECTED } from '../../../constants/events';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../../constants/props';\nimport { arrayIncludes, createArray } from '../../../utils/array';\nimport { identity } from '../../../utils/identity';\nimport { isArray, isNumber } from '../../../utils/inspect';\nimport { looseEqual } from '../../../utils/loose-equal';\nimport { mathMax, mathMin } from '../../../utils/math';\nimport { makeProp } from '../../../utils/props';\nimport { sanitizeRow } from './sanitize-row'; // --- Constants ---\n\nvar SELECT_MODES = ['range', 'multi', 'single']; // --- Props ---\n\nexport var props = {\n // Disable use of click handlers for row selection\n noSelectOnClick: makeProp(PROP_TYPE_BOOLEAN, false),\n selectMode: makeProp(PROP_TYPE_STRING, 'multi', function (value) {\n return arrayIncludes(SELECT_MODES, value);\n }),\n selectable: makeProp(PROP_TYPE_BOOLEAN, false),\n selectedVariant: makeProp(PROP_TYPE_STRING, 'active')\n}; // --- Mixin ---\n// @vue/component\n\nexport var selectableMixin = Vue.extend({\n props: props,\n data: function data() {\n return {\n selectedRows: [],\n selectedLastRow: -1\n };\n },\n computed: {\n isSelectable: function isSelectable() {\n return this.selectable && this.selectMode;\n },\n hasSelectableRowClick: function hasSelectableRowClick() {\n return this.isSelectable && !this.noSelectOnClick;\n },\n supportsSelectableRows: function supportsSelectableRows() {\n return true;\n },\n selectableHasSelection: function selectableHasSelection() {\n var selectedRows = this.selectedRows;\n return this.isSelectable && selectedRows && selectedRows.length > 0 && selectedRows.some(identity);\n },\n selectableIsMultiSelect: function selectableIsMultiSelect() {\n return this.isSelectable && arrayIncludes(['range', 'multi'], this.selectMode);\n },\n selectableTableClasses: function selectableTableClasses() {\n var _ref;\n\n var isSelectable = this.isSelectable;\n return _ref = {\n 'b-table-selectable': isSelectable\n }, _defineProperty(_ref, \"b-table-select-\".concat(this.selectMode), isSelectable), _defineProperty(_ref, 'b-table-selecting', this.selectableHasSelection), _defineProperty(_ref, 'b-table-selectable-no-click', isSelectable && !this.hasSelectableRowClick), _ref;\n },\n selectableTableAttrs: function selectableTableAttrs() {\n return {\n // TODO:\n // Should this attribute not be included when no-select-on-click is set\n // since this attribute implies keyboard navigation?\n 'aria-multiselectable': !this.isSelectable ? null : this.selectableIsMultiSelect ? 'true' : 'false'\n };\n }\n },\n watch: {\n computedItems: function computedItems(newValue, oldValue) {\n // Reset for selectable\n var equal = false;\n\n if (this.isSelectable && this.selectedRows.length > 0) {\n // Quick check against array length\n equal = isArray(newValue) && isArray(oldValue) && newValue.length === oldValue.length;\n\n for (var i = 0; equal && i < newValue.length; i++) {\n // Look for the first non-loosely equal row, after ignoring reserved fields\n equal = looseEqual(sanitizeRow(newValue[i]), sanitizeRow(oldValue[i]));\n }\n }\n\n if (!equal) {\n this.clearSelected();\n }\n },\n selectable: function selectable(newValue) {\n this.clearSelected();\n this.setSelectionHandlers(newValue);\n },\n selectMode: function selectMode() {\n this.clearSelected();\n },\n hasSelectableRowClick: function hasSelectableRowClick(newValue) {\n this.clearSelected();\n this.setSelectionHandlers(!newValue);\n },\n selectedRows: function selectedRows(_selectedRows, oldValue) {\n var _this = this;\n\n if (this.isSelectable && !looseEqual(_selectedRows, oldValue)) {\n var items = []; // `.forEach()` skips over non-existent indices (on sparse arrays)\n\n _selectedRows.forEach(function (v, idx) {\n if (v) {\n items.push(_this.computedItems[idx]);\n }\n });\n\n this.$emit(EVENT_NAME_ROW_SELECTED, items);\n }\n }\n },\n beforeMount: function beforeMount() {\n // Set up handlers if needed\n if (this.isSelectable) {\n this.setSelectionHandlers(true);\n }\n },\n methods: {\n // Public methods\n selectRow: function selectRow(index) {\n // Select a particular row (indexed based on computedItems)\n if (this.isSelectable && isNumber(index) && index >= 0 && index < this.computedItems.length && !this.isRowSelected(index)) {\n var selectedRows = this.selectableIsMultiSelect ? this.selectedRows.slice() : [];\n selectedRows[index] = true;\n this.selectedLastClicked = -1;\n this.selectedRows = selectedRows;\n }\n },\n unselectRow: function unselectRow(index) {\n // Un-select a particular row (indexed based on `computedItems`)\n if (this.isSelectable && isNumber(index) && this.isRowSelected(index)) {\n var selectedRows = this.selectedRows.slice();\n selectedRows[index] = false;\n this.selectedLastClicked = -1;\n this.selectedRows = selectedRows;\n }\n },\n selectAllRows: function selectAllRows() {\n var length = this.computedItems.length;\n\n if (this.isSelectable && length > 0) {\n this.selectedLastClicked = -1;\n this.selectedRows = this.selectableIsMultiSelect ? createArray(length, true) : [true];\n }\n },\n isRowSelected: function isRowSelected(index) {\n // Determine if a row is selected (indexed based on `computedItems`)\n return !!(isNumber(index) && this.selectedRows[index]);\n },\n clearSelected: function clearSelected() {\n // Clear any active selected row(s)\n this.selectedLastClicked = -1;\n this.selectedRows = [];\n },\n // Internal private methods\n selectableRowClasses: function selectableRowClasses(index) {\n if (this.isSelectable && this.isRowSelected(index)) {\n var variant = this.selectedVariant;\n return _defineProperty({\n 'b-table-row-selected': true\n }, \"\".concat(this.dark ? 'bg' : 'table', \"-\").concat(variant), variant);\n }\n\n return {};\n },\n selectableRowAttrs: function selectableRowAttrs(index) {\n return {\n 'aria-selected': !this.isSelectable ? null : this.isRowSelected(index) ? 'true' : 'false'\n };\n },\n setSelectionHandlers: function setSelectionHandlers(on) {\n var method = on && !this.noSelectOnClick ? '$on' : '$off'; // Handle row-clicked event\n\n this[method](EVENT_NAME_ROW_CLICKED, this.selectionHandler); // Clear selection on filter, pagination, and sort changes\n\n this[method](EVENT_NAME_FILTERED, this.clearSelected);\n this[method](EVENT_NAME_CONTEXT_CHANGED, this.clearSelected);\n },\n selectionHandler: function selectionHandler(item, index, event) {\n /* istanbul ignore if: should never happen */\n if (!this.isSelectable || this.noSelectOnClick) {\n // Don't do anything if table is not in selectable mode\n this.clearSelected();\n return;\n }\n\n var selectMode = this.selectMode,\n selectedLastRow = this.selectedLastRow;\n var selectedRows = this.selectedRows.slice();\n var selected = !selectedRows[index]; // Note 'multi' mode needs no special event handling\n\n if (selectMode === 'single') {\n selectedRows = [];\n } else if (selectMode === 'range') {\n if (selectedLastRow > -1 && event.shiftKey) {\n // range\n for (var idx = mathMin(selectedLastRow, index); idx <= mathMax(selectedLastRow, index); idx++) {\n selectedRows[idx] = true;\n }\n\n selected = true;\n } else {\n if (!(event.ctrlKey || event.metaKey)) {\n // Clear range selection if any\n selectedRows = [];\n selected = true;\n }\n\n this.selectedLastRow = selected ? index : -1;\n }\n }\n\n selectedRows[index] = selected;\n this.selectedRows = selectedRows;\n }\n }\n});","var _props, _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 { EVENT_NAME_HEAD_CLICKED, EVENT_NAME_SORT_CHANGED, MODEL_EVENT_NAME_PREFIX } from '../../../constants/events';\nimport { PROP_TYPE_ARRAY_STRING, PROP_TYPE_BOOLEAN, PROP_TYPE_FUNCTION, PROP_TYPE_OBJECT, PROP_TYPE_STRING } from '../../../constants/props';\nimport { arrayIncludes } from '../../../utils/array';\nimport { isFunction, isUndefinedOrNull } from '../../../utils/inspect';\nimport { makeProp } from '../../../utils/props';\nimport { stableSort } from '../../../utils/stable-sort';\nimport { trim } from '../../../utils/string';\nimport { defaultSortCompare } from './default-sort-compare'; // --- Constants ---\n\nvar MODEL_PROP_NAME_SORT_BY = 'sortBy';\nvar MODEL_EVENT_NAME_SORT_BY = MODEL_EVENT_NAME_PREFIX + MODEL_PROP_NAME_SORT_BY;\nvar MODEL_PROP_NAME_SORT_DESC = 'sortDesc';\nvar MODEL_EVENT_NAME_SORT_DESC = MODEL_EVENT_NAME_PREFIX + MODEL_PROP_NAME_SORT_DESC;\nvar SORT_DIRECTION_ASC = 'asc';\nvar SORT_DIRECTION_DESC = 'desc';\nvar SORT_DIRECTION_LAST = 'last';\nvar SORT_DIRECTIONS = [SORT_DIRECTION_ASC, SORT_DIRECTION_DESC, SORT_DIRECTION_LAST]; // --- Props ---\n\nexport var props = (_props = {\n labelSortAsc: makeProp(PROP_TYPE_STRING, 'Click to sort Ascending'),\n labelSortClear: makeProp(PROP_TYPE_STRING, 'Click to clear sorting'),\n labelSortDesc: makeProp(PROP_TYPE_STRING, 'Click to sort Descending'),\n noFooterSorting: makeProp(PROP_TYPE_BOOLEAN, false),\n noLocalSorting: makeProp(PROP_TYPE_BOOLEAN, false),\n // Another prop that should have had a better name\n // It should be `noSortClear` (on non-sortable headers)\n // We will need to make sure the documentation is clear on what\n // this prop does (as well as in the code for future reference)\n noSortReset: makeProp(PROP_TYPE_BOOLEAN, false)\n}, _defineProperty(_props, MODEL_PROP_NAME_SORT_BY, makeProp(PROP_TYPE_STRING)), _defineProperty(_props, \"sortCompare\", makeProp(PROP_TYPE_FUNCTION)), _defineProperty(_props, \"sortCompareLocale\", makeProp(PROP_TYPE_ARRAY_STRING)), _defineProperty(_props, \"sortCompareOptions\", makeProp(PROP_TYPE_OBJECT, {\n numeric: true\n})), _defineProperty(_props, MODEL_PROP_NAME_SORT_DESC, makeProp(PROP_TYPE_BOOLEAN, false)), _defineProperty(_props, \"sortDirection\", makeProp(PROP_TYPE_STRING, SORT_DIRECTION_ASC, function (value) {\n return arrayIncludes(SORT_DIRECTIONS, value);\n})), _defineProperty(_props, \"sortIconLeft\", makeProp(PROP_TYPE_BOOLEAN, false)), _defineProperty(_props, \"sortNullLast\", makeProp(PROP_TYPE_BOOLEAN, false)), _props); // --- Mixin ---\n// @vue/component\n\nexport var sortingMixin = Vue.extend({\n props: props,\n data: function data() {\n return {\n localSortBy: this[MODEL_PROP_NAME_SORT_BY] || '',\n localSortDesc: this[MODEL_PROP_NAME_SORT_DESC] || false\n };\n },\n computed: {\n localSorting: function localSorting() {\n return this.hasProvider ? !!this.noProviderSorting : !this.noLocalSorting;\n },\n isSortable: function isSortable() {\n return this.computedFields.some(function (f) {\n return f.sortable;\n });\n },\n // Sorts the filtered items and returns a new array of the sorted items\n // When not sorted, the original items array will be returned\n sortedItems: function sortedItems() {\n var sortBy = this.localSortBy,\n sortDesc = this.localSortDesc,\n locale = this.sortCompareLocale,\n nullLast = this.sortNullLast,\n sortCompare = this.sortCompare,\n localSorting = this.localSorting;\n var items = (this.filteredItems || this.localItems || []).slice();\n\n var localeOptions = _objectSpread(_objectSpread({}, this.sortCompareOptions), {}, {\n usage: 'sort'\n });\n\n if (sortBy && localSorting) {\n var field = this.computedFieldsObj[sortBy] || {};\n var sortByFormatted = field.sortByFormatted;\n var formatter = isFunction(sortByFormatted) ?\n /* istanbul ignore next */\n sortByFormatted : sortByFormatted ? this.getFieldFormatter(sortBy) : undefined; // `stableSort` returns a new array, and leaves the original array intact\n\n return stableSort(items, function (a, b) {\n var result = null; // Call user provided `sortCompare` routine first\n\n if (isFunction(sortCompare)) {\n // TODO:\n // Change the `sortCompare` signature to the one of `defaultSortCompare`\n // with the next major version bump\n result = sortCompare(a, b, sortBy, sortDesc, formatter, localeOptions, locale);\n } // Fallback to built-in `defaultSortCompare` if `sortCompare`\n // is not defined or returns `null`/`false`\n\n\n if (isUndefinedOrNull(result) || result === false) {\n result = defaultSortCompare(a, b, {\n sortBy: sortBy,\n formatter: formatter,\n locale: locale,\n localeOptions: localeOptions,\n nullLast: nullLast\n });\n } // Negate result if sorting in descending order\n\n\n return (result || 0) * (sortDesc ? -1 : 1);\n });\n }\n\n return items;\n }\n },\n watch: (_watch = {\n /* istanbul ignore next: pain in the butt to test */\n isSortable: function isSortable(newValue) {\n if (newValue) {\n if (this.isSortable) {\n this.$on(EVENT_NAME_HEAD_CLICKED, this.handleSort);\n }\n } else {\n this.$off(EVENT_NAME_HEAD_CLICKED, this.handleSort);\n }\n }\n }, _defineProperty(_watch, MODEL_PROP_NAME_SORT_DESC, function (newValue) {\n /* istanbul ignore next */\n if (newValue === this.localSortDesc) {\n return;\n }\n\n this.localSortDesc = newValue || false;\n }), _defineProperty(_watch, MODEL_PROP_NAME_SORT_BY, function (newValue) {\n /* istanbul ignore next */\n if (newValue === this.localSortBy) {\n return;\n }\n\n this.localSortBy = newValue || '';\n }), _defineProperty(_watch, \"localSortDesc\", function localSortDesc(newValue, oldValue) {\n // Emit update to sort-desc.sync\n if (newValue !== oldValue) {\n this.$emit(MODEL_EVENT_NAME_SORT_DESC, newValue);\n }\n }), _defineProperty(_watch, \"localSortBy\", function localSortBy(newValue, oldValue) {\n if (newValue !== oldValue) {\n this.$emit(MODEL_EVENT_NAME_SORT_BY, newValue);\n }\n }), _watch),\n created: function created() {\n if (this.isSortable) {\n this.$on(EVENT_NAME_HEAD_CLICKED, this.handleSort);\n }\n },\n methods: {\n // Handlers\n // Need to move from thead-mixin\n handleSort: function handleSort(key, field, event, isFoot) {\n var _this = this;\n\n if (!this.isSortable) {\n /* istanbul ignore next */\n return;\n }\n\n if (isFoot && this.noFooterSorting) {\n return;\n } // TODO: make this tri-state sorting\n // cycle desc => asc => none => desc => ...\n\n\n var sortChanged = false;\n\n var toggleLocalSortDesc = function toggleLocalSortDesc() {\n var sortDirection = field.sortDirection || _this.sortDirection;\n\n if (sortDirection === SORT_DIRECTION_ASC) {\n _this.localSortDesc = false;\n } else if (sortDirection === SORT_DIRECTION_DESC) {\n _this.localSortDesc = true;\n } else {// sortDirection === 'last'\n // Leave at last sort direction from previous column\n }\n };\n\n if (field.sortable) {\n var sortKey = !this.localSorting && field.sortKey ? field.sortKey : key;\n\n if (this.localSortBy === sortKey) {\n // Change sorting direction on current column\n this.localSortDesc = !this.localSortDesc;\n } else {\n // Start sorting this column ascending\n this.localSortBy = sortKey; // this.localSortDesc = false\n\n toggleLocalSortDesc();\n }\n\n sortChanged = true;\n } else if (this.localSortBy && !this.noSortReset) {\n this.localSortBy = '';\n toggleLocalSortDesc();\n sortChanged = true;\n }\n\n if (sortChanged) {\n // Sorting parameters changed\n this.$emit(EVENT_NAME_SORT_CHANGED, this.context);\n }\n },\n // methods to compute classes and attrs for thead>th cells\n sortTheadThClasses: function sortTheadThClasses(key, field, isFoot) {\n return {\n // If sortable and sortIconLeft are true, then place sort icon on the left\n 'b-table-sort-icon-left': field.sortable && this.sortIconLeft && !(isFoot && this.noFooterSorting)\n };\n },\n sortTheadThAttrs: function sortTheadThAttrs(key, field, isFoot) {\n if (!this.isSortable || isFoot && this.noFooterSorting) {\n // No attributes if not a sortable table\n return {};\n }\n\n var sortable = field.sortable; // Assemble the aria-sort attribute value\n\n var ariaSort = sortable && this.localSortBy === key ? this.localSortDesc ? 'descending' : 'ascending' : sortable ? 'none' : null; // Return the attribute\n\n return {\n 'aria-sort': ariaSort\n };\n },\n sortTheadThLabel: function sortTheadThLabel(key, field, isFoot) {\n // A label to be placed in an `.sr-only` element in the header cell\n if (!this.isSortable || isFoot && this.noFooterSorting) {\n // No label if not a sortable table\n return null;\n }\n\n var sortable = field.sortable; // The correctness of these labels is very important for screen-reader users.\n\n var labelSorting = '';\n\n if (sortable) {\n if (this.localSortBy === key) {\n // currently sorted sortable column.\n labelSorting = this.localSortDesc ? this.labelSortAsc : this.labelSortDesc;\n } else {\n // Not currently sorted sortable column.\n // Not using nested ternary's here for clarity/readability\n // Default for ariaLabel\n labelSorting = this.localSortDesc ? this.labelSortDesc : this.labelSortAsc; // Handle sortDirection setting\n\n var sortDirection = this.sortDirection || field.sortDirection;\n\n if (sortDirection === SORT_DIRECTION_ASC) {\n labelSorting = this.labelSortAsc;\n } else if (sortDirection === SORT_DIRECTION_DESC) {\n labelSorting = this.labelSortDesc;\n }\n }\n } else if (!this.noSortReset) {\n // Non sortable column\n labelSorting = this.localSortBy ? this.labelSortClear : '';\n } // Return the sr-only sort label or null if no label\n\n\n return trim(labelSorting) || null;\n }\n }\n});","import { get } from '../../../utils/get';\nimport { isDate, isFunction, isNumber, isNumeric, isUndefinedOrNull } from '../../../utils/inspect';\nimport { toFloat } from '../../../utils/number';\nimport { stringifyObjectValues } from '../../../utils/stringify-object-values';\n\nvar normalizeValue = function normalizeValue(value) {\n if (isUndefinedOrNull(value)) {\n return '';\n }\n\n if (isNumeric(value)) {\n return toFloat(value, value);\n }\n\n return value;\n}; // Default sort compare routine\n//\n// TODO:\n// Add option to sort by multiple columns (tri-state per column,\n// plus order of columns in sort) where `sortBy` could be an array\n// of objects `[ {key: 'foo', sortDir: 'asc'}, {key:'bar', sortDir: 'desc'} ...]`\n// or an array of arrays `[ ['foo','asc'], ['bar','desc'] ]`\n// Multisort will most likely be handled in `mixin-sort.js` by\n// calling this method for each sortBy\n\n\nexport var defaultSortCompare = function defaultSortCompare(a, b) {\n var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},\n _ref$sortBy = _ref.sortBy,\n sortBy = _ref$sortBy === void 0 ? null : _ref$sortBy,\n _ref$formatter = _ref.formatter,\n formatter = _ref$formatter === void 0 ? null : _ref$formatter,\n _ref$locale = _ref.locale,\n locale = _ref$locale === void 0 ? undefined : _ref$locale,\n _ref$localeOptions = _ref.localeOptions,\n localeOptions = _ref$localeOptions === void 0 ? {} : _ref$localeOptions,\n _ref$nullLast = _ref.nullLast,\n nullLast = _ref$nullLast === void 0 ? false : _ref$nullLast;\n\n // Get the value by `sortBy`\n var aa = get(a, sortBy, null);\n var bb = get(b, sortBy, null); // Apply user-provided formatter\n\n if (isFunction(formatter)) {\n aa = formatter(aa, sortBy, a);\n bb = formatter(bb, sortBy, b);\n } // Internally normalize value\n // `null` / `undefined` => ''\n // `'0'` => `0`\n\n\n aa = normalizeValue(aa);\n bb = normalizeValue(bb);\n\n if (isDate(aa) && isDate(bb) || isNumber(aa) && isNumber(bb)) {\n // Special case for comparing dates and numbers\n // Internally dates are compared via their epoch number values\n return aa < bb ? -1 : aa > bb ? 1 : 0;\n } else if (nullLast && aa === '' && bb !== '') {\n // Special case when sorting `null` / `undefined` / '' last\n return 1;\n } else if (nullLast && aa !== '' && bb === '') {\n // Special case when sorting `null` / `undefined` / '' last\n return -1;\n } // Do localized string comparison\n\n\n return stringifyObjectValues(aa).localeCompare(stringifyObjectValues(bb), locale, localeOptions);\n};","import { Vue } from '../../../vue';\nimport { SLOT_NAME_TOP_ROW } from '../../../constants/slots';\nimport { isFunction } from '../../../utils/inspect';\nimport { BTr } from '../tr'; // --- Props ---\n\nexport var props = {}; // --- Mixin ---\n// @vue/component\n\nexport var topRowMixin = Vue.extend({\n methods: {\n renderTopRow: function renderTopRow() {\n var fields = this.computedFields,\n stacked = this.stacked,\n tbodyTrClass = this.tbodyTrClass,\n tbodyTrAttr = this.tbodyTrAttr;\n var h = this.$createElement; // Add static Top Row slot (hidden in visibly stacked mode as we can't control the data-label)\n // If in *always* stacked mode, we don't bother rendering the row\n\n if (!this.hasNormalizedSlot(SLOT_NAME_TOP_ROW) || stacked === true || stacked === '') {\n return h();\n }\n\n return h(BTr, {\n staticClass: 'b-table-top-row',\n class: [isFunction(tbodyTrClass) ? tbodyTrClass(null, 'row-top') : tbodyTrClass],\n attrs: isFunction(tbodyTrAttr) ? tbodyTrAttr(null, 'row-top') : tbodyTrAttr,\n key: 'b-top-row'\n }, [this.normalizeSlot(SLOT_NAME_TOP_ROW, {\n columns: fields.length,\n fields: fields\n })]);\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 { Vue } from '../../vue';\nimport { NAME_TABLE } from '../../constants/components';\nimport { sortKeys } from '../../utils/object';\nimport { makePropsConfigurable } from '../../utils/props';\nimport { attrsMixin } from '../../mixins/attrs';\nimport { hasListenerMixin } from '../../mixins/has-listener';\nimport { idMixin, props as idProps } from '../../mixins/id';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { bottomRowMixin, props as bottomRowProps } from './helpers/mixin-bottom-row';\nimport { busyMixin, props as busyProps } from './helpers/mixin-busy';\nimport { captionMixin, props as captionProps } from './helpers/mixin-caption';\nimport { colgroupMixin, props as colgroupProps } from './helpers/mixin-colgroup';\nimport { emptyMixin, props as emptyProps } from './helpers/mixin-empty';\nimport { filteringMixin, props as filteringProps } from './helpers/mixin-filtering';\nimport { itemsMixin, props as itemsProps } from './helpers/mixin-items';\nimport { paginationMixin, props as paginationProps } from './helpers/mixin-pagination';\nimport { providerMixin, props as providerProps } from './helpers/mixin-provider';\nimport { selectableMixin, props as selectableProps } from './helpers/mixin-selectable';\nimport { sortingMixin, props as sortingProps } from './helpers/mixin-sorting';\nimport { stackedMixin, props as stackedProps } from './helpers/mixin-stacked';\nimport { tableRendererMixin, props as tableRendererProps } from './helpers/mixin-table-renderer';\nimport { tbodyMixin, props as tbodyProps } from './helpers/mixin-tbody';\nimport { tfootMixin, props as tfootProps } from './helpers/mixin-tfoot';\nimport { theadMixin, props as theadProps } from './helpers/mixin-thead';\nimport { topRowMixin, props as topRowProps } from './helpers/mixin-top-row'; // --- Props ---\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, idProps), bottomRowProps), busyProps), captionProps), colgroupProps), emptyProps), filteringProps), itemsProps), paginationProps), providerProps), selectableProps), sortingProps), stackedProps), tableRendererProps), tbodyProps), tfootProps), theadProps), topRowProps)), NAME_TABLE); // --- Main component ---\n// @vue/component\n\nexport var BTable = /*#__PURE__*/Vue.extend({\n name: NAME_TABLE,\n // Order of mixins is important!\n // They are merged from first to last, followed by this component\n mixins: [// General mixins\n attrsMixin, hasListenerMixin, idMixin, normalizeSlotMixin, // Required table mixins\n itemsMixin, tableRendererMixin, stackedMixin, theadMixin, tfootMixin, tbodyMixin, // Table features mixins\n stackedMixin, filteringMixin, sortingMixin, paginationMixin, captionMixin, colgroupMixin, selectableMixin, emptyMixin, topRowMixin, bottomRowMixin, busyMixin, providerMixin],\n props: props // Render function is provided by `tableRendererMixin`\n\n});","var anObject = require('../internals/an-object');\nvar aFunction = require('../internals/a-function');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `SpeciesConstructor` abstract operation\n// https://tc39.github.io/ecma262/#sec-speciesconstructor\nmodule.exports = function (O, defaultConstructor) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? defaultConstructor : aFunction(S);\n};\n","/*\n * Consistent and stable sort function across JavaScript platforms\n *\n * Inconsistent sorts can cause SSR problems between client and server\n * such as in if sortBy is applied to the data on server side render.\n * Chrome and V8 native sorts are inconsistent/unstable\n *\n * This function uses native sort with fallback to index compare when the a and b\n * compare returns 0\n *\n * Algorithm based on:\n * https://stackoverflow.com/questions/1427608/fast-stable-sorting-algorithm-implementation-in-javascript/45422645#45422645\n *\n * @param {array} array to sort\n * @param {function} sort compare function\n * @return {array}\n */\nexport var stableSort = function stableSort(array, compareFn) {\n // Using `.bind(compareFn)` on the wrapped anonymous function improves\n // performance by avoiding the function call setup. We don't use an arrow\n // function here as it binds `this` to the `stableSort` context rather than\n // the `compareFn` context, which wouldn't give us the performance increase.\n return array.map(function (a, index) {\n return [index, a];\n }).sort(function (a, b) {\n return this(a[1], b[1]) || a[0] - b[0];\n }.bind(compareFn)).map(function (e) {\n return e[1];\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 `