{"version":3,"sources":["webpack:///./node_modules/bootstrap-vue/esm/components/spinner/spinner.js","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/bootstrap-vue/esm/components/input-group/input-group-addon.js","webpack:///./node_modules/core-js/internals/species-constructor.js","webpack:///./node_modules/bootstrap-vue/esm/components/collapse/collapse.js","webpack:///./node_modules/bootstrap-vue/esm/components/collapse/helpers/bv-collapse.js","webpack:///./node_modules/bootstrap-vue/esm/components/input-group/input-group-prepend.js","webpack:///./node_modules/bootstrap-vue/esm/components/input-group/input-group.js","webpack:///./node_modules/bootstrap-vue/esm/utils/stable-sort.js","webpack:///./node_modules/bootstrap-vue/esm/components/overlay/overlay.js","webpack:///./node_modules/bootstrap-vue/esm/mixins/pagination.js","webpack:///./node_modules/bootstrap-vue/esm/components/input-group/input-group-append.js","webpack:///./node_modules/bootstrap-vue/esm/components/input-group/input-group-text.js","webpack:///./node_modules/bootstrap-vue/esm/constants/classes.js"],"names":["_defineProperty","obj","key","value","Object","defineProperty","enumerable","configurable","writable","props","label","role","small","tag","type","variant","BSpinner","extend","name","functional","render","h","_ref","_class","data","slots","scopedSlots","$slots","$scopedSlots","$label","staticClass","attrs","class","concat","stringifyObjectValues","sort","map","k","filter","v","join","id","inline","novalidate","validated","BForm","children","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","getOwnPropertySymbols","symbols","sym","getOwnPropertyDescriptor","_objectSpread","target","arguments","forEach","getOwnPropertyDescriptors","defineProperties","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","defaultPrevented","$el","contains","focusCurrent","makePage","pageNum","linkProps","bottomRowMixin","renderBottomRow","fields","computedFields","stacked","tbodyTrClass","tbodyTrAttr","$createElement","hasNormalizedSlot","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","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","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","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","append","isText","BInputGroupAddon","aFunction","wellKnownSymbol","SPECIES","module","exports","defaultConstructor","el","scrollHeight","height","TRANSITION_PROPS","css","enterClass","enterActiveClass","enterToClass","leaveClass","leaveActiveClass","leaveToClass","TRANSITION_HANDLERS","enter","afterEnter","leave","afterLeave","BVCollapse","appear","default","ROOT_ACTION_EVENT_NAME_TOGGLE","ROOT_ACTION_EVENT_NAME_REQUEST_STATE","ROOT_EVENT_NAME_ACCORDION","ROOT_EVENT_NAME_STATE","ROOT_EVENT_NAME_SYNC_STATE","_makeModelMixin","defaultValue","modelMixin","mixin","modelProps","MODEL_PROP_NAME","prop","MODEL_EVENT_NAME","accordion","isNav","BCollapse","show","transitioning","classObject","collapse","slotScope","visible","close","emitState","handleToggleEvt","handleAccordionEvt","setWindowEvents","handleResize","safeId","emitSync","updated","deactivated","activated","window","toggle","onEnter","onAfterEnter","onLeave","onAfterLeave","checkDisplayBlock","restore","isBlock","display","clickHandler","openedId","openAccordion","isThis","$content","directives","click","BInputGroupPrepend","appendHtml","prepend","prependHtml","size","BInputGroup","$prepend","hasPrependSlot","$append","hasAppendSlot","stableSort","compareFn","bind","POSITION_COVER","top","left","bottom","right","bgColor","blur","fixed","noCenter","noFade","noWrap","opacity","number","overlayTag","rounded","spinnerSmall","spinnerType","spinnerVariant","wrapTag","zIndex","BOverlay","computedRounded","computedVariant","defaultOverlayFn","$overlay","$background","style","backgroundColor","backdropFilter","transform","validator","ELLIPSIS_THRESHOLD","DEFAULT_LIMIT","makePageArray","startNumber","_","classes","sanitizeLimit","sanitizeCurrentPage","val","page","onSpaceKey","keyCode","immediatePropagation","currentTarget","align","ariaLabel","disabled","ellipsisClass","ellipsisText","firstClass","firstNumber","firstText","hideEllipsis","hideGotoEndButtons","labelFirstPage","labelLastPage","labelNextPage","labelPage","labelPrevPage","lastClass","lastNumber","lastText","nextClass","nextText","pageClass","pills","prevClass","prevText","localLimit","btnSize","alignment","styleClass","computedCurrentPage","paginationParams","showFirstDots","showLastDots","numberOfLinks","lastPageNumber","pageList","_this$paginationParam","pages","_i","_i2","_i3","handleKeyNav","propagation","focusFirst","focusPrev","focusLast","focusNext","getButtons","btn","find","_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","BInputGroupAppend","BInputGroupText","CLASS_NAME_SHOW"],"mappings":"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","file":"js/chunk-21295864.5e066c7d.js","sourcesContent":["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, mergeData } from '../../vue';\nimport { NAME_SPINNER } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../constants/props';\nimport { SLOT_NAME_LABEL } from '../../constants/slots';\nimport { normalizeSlot } from '../../utils/normalize-slot';\nimport { makeProp, makePropsConfigurable } from '../../utils/props'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n label: makeProp(PROP_TYPE_STRING),\n role: makeProp(PROP_TYPE_STRING, 'status'),\n small: makeProp(PROP_TYPE_BOOLEAN, false),\n tag: makeProp(PROP_TYPE_STRING, 'span'),\n type: makeProp(PROP_TYPE_STRING, 'border'),\n variant: makeProp(PROP_TYPE_STRING)\n}, NAME_SPINNER); // --- Main component ---\n// @vue/component\n\nexport var BSpinner = /*#__PURE__*/Vue.extend({\n name: NAME_SPINNER,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var _class;\n\n var props = _ref.props,\n data = _ref.data,\n slots = _ref.slots,\n scopedSlots = _ref.scopedSlots;\n var $slots = slots();\n var $scopedSlots = scopedSlots || {};\n var $label = normalizeSlot(SLOT_NAME_LABEL, {}, $scopedSlots, $slots) || props.label;\n\n if ($label) {\n $label = h('span', {\n staticClass: 'sr-only'\n }, $label);\n }\n\n return h(props.tag, mergeData(data, {\n attrs: {\n role: $label ? props.role || 'status' : null,\n 'aria-hidden': $label ? null : 'true'\n },\n class: (_class = {}, _defineProperty(_class, \"spinner-\".concat(props.type), props.type), _defineProperty(_class, \"spinner-\".concat(props.type, \"-sm\"), props.small), _defineProperty(_class, \"text-\".concat(props.variant), props.variant), _class)\n }), [$label || h()]);\n }\n});","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});","import { Vue, mergeData } from '../../vue';\nimport { NAME_INPUT_GROUP_ADDON } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../constants/props';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { BInputGroupText } from './input-group-text'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n append: makeProp(PROP_TYPE_BOOLEAN, false),\n id: makeProp(PROP_TYPE_STRING),\n isText: makeProp(PROP_TYPE_BOOLEAN, false),\n tag: makeProp(PROP_TYPE_STRING, 'div')\n}, NAME_INPUT_GROUP_ADDON); // --- Main component ---\n// @vue/component\n\nexport var BInputGroupAddon = /*#__PURE__*/Vue.extend({\n name: NAME_INPUT_GROUP_ADDON,\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 var append = props.append;\n return h(props.tag, mergeData(data, {\n class: {\n 'input-group-append': append,\n 'input-group-prepend': !append\n },\n attrs: {\n id: props.id\n }\n }), props.isText ? [h(BInputGroupText, children)] : children);\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","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_COLLAPSE } from '../../constants/components';\nimport { CLASS_NAME_SHOW } from '../../constants/classes';\nimport { IS_BROWSER } from '../../constants/env';\nimport { EVENT_NAME_HIDDEN, EVENT_NAME_HIDE, EVENT_NAME_SHOW, EVENT_NAME_SHOWN, EVENT_OPTIONS_NO_CAPTURE } from '../../constants/events';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../constants/props';\nimport { SLOT_NAME_DEFAULT } from '../../constants/slots';\nimport { addClass, hasClass, removeClass, closest, matches, getCS } from '../../utils/dom';\nimport { getRootActionEventName, getRootEventName, eventOnOff } from '../../utils/events';\nimport { makeModelMixin } from '../../utils/model';\nimport { sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { idMixin, props as idProps } from '../../mixins/id';\nimport { listenOnRootMixin } from '../../mixins/listen-on-root';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { BVCollapse } from './helpers/bv-collapse'; // --- Constants ---\n\nvar ROOT_ACTION_EVENT_NAME_TOGGLE = getRootActionEventName(NAME_COLLAPSE, 'toggle');\nvar ROOT_ACTION_EVENT_NAME_REQUEST_STATE = getRootActionEventName(NAME_COLLAPSE, 'request-state');\nvar ROOT_EVENT_NAME_ACCORDION = getRootEventName(NAME_COLLAPSE, 'accordion');\nvar ROOT_EVENT_NAME_STATE = getRootEventName(NAME_COLLAPSE, 'state');\nvar ROOT_EVENT_NAME_SYNC_STATE = getRootEventName(NAME_COLLAPSE, 'sync-state');\n\nvar _makeModelMixin = makeModelMixin('visible', {\n type: PROP_TYPE_BOOLEAN,\n defaultValue: false\n}),\n modelMixin = _makeModelMixin.mixin,\n modelProps = _makeModelMixin.props,\n MODEL_PROP_NAME = _makeModelMixin.prop,\n MODEL_EVENT_NAME = _makeModelMixin.event; // --- Props ---\n\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread(_objectSpread({}, idProps), modelProps), {}, {\n // If `true` (and `visible` is `true` on mount), animate initially visible\n accordion: makeProp(PROP_TYPE_STRING),\n appear: makeProp(PROP_TYPE_BOOLEAN, false),\n isNav: makeProp(PROP_TYPE_BOOLEAN, false),\n tag: makeProp(PROP_TYPE_STRING, 'div')\n})), NAME_COLLAPSE); // --- Main component ---\n// @vue/component\n\nexport var BCollapse = /*#__PURE__*/Vue.extend({\n name: NAME_COLLAPSE,\n mixins: [idMixin, modelMixin, normalizeSlotMixin, listenOnRootMixin],\n props: props,\n data: function data() {\n return {\n show: this[MODEL_PROP_NAME],\n transitioning: false\n };\n },\n computed: {\n classObject: function classObject() {\n var transitioning = this.transitioning;\n return {\n 'navbar-collapse': this.isNav,\n collapse: !transitioning,\n show: this.show && !transitioning\n };\n },\n slotScope: function slotScope() {\n var _this = this;\n\n return {\n visible: this.show,\n close: function close() {\n _this.show = false;\n }\n };\n }\n },\n watch: (_watch = {}, _defineProperty(_watch, MODEL_PROP_NAME, function (newValue) {\n if (newValue !== this.show) {\n this.show = newValue;\n }\n }), _defineProperty(_watch, \"show\", function show(newValue, oldValue) {\n if (newValue !== oldValue) {\n this.emitState();\n }\n }), _watch),\n created: function created() {\n this.show = this[MODEL_PROP_NAME];\n },\n mounted: function mounted() {\n var _this2 = this;\n\n this.show = this[MODEL_PROP_NAME]; // Listen for toggle events to open/close us\n\n this.listenOnRoot(ROOT_ACTION_EVENT_NAME_TOGGLE, this.handleToggleEvt); // Listen to other collapses for accordion events\n\n this.listenOnRoot(ROOT_EVENT_NAME_ACCORDION, this.handleAccordionEvt);\n\n if (this.isNav) {\n // Set up handlers\n this.setWindowEvents(true);\n this.handleResize();\n }\n\n this.$nextTick(function () {\n _this2.emitState();\n }); // Listen for \"Sync state\" requests from `v-b-toggle`\n\n this.listenOnRoot(ROOT_ACTION_EVENT_NAME_REQUEST_STATE, function (id) {\n if (id === _this2.safeId()) {\n _this2.$nextTick(_this2.emitSync);\n }\n });\n },\n updated: function updated() {\n // Emit a private event every time this component updates to ensure\n // the toggle button is in sync with the collapse's state\n // It is emitted regardless if the visible state changes\n this.emitSync();\n },\n\n /* istanbul ignore next */\n deactivated: function deactivated() {\n if (this.isNav) {\n this.setWindowEvents(false);\n }\n },\n\n /* istanbul ignore next */\n activated: function activated() {\n if (this.isNav) {\n this.setWindowEvents(true);\n }\n\n this.emitSync();\n },\n beforeDestroy: function beforeDestroy() {\n // Trigger state emit if needed\n this.show = false;\n\n if (this.isNav && IS_BROWSER) {\n this.setWindowEvents(false);\n }\n },\n methods: {\n setWindowEvents: function setWindowEvents(on) {\n eventOnOff(on, window, 'resize', this.handleResize, EVENT_OPTIONS_NO_CAPTURE);\n eventOnOff(on, window, 'orientationchange', this.handleResize, EVENT_OPTIONS_NO_CAPTURE);\n },\n toggle: function toggle() {\n this.show = !this.show;\n },\n onEnter: function onEnter() {\n this.transitioning = true; // This should be moved out so we can add cancellable events\n\n this.$emit(EVENT_NAME_SHOW);\n },\n onAfterEnter: function onAfterEnter() {\n this.transitioning = false;\n this.$emit(EVENT_NAME_SHOWN);\n },\n onLeave: function onLeave() {\n this.transitioning = true; // This should be moved out so we can add cancellable events\n\n this.$emit(EVENT_NAME_HIDE);\n },\n onAfterLeave: function onAfterLeave() {\n this.transitioning = false;\n this.$emit(EVENT_NAME_HIDDEN);\n },\n emitState: function emitState() {\n var show = this.show,\n accordion = this.accordion;\n var id = this.safeId();\n this.$emit(MODEL_EVENT_NAME, show); // Let `v-b-toggle` know the state of this collapse\n\n this.emitOnRoot(ROOT_EVENT_NAME_STATE, id, show);\n\n if (accordion && show) {\n // Tell the other collapses in this accordion to close\n this.emitOnRoot(ROOT_EVENT_NAME_ACCORDION, id, accordion);\n }\n },\n emitSync: function emitSync() {\n // Emit a private event every time this component updates to ensure\n // the toggle button is in sync with the collapse's state\n // It is emitted regardless if the visible state changes\n this.emitOnRoot(ROOT_EVENT_NAME_SYNC_STATE, this.safeId(), this.show);\n },\n checkDisplayBlock: function checkDisplayBlock() {\n // Check to see if the collapse has `display: block !important` set\n // We can't set `display: none` directly on `this.$el`, as it would\n // trigger a new transition to start (or cancel a current one)\n var $el = this.$el;\n var restore = hasClass($el, CLASS_NAME_SHOW);\n removeClass($el, CLASS_NAME_SHOW);\n var isBlock = getCS($el).display === 'block';\n\n if (restore) {\n addClass($el, CLASS_NAME_SHOW);\n }\n\n return isBlock;\n },\n clickHandler: function clickHandler(event) {\n var el = event.target; // If we are in a nav/navbar, close the collapse when non-disabled link clicked\n\n /* istanbul ignore next: can't test `getComputedStyle()` in JSDOM */\n\n if (!this.isNav || !el || getCS(this.$el).display !== 'block') {\n return;\n } // Only close the collapse if it is not forced to be `display: block !important`\n\n\n if ((matches(el, '.nav-link,.dropdown-item') || closest('.nav-link,.dropdown-item', el)) && !this.checkDisplayBlock()) {\n this.show = false;\n }\n },\n handleToggleEvt: function handleToggleEvt(id) {\n if (id === this.safeId()) {\n this.toggle();\n }\n },\n handleAccordionEvt: function handleAccordionEvt(openedId, openAccordion) {\n var accordion = this.accordion,\n show = this.show;\n\n if (!accordion || accordion !== openAccordion) {\n return;\n }\n\n var isThis = openedId === this.safeId(); // Open this collapse if not shown or\n // close this collapse if shown\n\n if (isThis && !show || !isThis && show) {\n this.toggle();\n }\n },\n handleResize: function handleResize() {\n // Handler for orientation/resize to set collapsed state in nav/navbar\n this.show = getCS(this.$el).display === 'block';\n }\n },\n render: function render(h) {\n var appear = this.appear;\n var $content = h(this.tag, {\n class: this.classObject,\n directives: [{\n name: 'show',\n value: this.show\n }],\n attrs: {\n id: this.safeId()\n },\n on: {\n click: this.clickHandler\n }\n }, this.normalizeSlot(SLOT_NAME_DEFAULT, this.slotScope));\n return h(BVCollapse, {\n props: {\n appear: appear\n },\n on: {\n enter: this.onEnter,\n afterEnter: this.onAfterEnter,\n leave: this.onLeave,\n afterLeave: this.onAfterLeave\n }\n }, [$content]);\n }\n});","// Generic collapse transion helper component\n//\n// Note:\n// Applies the classes `collapse`, `show` and `collapsing`\n// during the enter/leave transition phases only\n// Although it appears that Vue may be leaving the classes\n// in-place after the transition completes\nimport { Vue, mergeData } from '../../../vue';\nimport { NAME_COLLAPSE_HELPER } from '../../../constants/components';\nimport { getBCR, reflow, removeStyle, requestAF, setStyle } from '../../../utils/dom'; // --- Helper methods ---\n// Transition event handler helpers\n\nvar onEnter = function onEnter(el) {\n setStyle(el, 'height', 0); // In a `requestAF()` for `appear` to work\n\n requestAF(function () {\n reflow(el);\n setStyle(el, 'height', \"\".concat(el.scrollHeight, \"px\"));\n });\n};\n\nvar onAfterEnter = function onAfterEnter(el) {\n removeStyle(el, 'height');\n};\n\nvar onLeave = function onLeave(el) {\n setStyle(el, 'height', 'auto');\n setStyle(el, 'display', 'block');\n setStyle(el, 'height', \"\".concat(getBCR(el).height, \"px\"));\n reflow(el);\n setStyle(el, 'height', 0);\n};\n\nvar onAfterLeave = function onAfterLeave(el) {\n removeStyle(el, 'height');\n}; // --- Constants ---\n// Default transition props\n// `appear` will use the enter classes\n\n\nvar TRANSITION_PROPS = {\n css: true,\n enterClass: '',\n enterActiveClass: 'collapsing',\n enterToClass: 'collapse show',\n leaveClass: 'collapse show',\n leaveActiveClass: 'collapsing',\n leaveToClass: 'collapse'\n}; // Default transition handlers\n// `appear` will use the enter handlers\n\nvar TRANSITION_HANDLERS = {\n enter: onEnter,\n afterEnter: onAfterEnter,\n leave: onLeave,\n afterLeave: onAfterLeave\n}; // --- Main component ---\n// @vue/component\n\nexport var BVCollapse = /*#__PURE__*/Vue.extend({\n name: NAME_COLLAPSE_HELPER,\n functional: true,\n props: {\n appear: {\n // If `true` (and `visible` is `true` on mount), animate initially visible\n type: Boolean,\n default: false\n }\n },\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n return h('transition', // We merge in the `appear` prop last\n mergeData(data, {\n props: TRANSITION_PROPS,\n on: TRANSITION_HANDLERS\n }, {\n props: props\n }), // Note: `` supports a single root element only\n children);\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, mergeData } from '../../vue';\nimport { NAME_INPUT_GROUP_PREPEND } from '../../constants/components';\nimport { omit } from '../../utils/object';\nimport { makePropsConfigurable } from '../../utils/props';\nimport { BInputGroupAddon, props as BInputGroupAddonProps } from './input-group-addon'; // --- Props ---\n\nexport var props = makePropsConfigurable(omit(BInputGroupAddonProps, ['append']), NAME_INPUT_GROUP_PREPEND); // --- Main component ---\n// @vue/component\n\nexport var BInputGroupPrepend = /*#__PURE__*/Vue.extend({\n name: NAME_INPUT_GROUP_PREPEND,\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 // Pass all our data down to child, and set `append` to `true`\n return h(BInputGroupAddon, mergeData(data, {\n props: _objectSpread(_objectSpread({}, props), {}, {\n append: false\n })\n }), children);\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, mergeData } from '../../vue';\nimport { NAME_INPUT_GROUP } from '../../constants/components';\nimport { PROP_TYPE_STRING } from '../../constants/props';\nimport { SLOT_NAME_APPEND, SLOT_NAME_DEFAULT, SLOT_NAME_PREPEND } from '../../constants/slots';\nimport { htmlOrText } from '../../utils/html';\nimport { hasNormalizedSlot, normalizeSlot } from '../../utils/normalize-slot';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { BInputGroupAppend } from './input-group-append';\nimport { BInputGroupPrepend } from './input-group-prepend';\nimport { BInputGroupText } from './input-group-text'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n append: makeProp(PROP_TYPE_STRING),\n appendHtml: makeProp(PROP_TYPE_STRING),\n id: makeProp(PROP_TYPE_STRING),\n prepend: makeProp(PROP_TYPE_STRING),\n prependHtml: makeProp(PROP_TYPE_STRING),\n size: makeProp(PROP_TYPE_STRING),\n tag: makeProp(PROP_TYPE_STRING, 'div')\n}, NAME_INPUT_GROUP); // --- Main component ---\n// @vue/component\n\nexport var BInputGroup = /*#__PURE__*/Vue.extend({\n name: NAME_INPUT_GROUP,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n slots = _ref.slots,\n scopedSlots = _ref.scopedSlots;\n var prepend = props.prepend,\n prependHtml = props.prependHtml,\n append = props.append,\n appendHtml = props.appendHtml,\n size = props.size;\n var $scopedSlots = scopedSlots || {};\n var $slots = slots();\n var slotScope = {};\n var $prepend = h();\n var hasPrependSlot = hasNormalizedSlot(SLOT_NAME_PREPEND, $scopedSlots, $slots);\n\n if (hasPrependSlot || prepend || prependHtml) {\n $prepend = h(BInputGroupPrepend, [hasPrependSlot ? normalizeSlot(SLOT_NAME_PREPEND, slotScope, $scopedSlots, $slots) : h(BInputGroupText, {\n domProps: htmlOrText(prependHtml, prepend)\n })]);\n }\n\n var $append = h();\n var hasAppendSlot = hasNormalizedSlot(SLOT_NAME_APPEND, $scopedSlots, $slots);\n\n if (hasAppendSlot || append || appendHtml) {\n $append = h(BInputGroupAppend, [hasAppendSlot ? normalizeSlot(SLOT_NAME_APPEND, slotScope, $scopedSlots, $slots) : h(BInputGroupText, {\n domProps: htmlOrText(appendHtml, append)\n })]);\n }\n\n return h(props.tag, mergeData(data, {\n staticClass: 'input-group',\n class: _defineProperty({}, \"input-group-\".concat(size), size),\n attrs: {\n id: props.id || null,\n role: 'group'\n }\n }), [$prepend, normalizeSlot(SLOT_NAME_DEFAULT, slotScope, $scopedSlots, $slots), $append]);\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};","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_OVERLAY } from '../../constants/components';\nimport { EVENT_NAME_CLICK, EVENT_NAME_HIDDEN, EVENT_NAME_SHOWN } from '../../constants/events';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_BOOLEAN_STRING, PROP_TYPE_NUMBER_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { SLOT_NAME_OVERLAY } from '../../constants/slots';\nimport { toFloat } from '../../utils/number';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { BSpinner } from '../spinner/spinner';\nimport { BVTransition } from '../transition/bv-transition'; // --- Constants ---\n\nvar POSITION_COVER = {\n top: 0,\n left: 0,\n bottom: 0,\n right: 0\n}; // --- Props ---\n\nexport var props = makePropsConfigurable({\n // Alternative to variant, allowing a specific\n // CSS color to be applied to the overlay\n bgColor: makeProp(PROP_TYPE_STRING),\n blur: makeProp(PROP_TYPE_STRING, '2px'),\n fixed: makeProp(PROP_TYPE_BOOLEAN, false),\n noCenter: makeProp(PROP_TYPE_BOOLEAN, false),\n noFade: makeProp(PROP_TYPE_BOOLEAN, false),\n // If `true, does not render the default slot\n // and switches to absolute positioning\n noWrap: makeProp(PROP_TYPE_BOOLEAN, false),\n opacity: makeProp(PROP_TYPE_NUMBER_STRING, 0.85, function (value) {\n var number = toFloat(value, 0);\n return number >= 0 && number <= 1;\n }),\n overlayTag: makeProp(PROP_TYPE_STRING, 'div'),\n rounded: makeProp(PROP_TYPE_BOOLEAN_STRING, false),\n show: makeProp(PROP_TYPE_BOOLEAN, false),\n spinnerSmall: makeProp(PROP_TYPE_BOOLEAN, false),\n spinnerType: makeProp(PROP_TYPE_STRING, 'border'),\n spinnerVariant: makeProp(PROP_TYPE_STRING),\n variant: makeProp(PROP_TYPE_STRING, 'light'),\n wrapTag: makeProp(PROP_TYPE_STRING, 'div'),\n zIndex: makeProp(PROP_TYPE_NUMBER_STRING, 10)\n}, NAME_OVERLAY); // --- Main component ---\n// @vue/component\n\nexport var BOverlay = /*#__PURE__*/Vue.extend({\n name: NAME_OVERLAY,\n mixins: [normalizeSlotMixin],\n props: props,\n computed: {\n computedRounded: function computedRounded() {\n var rounded = this.rounded;\n return rounded === true || rounded === '' ? 'rounded' : !rounded ? '' : \"rounded-\".concat(rounded);\n },\n computedVariant: function computedVariant() {\n var variant = this.variant;\n return variant && !this.bgColor ? \"bg-\".concat(variant) : '';\n },\n slotScope: function slotScope() {\n return {\n spinnerType: this.spinnerType || null,\n spinnerVariant: this.spinnerVariant || null,\n spinnerSmall: this.spinnerSmall\n };\n }\n },\n methods: {\n defaultOverlayFn: function defaultOverlayFn(_ref) {\n var spinnerType = _ref.spinnerType,\n spinnerVariant = _ref.spinnerVariant,\n spinnerSmall = _ref.spinnerSmall;\n return this.$createElement(BSpinner, {\n props: {\n type: spinnerType,\n variant: spinnerVariant,\n small: spinnerSmall\n }\n });\n }\n },\n render: function render(h) {\n var _this = this;\n\n var show = this.show,\n fixed = this.fixed,\n noFade = this.noFade,\n noWrap = this.noWrap,\n slotScope = this.slotScope;\n var $overlay = h();\n\n if (show) {\n var $background = h('div', {\n staticClass: 'position-absolute',\n class: [this.computedVariant, this.computedRounded],\n style: _objectSpread(_objectSpread({}, POSITION_COVER), {}, {\n opacity: this.opacity,\n backgroundColor: this.bgColor || null,\n backdropFilter: this.blur ? \"blur(\".concat(this.blur, \")\") : null\n })\n });\n var $content = h('div', {\n staticClass: 'position-absolute',\n style: this.noCenter ?\n /* istanbul ignore next */\n _objectSpread({}, POSITION_COVER) : {\n top: '50%',\n left: '50%',\n transform: 'translateX(-50%) translateY(-50%)'\n }\n }, [this.normalizeSlot(SLOT_NAME_OVERLAY, slotScope) || this.defaultOverlayFn(slotScope)]);\n $overlay = h(this.overlayTag, {\n staticClass: 'b-overlay',\n class: {\n 'position-absolute': !noWrap || noWrap && !fixed,\n 'position-fixed': noWrap && fixed\n },\n style: _objectSpread(_objectSpread({}, POSITION_COVER), {}, {\n zIndex: this.zIndex || 10\n }),\n on: {\n click: function click(event) {\n return _this.$emit(EVENT_NAME_CLICK, event);\n }\n },\n key: 'overlay'\n }, [$background, $content]);\n } // Wrap in a fade transition\n\n\n $overlay = h(BVTransition, {\n props: {\n noFade: noFade,\n appear: true\n },\n on: {\n 'after-enter': function afterEnter() {\n return _this.$emit(EVENT_NAME_SHOWN);\n },\n 'after-leave': function afterLeave() {\n return _this.$emit(EVENT_NAME_HIDDEN);\n }\n }\n }, [$overlay]);\n\n if (noWrap) {\n return $overlay;\n }\n\n return h(this.wrapTag, {\n staticClass: 'b-overlay-wrap position-relative',\n attrs: {\n 'aria-busy': show ? 'true' : null\n }\n }, noWrap ? [$overlay] : [this.normalizeSlot(), $overlay]);\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 `