{"version":3,"sources":["webpack:///./node_modules/core-js/modules/es.json.to-string-tag.js","webpack:///./node_modules/core-js/modules/es.object.set-prototype-of.js","webpack:///./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","webpack:///./node_modules/core-js/modules/es.object.proto.js","webpack:///./node_modules/core-js/modules/es.math.to-string-tag.js","webpack:///./node_modules/bootstrap-vue/esm/mixins/has-listener.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/tr.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-bottom-row.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/td.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-busy.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-caption.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-colgroup.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-empty.js","webpack:///./node_modules/bootstrap-vue/esm/utils/stringify-object-values.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/constants.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/normalize-fields.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-items.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-stacked.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-table-renderer.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/tbody.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/filter-event.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/text-selection-active.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/th.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-tbody-row.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-tbody.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/tfoot.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-tfoot.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/thead.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-thead.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-top-row.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/table.js","webpack:///./node_modules/core-js/modules/es.object.get-prototype-of.js","webpack:///./node_modules/bootstrap-vue/esm/components/progress/progress-bar.js","webpack:///./node_modules/bootstrap-vue/esm/components/progress/progress.js","webpack:///./node_modules/core-js/modules/es.symbol.to-string-tag.js","webpack:///./node_modules/core-js/modules/es.symbol.async-iterator.js","webpack:///./src/@core/mixins/ui/transition.js","webpack:///./node_modules/@babel/runtime/helpers/esm/regeneratorRuntime.js","webpack:///./node_modules/bootstrap-vue/esm/components/badge/badge.js","webpack:///./node_modules/bootstrap-vue/esm/utils/noop.js"],"names":["global","setToStringTag","JSON","$","setPrototypeOf","target","stat","asyncGeneratorStep","gen","resolve","reject","_next","_throw","key","arg","info","value","error","done","Promise","then","_asyncToGenerator","fn","self","this","args","arguments","apply","err","undefined","DESCRIPTORS","defineBuiltInAccessor","isObject","toObject","requireObjectCoercible","getPrototypeOf","Object","ObjectPrototype","prototype","PROTO","configurable","get","set","proto","O","Math","hasListenerMixin","extend","methods","hasListener","name","$listeners","$events","_events","length","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","_objectSpread","i","source","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","obj","writable","LIGHT","DARK","variant","BTr","mixins","attrs","listeners","provide","bvTableTr","inject","bvTableRowGroup","default","inheritAttrs","props","computed","inTbody","isTbody","inThead","isThead","inTfoot","isTfoot","isDark","isStacked","isResponsive","isStickyHeader","hasStickyHeader","tableVariant","headVariant","footVariant","isRowDark","trClasses","concat","trAttrs","role","bvAttrs","render","h","class","on","bvListeners","normalizeSlot","bottomRowMixin","renderBottomRow","fields","computedFields","stacked","tbodyTrClass","tbodyTrAttr","$createElement","hasNormalizedSlot","staticClass","columns","colspan","rowspan","stackedHeading","stickyColumn","BTd","tag","isStackedCell","isStickyColumn","rowVariant","computedColspan","computedRowspan","cellClasses","cellAttrs","headOrFoot","scope","$content","MODEL_PROP_NAME_BUSY","MODEL_EVENT_NAME_BUSY","busyMixin","data","localBusy","computedBusy","watch","newValue","oldValue","$emit","stopIfBusy","event","renderBusy","caption","captionHtml","captionMixin","captionId","safeId","renderCaption","$caption","hasCaptionSlot","id","domProps","html","colgroupMixin","renderColgroup","$colgroup","emptyFilteredHtml","emptyFilteredText","emptyHtml","emptyText","showEmpty","emptyMixin","renderEmpty","items","computedItems","$empty","isFiltered","stringifyObjectValues","sort","map","k","v","join","FIELD_KEY_CELL_VARIANT","FIELD_KEY_ROW_VARIANT","FIELD_KEY_SHOW_DETAILS","IGNORED_FIELD_KEYS","reduce","result","EVENT_FILTER","row","ignoreFields","includeFields","fieldsObj","formattedRow","field","filterByFormatted","formatter","allowedKeys","array","_toConsumableArray","arr","_arrayWithoutHoles","_iterableToArray","_unsupportedIterableToArray","_nonIterableSpread","TypeError","o","minLen","_arrayLikeToArray","n","toString","call","slice","constructor","Array","from","test","iter","Symbol","iterator","isArray","len","arr2","DEBOUNCE_DEPRECATED_MSG","filterDebounce","String","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","_this","timeout","setTimeout","_ref","created","_this2","$nextTick","Boolean","beforeDestroy","clearTimeout","item","_this3","regExp","pattern","replace","RegExp","lastIndex","computedFieldsObj","label","origFields","f","sample","memo","_makeModelMixin","type","defaultValue","modelMixin","mixin","modelProps","MODEL_PROP_NAME","prop","MODEL_EVENT_NAME","primaryKey","itemsMixin","$parent","paginatedItems","sortedItems","context","sortBy","localSortBy","sortDesc","localSortDesc","perPage","math","currentPage","apiUrl","mounted","getFieldFormatter","paginationMixin","localPaging","noProviderPaging","ROOT_EVENT_NAME_REFRESHED","ROOT_ACTION_EVENT_NAME_REFRESH","noProviderSorting","providerMixin","providerTriggerContext","ctx","_providerUpdate","listenOnRoot","refresh","$off","$on","clearSelected","_providerSetLocal","emitOnRoot","e","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","index","isRowSelected","selectedLastClicked","unselectRow","selectAllRows","selectableRowClasses","dark","selectableRowAttrs","method","selectionHandler","selected","shiftKey","ctrlKey","metaKey","a","b","_ref$sortBy","_ref$formatter","_ref$locale","locale","_ref$localeOptions","localeOptions","_ref$nullLast","nullLast","aa","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","sortable","sortCompareLocale","sortNullLast","sortCompare","sortCompareOptions","usage","sortByFormatted","handleSort","isFoot","sortChanged","toggleLocalSortDesc","sortDirection","sortKey","sortTheadThClasses","sortIconLeft","sortTheadThAttrs","ariaSort","sortTheadThLabel","labelSorting","stackedMixin","isStackedAlways","stackedTableClasses","bordered","borderless","captionTop","fixed","hover","noBorderCollapse","outlined","responsive","small","stickyHeader","striped","tableClass","tableRendererMixin","bvTable","wrapperClasses","wrapperStyles","maxHeight","tableClasses","isTableSimple","border","tableAttrs","adb","ariaAttrs","rowCount","renderThead","renderTbody","renderTfoot","$table","style","tbodyTransitionHandlers","tbodyTransitionProps","BTbody","isTransitionGroup","tbodyAttrs","tbodyProps","nativeOn","TABLE_TAG_NAMES","el","disabled","indexOf","tagName","labelFor","input","document","sel","trim","containsNode","BTh","extends","detailsTdClass","tbodyRowMixin","getTdValues","tdValue","getThValues","thValue","getFormattedValue","toggleDetailsFactory","hasDetailsSlot","$set","rowHovered","tbodyRowEvtStopped","emitTbodyRowEvent","rowUnhovered","renderTbodyRowCell","colIndex","rowIndex","isRowHeader","formatted","cellTag","cellVariant","tdClass","thAttr","tdAttr","slotScope","unformatted","toggleDetails","detailsShowing","rowSelected","slotName","$_bodyFieldSlotNameCache","$childNodes","renderTbodyRow","rowShowDetails","hasRowClickHandler","$rows","detailsId","$tds","ariaRowIndex","primaryKeyValue","rowKey","rowId","selectableClasses","selectableAttrs","userTrClasses","userTrAttrs","tabindex","mouseenter","mouseleave","ref","refInFor","detailsScope","$details","userDetailsTrClasses","userDetailsTrAttrs","getCellSlotName","tbodyClass","tbodyMixin","getTbodyTrs","$refs","tbody","$el","trs","tr","children","getTbodyTrIndex","onTbodyRowKeydown","keyCode","tabIndex","onTBodyRowClicked","shift","onTbodyRowMiddleMouseRowClicked","which","onTbodyRowContextmenu","onTbodyRowDblClicked","renderTopRow","$busy","cache","defaultSlotName","lowercaseSlotName","toLowerCase","handlers","auxclick","contextmenu","dblclick","click","keydown","$tbody","$props","BTfoot","tfootClasses","tfootAttrs","footClone","footRowVariant","tfootClass","tfootTrClass","tfootMixin","renderTFootCustom","BThead","theadClasses","theadAttrs","getHeadSlotName","getFootSlotName","headRowVariant","theadClass","theadTrClass","theadMixin","fieldClasses","thClass","headClicked","hasHeadClickListener","noop","makeCell","labelHtml","ariaLabel","headerTitle","sortAttrs","sortClass","sortLabel","thStyle","abbr","headerAbbr","title","slotNames","column","$srLabel","$cells","$trs","topRowMixin","BTable","fails","nativeGetPrototypeOf","CORRECT_PROTOTYPE_GETTER","FAILS_ON_PRIMITIVES","forced","sham","it","animated","max","precision","showProgress","showValue","BProgressBar","bvProgress","progressBarClasses","computedAnimated","computedVariant","computedStriped","progressBarStyles","width","computedValue","computedMax","computedPrecision","computedProgress","p","computedShowProgress","computedShowValue","$children","progressBarProps","height","BProgress","progressHeight","getBuiltIn","defineWellKnownSymbol","heightTransition","trHeight","trAddHeight","val","heightValue","Number","substring","trTrimHeight","trSetHeight","_regeneratorRuntime","t","r","hasOwnProperty","c","asyncIterator","u","toStringTag","define","wrap","Generator","create","Context","makeInvokeMethod","tryCatch","l","s","y","GeneratorFunction","GeneratorFunctionPrototype","d","values","g","defineIteratorMethods","_invoke","AsyncIterator","invoke","_typeof","__await","callInvokeWithMethodAndArg","Error","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","resultName","next","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","isNaN","displayName","isGeneratorFunction","mark","__proto__","awrap","async","reverse","pop","prev","charAt","stop","rval","handle","complete","finish","delegateYield","linkProps","href","to","pill","BBadge","functional","active","link"],"mappings":"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","file":"js/chunk-ebfb6d98.5e695c1f.js","sourcesContent":["'use strict';\nvar global = require('../internals/global');\nvar setToStringTag = require('../internals/set-to-string-tag');\n\n// JSON[@@toStringTag] property\n// https://tc39.es/ecma262/#sec-json-@@tostringtag\nsetToStringTag(global.JSON, 'JSON', true);\n","'use strict';\nvar $ = require('../internals/export');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n$({ target: 'Object', stat: true }, {\n setPrototypeOf: setPrototypeOf\n});\n","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar isObject = require('../internals/is-object');\nvar toObject = require('../internals/to-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\n// eslint-disable-next-line es/no-object-getprototypeof -- safe\nvar getPrototypeOf = Object.getPrototypeOf;\n// eslint-disable-next-line es/no-object-setprototypeof -- safe\nvar setPrototypeOf = Object.setPrototypeOf;\nvar ObjectPrototype = Object.prototype;\nvar PROTO = '__proto__';\n\n// `Object.prototype.__proto__` accessor\n// https://tc39.es/ecma262/#sec-object.prototype.__proto__\nif (DESCRIPTORS && getPrototypeOf && setPrototypeOf && !(PROTO in ObjectPrototype)) try {\n defineBuiltInAccessor(ObjectPrototype, PROTO, {\n configurable: true,\n get: function __proto__() {\n return getPrototypeOf(toObject(this));\n },\n set: function __proto__(proto) {\n var O = requireObjectCoercible(this);\n if (!isObject(proto) && proto !== null || !isObject(O)) return;\n setPrototypeOf(O, proto);\n }\n });\n} catch (error) { /* empty */ }\n","'use strict';\nvar setToStringTag = require('../internals/set-to-string-tag');\n\n// Math[@@toStringTag] property\n// https://tc39.es/ecma262/#sec-math-@@tostringtag\nsetToStringTag(Math, 'Math', true);\n","// Mixin to determine if an event listener has been registered\n// either via `v-on:name` (in the parent) or programmatically\n// via `vm.$on('name', ...)`\n// See: https://github.com/vuejs/vue/issues/10825\nimport { Vue } from '../vue';\nimport { isArray, isUndefined } from '../utils/inspect'; // @vue/component\n\nexport var hasListenerMixin = Vue.extend({\n methods: {\n hasListener: function hasListener(name) {\n // Only includes listeners registered via `v-on:name`\n var $listeners = this.$listeners || {}; // Includes `v-on:name` and `this.$on('name')` registered listeners\n // Note this property is not part of the public Vue API, but it is\n // the only way to determine if a listener was added via `vm.$on`\n\n var $events = this._events || {}; // Registered listeners in `this._events` are always an array,\n // but might be zero length\n\n return !isUndefined($listeners[name]) || isArray($events[name]) && $events[name].length > 0;\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_TR } from '../../constants/components';\nimport { PROP_TYPE_STRING } from '../../constants/props';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { attrsMixin } from '../../mixins/attrs';\nimport { listenersMixin } from '../../mixins/listeners';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot'; // --- Constants ---\n\nvar LIGHT = 'light';\nvar DARK = 'dark'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n variant: makeProp(PROP_TYPE_STRING)\n}, NAME_TR); // --- Main component ---\n// TODO:\n// In Bootstrap v5, we won't need \"sniffing\" as table element variants properly inherit\n// to the child elements, so this can be converted to a functional component\n// @vue/component\n\nexport var BTr = /*#__PURE__*/Vue.extend({\n name: NAME_TR,\n mixins: [attrsMixin, listenersMixin, normalizeSlotMixin],\n provide: function provide() {\n return {\n bvTableTr: this\n };\n },\n inject: {\n bvTableRowGroup: {\n default:\n /* istanbul ignore next */\n function _default() {\n return {};\n }\n }\n },\n inheritAttrs: false,\n props: props,\n computed: {\n // Sniffed by `` / ``\n inTbody: function inTbody() {\n return this.bvTableRowGroup.isTbody;\n },\n // Sniffed by `` / ``\n inThead: function inThead() {\n return this.bvTableRowGroup.isThead;\n },\n // Sniffed by `` / ``\n inTfoot: function inTfoot() {\n return this.bvTableRowGroup.isTfoot;\n },\n // Sniffed by `` / ``\n isDark: function isDark() {\n return this.bvTableRowGroup.isDark;\n },\n // Sniffed by `` / ``\n isStacked: function isStacked() {\n return this.bvTableRowGroup.isStacked;\n },\n // Sniffed by `` / ``\n isResponsive: function isResponsive() {\n return this.bvTableRowGroup.isResponsive;\n },\n // Sniffed by `` / ``\n // Sticky headers are only supported in thead\n isStickyHeader: function isStickyHeader() {\n return this.bvTableRowGroup.isStickyHeader;\n },\n // Sniffed by / `` / ``\n // Needed to handle header background classes, due to lack of\n // background color inheritance with Bootstrap v4 table CSS\n hasStickyHeader: function hasStickyHeader() {\n return !this.isStacked && this.bvTableRowGroup.hasStickyHeader;\n },\n // Sniffed by `` / ``\n tableVariant: function tableVariant() {\n return this.bvTableRowGroup.tableVariant;\n },\n // Sniffed by `` / ``\n headVariant: function headVariant() {\n return this.inThead ? this.bvTableRowGroup.headVariant : null;\n },\n // Sniffed by `` / ``\n footVariant: function footVariant() {\n return this.inTfoot ? this.bvTableRowGroup.footVariant : null;\n },\n isRowDark: function isRowDark() {\n return this.headVariant === LIGHT || this.footVariant === LIGHT ?\n /* istanbul ignore next */\n false : this.headVariant === DARK || this.footVariant === DARK ?\n /* istanbul ignore next */\n true : this.isDark;\n },\n trClasses: function trClasses() {\n var variant = this.variant;\n return [variant ? \"\".concat(this.isRowDark ? 'bg' : 'table', \"-\").concat(variant) : null];\n },\n trAttrs: function trAttrs() {\n return _objectSpread({\n role: 'row'\n }, this.bvAttrs);\n }\n },\n render: function render(h) {\n return h('tr', {\n class: this.trClasses,\n attrs: this.trAttrs,\n // Pass native listeners to child\n on: this.bvListeners\n }, this.normalizeSlot());\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 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_CELL } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_NUMBER_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { isTag } from '../../utils/dom';\nimport { isUndefinedOrNull } from '../../utils/inspect';\nimport { toInteger } from '../../utils/number';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { toString } from '../../utils/string';\nimport { attrsMixin } from '../../mixins/attrs';\nimport { listenersMixin } from '../../mixins/listeners';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot'; // --- Helper methods ---\n// Parse a rowspan or colspan into a digit (or `null` if < `1` )\n\nvar parseSpan = function parseSpan(value) {\n value = toInteger(value, 0);\n return value > 0 ? value : null;\n};\n/* istanbul ignore next */\n\n\nvar spanValidator = function spanValidator(value) {\n return isUndefinedOrNull(value) || parseSpan(value) > 0;\n}; // --- Props ---\n\n\nexport var props = makePropsConfigurable({\n colspan: makeProp(PROP_TYPE_NUMBER_STRING, null, spanValidator),\n rowspan: makeProp(PROP_TYPE_NUMBER_STRING, null, spanValidator),\n stackedHeading: makeProp(PROP_TYPE_STRING),\n stickyColumn: makeProp(PROP_TYPE_BOOLEAN, false),\n variant: makeProp(PROP_TYPE_STRING)\n}, NAME_TABLE_CELL); // --- Main component ---\n// TODO:\n// In Bootstrap v5, we won't need \"sniffing\" as table element variants properly inherit\n// to the child elements, so this can be converted to a functional component\n// @vue/component\n\nexport var BTd = /*#__PURE__*/Vue.extend({\n name: NAME_TABLE_CELL,\n // Mixin order is important!\n mixins: [attrsMixin, listenersMixin, normalizeSlotMixin],\n inject: {\n bvTableTr: {\n default:\n /* istanbul ignore next */\n function _default() {\n return {};\n }\n }\n },\n inheritAttrs: false,\n props: props,\n computed: {\n // Overridden by ``\n tag: function tag() {\n return 'td';\n },\n inTbody: function inTbody() {\n return this.bvTableTr.inTbody;\n },\n inThead: function inThead() {\n return this.bvTableTr.inThead;\n },\n inTfoot: function inTfoot() {\n return this.bvTableTr.inTfoot;\n },\n isDark: function isDark() {\n return this.bvTableTr.isDark;\n },\n isStacked: function isStacked() {\n return this.bvTableTr.isStacked;\n },\n // We only support stacked-heading in tbody in stacked mode\n isStackedCell: function isStackedCell() {\n return this.inTbody && this.isStacked;\n },\n isResponsive: function isResponsive() {\n return this.bvTableTr.isResponsive;\n },\n // Needed to handle header background classes, due to lack of\n // background color inheritance with Bootstrap v4 table CSS\n // Sticky headers only apply to cells in table `thead`\n isStickyHeader: function isStickyHeader() {\n return this.bvTableTr.isStickyHeader;\n },\n // Needed to handle header background classes, due to lack of\n // background color inheritance with Bootstrap v4 table CSS\n hasStickyHeader: function hasStickyHeader() {\n return this.bvTableTr.hasStickyHeader;\n },\n // Needed to handle background classes, due to lack of\n // background color inheritance with Bootstrap v4 table CSS\n // Sticky column cells are only available in responsive\n // mode (horizontal scrolling) or when sticky header mode\n // Applies to cells in `thead`, `tbody` and `tfoot`\n isStickyColumn: function isStickyColumn() {\n return !this.isStacked && (this.isResponsive || this.hasStickyHeader) && this.stickyColumn;\n },\n rowVariant: function rowVariant() {\n return this.bvTableTr.variant;\n },\n headVariant: function headVariant() {\n return this.bvTableTr.headVariant;\n },\n footVariant: function footVariant() {\n return this.bvTableTr.footVariant;\n },\n tableVariant: function tableVariant() {\n return this.bvTableTr.tableVariant;\n },\n computedColspan: function computedColspan() {\n return parseSpan(this.colspan);\n },\n computedRowspan: function computedRowspan() {\n return parseSpan(this.rowspan);\n },\n // We use computed props here for improved performance by caching\n // the results of the string interpolation\n cellClasses: function cellClasses() {\n var variant = this.variant,\n headVariant = this.headVariant,\n isStickyColumn = this.isStickyColumn;\n\n if (!variant && this.isStickyHeader && !headVariant || !variant && isStickyColumn && this.inTfoot && !this.footVariant || !variant && isStickyColumn && this.inThead && !headVariant || !variant && isStickyColumn && this.inTbody) {\n // Needed for sticky-header mode as Bootstrap v4 table cells do\n // not inherit parent's `background-color`\n variant = this.rowVariant || this.tableVariant || 'b-table-default';\n }\n\n return [variant ? \"\".concat(this.isDark ? 'bg' : 'table', \"-\").concat(variant) : null, isStickyColumn ? 'b-table-sticky-column' : null];\n },\n cellAttrs: function cellAttrs() {\n var stackedHeading = this.stackedHeading; // We use computed props here for improved performance by caching\n // the results of the object spread (Object.assign)\n\n var headOrFoot = this.inThead || this.inTfoot; // Make sure col/rowspan's are > 0 or null\n\n var colspan = this.computedColspan;\n var rowspan = this.computedRowspan; // Default role and scope\n\n var role = 'cell';\n var scope = null; // Compute role and scope\n // We only add scopes with an explicit span of 1 or greater\n\n if (headOrFoot) {\n // Header or footer cells\n role = 'columnheader';\n scope = colspan > 0 ? 'colspan' : 'col';\n } else if (isTag(this.tag, 'th')) {\n // th's in tbody\n role = 'rowheader';\n scope = rowspan > 0 ? 'rowgroup' : 'row';\n }\n\n return _objectSpread(_objectSpread({\n colspan: colspan,\n rowspan: rowspan,\n role: role,\n scope: scope\n }, this.bvAttrs), {}, {\n // Add in the stacked cell label data-attribute if in\n // stacked mode (if a stacked heading label is provided)\n 'data-label': this.isStackedCell && !isUndefinedOrNull(stackedHeading) ?\n /* istanbul ignore next */\n toString(stackedHeading) : null\n });\n }\n },\n render: function render(h) {\n var $content = [this.normalizeSlot()];\n return h(this.tag, {\n class: this.cellClasses,\n attrs: this.cellAttrs,\n // Transfer any native listeners\n on: this.bvListeners\n }, [this.isStackedCell ? h('div', [$content]) : $content]);\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_STRING } from '../../../constants/props';\nimport { SLOT_NAME_TABLE_CAPTION } from '../../../constants/slots';\nimport { htmlOrText } from '../../../utils/html';\nimport { makeProp } from '../../../utils/props'; // --- Props ---\n\nexport var props = {\n caption: makeProp(PROP_TYPE_STRING),\n captionHtml: makeProp(PROP_TYPE_STRING) // `caption-top` is part of table-render mixin (styling)\n // captionTop: makeProp(PROP_TYPE_BOOLEAN, false)\n\n}; // --- Mixin ---\n// @vue/component\n\nexport var captionMixin = Vue.extend({\n props: props,\n computed: {\n captionId: function captionId() {\n // Even though `this.safeId` looks like a method, it is a computed prop\n // that returns a new function if the underlying ID changes\n return this.isStacked ? this.safeId('_caption_') : null;\n }\n },\n methods: {\n renderCaption: function renderCaption() {\n var caption = this.caption,\n captionHtml = this.captionHtml;\n var h = this.$createElement;\n var $caption = h();\n var hasCaptionSlot = this.hasNormalizedSlot(SLOT_NAME_TABLE_CAPTION);\n\n if (hasCaptionSlot || caption || captionHtml) {\n $caption = h('caption', {\n attrs: {\n id: this.captionId\n },\n domProps: hasCaptionSlot ? {} : htmlOrText(captionHtml, caption),\n key: 'caption'\n }, this.normalizeSlot(SLOT_NAME_TABLE_CAPTION));\n }\n\n return $caption;\n }\n }\n});","import { Vue } from '../../../vue';\nimport { SLOT_NAME_TABLE_COLGROUP } from '../../../constants/slots'; // --- Props ---\n\nexport var props = {}; // --- Mixin ---\n// @vue/component\n\nexport var colgroupMixin = Vue.extend({\n methods: {\n renderColgroup: function renderColgroup() {\n var fields = this.computedFields;\n var h = this.$createElement;\n var $colgroup = h();\n\n if (this.hasNormalizedSlot(SLOT_NAME_TABLE_COLGROUP)) {\n $colgroup = h('colgroup', {\n key: 'colgroup'\n }, [this.normalizeSlot(SLOT_NAME_TABLE_COLGROUP, {\n columns: fields.length,\n fields: fields\n })]);\n }\n\n return $colgroup;\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 { 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};","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\n// Constants used by table helpers\nexport var FIELD_KEY_CELL_VARIANT = '_cellVariants';\nexport var FIELD_KEY_ROW_VARIANT = '_rowVariant';\nexport var FIELD_KEY_SHOW_DETAILS = '_showDetails'; // Object of item keys that should be ignored for headers and\n// stringification and filter events\n\nexport var IGNORED_FIELD_KEYS = [FIELD_KEY_CELL_VARIANT, FIELD_KEY_ROW_VARIANT, FIELD_KEY_SHOW_DETAILS].reduce(function (result, key) {\n return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, key, true));\n}, {}); // Filter CSS selector for click/dblclick/etc. events\n// If any of these selectors match the clicked element, we ignore the event\n\nexport var EVENT_FILTER = ['a', 'a *', // Include content inside links\n'button', 'button *', // Include content inside buttons\n'input:not(.disabled):not([disabled])', 'select:not(.disabled):not([disabled])', 'textarea:not(.disabled):not([disabled])', '[role=\"link\"]', '[role=\"link\"] *', '[role=\"button\"]', '[role=\"button\"] *', '[tabindex]:not(.disabled):not([disabled])'].join(',');","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 { identity } from '../../../utils/identity';\nimport { isArray, isFunction, isObject, isString } from '../../../utils/inspect';\nimport { clone, keys } from '../../../utils/object';\nimport { startCase } from '../../../utils/string';\nimport { IGNORED_FIELD_KEYS } from './constants'; // Private function to massage field entry into common object format\n\nvar processField = function processField(key, value) {\n var field = null;\n\n if (isString(value)) {\n // Label shortcut\n field = {\n key: key,\n label: value\n };\n } else if (isFunction(value)) {\n // Formatter shortcut\n field = {\n key: key,\n formatter: value\n };\n } else if (isObject(value)) {\n field = clone(value);\n field.key = field.key || key;\n } else if (value !== false) {\n // Fallback to just key\n\n /* istanbul ignore next */\n field = {\n key: key\n };\n }\n\n return field;\n}; // We normalize fields into an array of objects\n// [ { key:..., label:..., ...}, {...}, ..., {..}]\n\n\nexport var normalizeFields = function normalizeFields(origFields, items) {\n var fields = [];\n\n if (isArray(origFields)) {\n // Normalize array Form\n origFields.filter(identity).forEach(function (f) {\n if (isString(f)) {\n fields.push({\n key: f,\n label: startCase(f)\n });\n } else if (isObject(f) && f.key && isString(f.key)) {\n // Full object definition. We use assign so that we don't mutate the original\n fields.push(clone(f));\n } else if (isObject(f) && keys(f).length === 1) {\n // Shortcut object (i.e. { 'foo_bar': 'This is Foo Bar' }\n var key = keys(f)[0];\n var field = processField(key, f[key]);\n\n if (field) {\n fields.push(field);\n }\n }\n });\n } // If no field provided, take a sample from first record (if exits)\n\n\n if (fields.length === 0 && isArray(items) && items.length > 0) {\n var sample = items[0];\n keys(sample).forEach(function (k) {\n if (!IGNORED_FIELD_KEYS[k]) {\n fields.push({\n key: k,\n label: startCase(k)\n });\n }\n });\n } // Ensure we have a unique array of fields and that they have String labels\n\n\n var memo = {};\n return fields.filter(function (f) {\n if (!memo[f.key]) {\n memo[f.key] = true;\n f.label = isString(f.label) ? f.label : startCase(f.key);\n return true;\n }\n\n return false;\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 { EVENT_NAME_CONTEXT_CHANGED } from '../../../constants/events';\nimport { PROP_TYPE_ARRAY, PROP_TYPE_STRING } from '../../../constants/props';\nimport { isArray, isFunction, isString } from '../../../utils/inspect';\nimport { looseEqual } from '../../../utils/loose-equal';\nimport { mathMax } from '../../../utils/math';\nimport { makeModelMixin } from '../../../utils/model';\nimport { toInteger } from '../../../utils/number';\nimport { clone, sortKeys } from '../../../utils/object';\nimport { makeProp } from '../../../utils/props';\nimport { normalizeFields } from './normalize-fields'; // --- Constants ---\n\nvar _makeModelMixin = makeModelMixin('value', {\n type: PROP_TYPE_ARRAY,\n defaultValue: []\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 }; // --- Props ---\n\nexport var props = sortKeys(_objectSpread(_objectSpread({}, modelProps), {}, _defineProperty({\n fields: makeProp(PROP_TYPE_ARRAY, null),\n // Provider mixin adds in `Function` type\n items: makeProp(PROP_TYPE_ARRAY, []),\n // Primary key for record\n // If provided the value in each row must be unique!\n primaryKey: makeProp(PROP_TYPE_STRING)\n}, MODEL_PROP_NAME, makeProp(PROP_TYPE_ARRAY, [])))); // --- Mixin ---\n// @vue/component\n\nexport var itemsMixin = Vue.extend({\n mixins: [modelMixin],\n props: props,\n data: function data() {\n var items = this.items;\n return {\n // Our local copy of the items\n // Must be an array\n localItems: isArray(items) ? items.slice() : []\n };\n },\n computed: {\n computedFields: function computedFields() {\n // We normalize fields into an array of objects\n // `[ { key:..., label:..., ...}, {...}, ..., {..}]`\n return normalizeFields(this.fields, this.localItems);\n },\n computedFieldsObj: function computedFieldsObj() {\n // Fields as a simple lookup hash object\n // Mainly for formatter lookup and use in `scopedSlots` for convenience\n // If the field has a formatter, it normalizes formatter to a\n // function ref or `undefined` if no formatter\n var $parent = this.$parent;\n return this.computedFields.reduce(function (obj, f) {\n // We use object spread here so we don't mutate the original field object\n obj[f.key] = clone(f);\n\n if (f.formatter) {\n // Normalize formatter to a function ref or `undefined`\n var formatter = f.formatter;\n\n if (isString(formatter) && isFunction($parent[formatter])) {\n formatter = $parent[formatter];\n } else if (!isFunction(formatter)) {\n /* istanbul ignore next */\n formatter = undefined;\n } // Return formatter function or `undefined` if none\n\n\n obj[f.key].formatter = formatter;\n }\n\n return obj;\n }, {});\n },\n computedItems: function computedItems() {\n // Fallback if various mixins not provided\n return (this.paginatedItems || this.sortedItems || this.filteredItems || this.localItems ||\n /* istanbul ignore next */\n []).slice();\n },\n context: function context() {\n // Current state of sorting, filtering and pagination props/values\n return {\n filter: this.localFilter,\n sortBy: this.localSortBy,\n sortDesc: this.localSortDesc,\n perPage: mathMax(toInteger(this.perPage, 0), 0),\n currentPage: mathMax(toInteger(this.currentPage, 0), 1),\n apiUrl: this.apiUrl\n };\n }\n },\n watch: {\n items: function items(newValue) {\n // Set `localItems`/`filteredItems` to a copy of the provided array\n this.localItems = isArray(newValue) ? newValue.slice() : [];\n },\n // Watch for changes on `computedItems` and update the `v-model`\n computedItems: function computedItems(newValue, oldValue) {\n if (!looseEqual(newValue, oldValue)) {\n this.$emit(MODEL_EVENT_NAME, newValue);\n }\n },\n // Watch for context changes\n context: function context(newValue, oldValue) {\n // Emit context information for external paging/filtering/sorting handling\n if (!looseEqual(newValue, oldValue)) {\n this.$emit(EVENT_NAME_CONTEXT_CHANGED, newValue);\n }\n }\n },\n mounted: function mounted() {\n // Initially update the `v-model` of displayed items\n this.$emit(MODEL_EVENT_NAME, this.computedItems);\n },\n methods: {\n // Method to get the formatter method for a given field key\n getFieldFormatter: function getFieldFormatter(key) {\n var field = this.computedFieldsObj[key]; // `this.computedFieldsObj` has pre-normalized the formatter to a\n // function ref if present, otherwise `undefined`\n\n return field ? field.formatter : undefined;\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};","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 { PROP_TYPE_BOOLEAN_STRING } from '../../../constants/props';\nimport { makeProp } from '../../../utils/props'; // --- Props ---\n\nexport var props = {\n stacked: makeProp(PROP_TYPE_BOOLEAN_STRING, false)\n}; // --- Mixin ---\n// @vue/component\n\nexport var stackedMixin = Vue.extend({\n props: props,\n computed: {\n isStacked: function isStacked() {\n var stacked = this.stacked; // `true` when always stacked, or returns breakpoint specified\n\n return stacked === '' ? true : stacked;\n },\n isStackedAlways: function isStackedAlways() {\n return this.isStacked === true;\n },\n stackedTableClasses: function stackedTableClasses() {\n var isStackedAlways = this.isStackedAlways;\n return _defineProperty({\n 'b-table-stacked': isStackedAlways\n }, \"b-table-stacked-\".concat(this.stacked), !isStackedAlways && this.isStacked);\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 { PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_BOOLEAN, PROP_TYPE_BOOLEAN_STRING, PROP_TYPE_STRING } from '../../../constants/props';\nimport { identity } from '../../../utils/identity';\nimport { isBoolean } from '../../../utils/inspect';\nimport { makeProp } from '../../../utils/props';\nimport { toString } from '../../../utils/string';\nimport { attrsMixin } from '../../../mixins/attrs'; // Main `` render mixin\n// Includes all main table styling options\n// --- Props ---\n\nexport var props = {\n bordered: makeProp(PROP_TYPE_BOOLEAN, false),\n borderless: makeProp(PROP_TYPE_BOOLEAN, false),\n captionTop: makeProp(PROP_TYPE_BOOLEAN, false),\n dark: makeProp(PROP_TYPE_BOOLEAN, false),\n fixed: makeProp(PROP_TYPE_BOOLEAN, false),\n hover: makeProp(PROP_TYPE_BOOLEAN, false),\n noBorderCollapse: makeProp(PROP_TYPE_BOOLEAN, false),\n outlined: makeProp(PROP_TYPE_BOOLEAN, false),\n responsive: makeProp(PROP_TYPE_BOOLEAN_STRING, false),\n small: makeProp(PROP_TYPE_BOOLEAN, false),\n // If a string, it is assumed to be the table `max-height` value\n stickyHeader: makeProp(PROP_TYPE_BOOLEAN_STRING, false),\n striped: makeProp(PROP_TYPE_BOOLEAN, false),\n tableClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n tableVariant: makeProp(PROP_TYPE_STRING)\n}; // --- Mixin ---\n// @vue/component\n\nexport var tableRendererMixin = Vue.extend({\n mixins: [attrsMixin],\n provide: function provide() {\n return {\n bvTable: this\n };\n },\n // Don't place attributes on root element automatically,\n // as table could be wrapped in responsive `
`\n inheritAttrs: false,\n props: props,\n computed: {\n // Layout related computed props\n isResponsive: function isResponsive() {\n var responsive = this.responsive;\n responsive = responsive === '' ? true : responsive;\n return this.isStacked ? false : responsive;\n },\n isStickyHeader: function isStickyHeader() {\n var stickyHeader = this.stickyHeader;\n stickyHeader = stickyHeader === '' ? true : stickyHeader;\n return this.isStacked ? false : stickyHeader;\n },\n wrapperClasses: function wrapperClasses() {\n var isResponsive = this.isResponsive;\n return [this.isStickyHeader ? 'b-table-sticky-header' : '', isResponsive === true ? 'table-responsive' : isResponsive ? \"table-responsive-\".concat(this.responsive) : ''].filter(identity);\n },\n wrapperStyles: function wrapperStyles() {\n var isStickyHeader = this.isStickyHeader;\n return isStickyHeader && !isBoolean(isStickyHeader) ? {\n maxHeight: isStickyHeader\n } : {};\n },\n tableClasses: function tableClasses() {\n var hover = this.hover,\n tableVariant = this.tableVariant;\n hover = this.isTableSimple ? hover : hover && this.computedItems.length > 0 && !this.computedBusy;\n return [// User supplied classes\n this.tableClass, // Styling classes\n {\n 'table-striped': this.striped,\n 'table-hover': hover,\n 'table-dark': this.dark,\n 'table-bordered': this.bordered,\n 'table-borderless': this.borderless,\n 'table-sm': this.small,\n // The following are b-table custom styles\n border: this.outlined,\n 'b-table-fixed': this.fixed,\n 'b-table-caption-top': this.captionTop,\n 'b-table-no-border-collapse': this.noBorderCollapse\n }, tableVariant ? \"\".concat(this.dark ? 'bg' : 'table', \"-\").concat(tableVariant) : '', // Stacked table classes\n this.stackedTableClasses, // Selectable classes\n this.selectableTableClasses];\n },\n tableAttrs: function tableAttrs() {\n var items = this.computedItems,\n filteredItems = this.filteredItems,\n fields = this.computedFields,\n selectableTableAttrs = this.selectableTableAttrs; // Preserve user supplied aria-describedby, if provided in `$attrs`\n\n var adb = [(this.bvAttrs || {})['aria-describedby'], this.captionId].filter(identity).join(' ') || null;\n var ariaAttrs = this.isTableSimple ? {} : {\n 'aria-busy': this.computedBusy ? 'true' : 'false',\n 'aria-colcount': toString(fields.length),\n 'aria-describedby': adb\n };\n var rowCount = items && filteredItems && filteredItems.length > items.length ? toString(filteredItems.length) : null;\n return _objectSpread(_objectSpread(_objectSpread({\n // We set `aria-rowcount` before merging in `$attrs`,\n // in case user has supplied their own\n 'aria-rowcount': rowCount\n }, this.bvAttrs), {}, {\n // Now we can override any `$attrs` here\n id: this.safeId(),\n role: 'table'\n }, ariaAttrs), selectableTableAttrs);\n }\n },\n render: function render(h) {\n var wrapperClasses = this.wrapperClasses,\n renderCaption = this.renderCaption,\n renderColgroup = this.renderColgroup,\n renderThead = this.renderThead,\n renderTbody = this.renderTbody,\n renderTfoot = this.renderTfoot;\n var $content = [];\n\n if (this.isTableSimple) {\n $content.push(this.normalizeSlot());\n } else {\n // Build the `
`\n\n $content.push(renderColgroup ? renderColgroup() : null); // Build the ``\n\n $content.push(renderThead ? renderThead() : null); // Build the ``\n\n $content.push(renderTbody ? renderTbody() : null); // Build the ``\n\n $content.push(renderTfoot ? renderTfoot() : null);\n } // Assemble `
` (from caption mixin)\n $content.push(renderCaption ? renderCaption() : null); // Build the `
`\n\n\n var $table = h('table', {\n staticClass: 'table b-table',\n class: this.tableClasses,\n attrs: this.tableAttrs,\n key: 'b-table'\n }, $content.filter(identity)); // Add responsive/sticky wrapper if needed and return table\n\n return wrapperClasses.length > 0 ? h('div', {\n class: wrapperClasses,\n style: this.wrapperStyles,\n key: 'wrap'\n }, [$table]) : $table;\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_TBODY } from '../../constants/components';\nimport { PROP_TYPE_OBJECT } from '../../constants/props';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { attrsMixin } from '../../mixins/attrs';\nimport { listenersMixin } from '../../mixins/listeners';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n tbodyTransitionHandlers: makeProp(PROP_TYPE_OBJECT),\n tbodyTransitionProps: makeProp(PROP_TYPE_OBJECT)\n}, NAME_TBODY); // --- Main component ---\n// TODO:\n// In Bootstrap v5, we won't need \"sniffing\" as table element variants properly inherit\n// to the child elements, so this can be converted to a functional component\n// @vue/component\n\nexport var BTbody = /*#__PURE__*/Vue.extend({\n name: NAME_TBODY,\n mixins: [attrsMixin, listenersMixin, normalizeSlotMixin],\n provide: function provide() {\n return {\n bvTableRowGroup: this\n };\n },\n inject: {\n // Sniffed by `` / `` / ``\n bvTable: {\n default:\n /* istanbul ignore next */\n function _default() {\n return {};\n }\n }\n },\n inheritAttrs: false,\n props: props,\n computed: {\n // Sniffed by `` / `` / ``\n isTbody: function isTbody() {\n return true;\n },\n // Sniffed by `` / `` / ``\n isDark: function isDark() {\n return this.bvTable.dark;\n },\n // Sniffed by `` / `` / ``\n isStacked: function isStacked() {\n return this.bvTable.isStacked;\n },\n // Sniffed by `` / `` / ``\n isResponsive: function isResponsive() {\n return this.bvTable.isResponsive;\n },\n // Sniffed by `` / `` / ``\n // Sticky headers are only supported in thead\n isStickyHeader: function isStickyHeader() {\n return false;\n },\n // Sniffed by `` / `` / ``\n // Needed to handle header background classes, due to lack of\n // background color inheritance with Bootstrap v4 table CSS\n hasStickyHeader: function hasStickyHeader() {\n return !this.isStacked && this.bvTable.stickyHeader;\n },\n // Sniffed by `` / `` / ``\n tableVariant: function tableVariant() {\n return this.bvTable.tableVariant;\n },\n isTransitionGroup: function isTransitionGroup() {\n return this.tbodyTransitionProps || this.tbodyTransitionHandlers;\n },\n tbodyAttrs: function tbodyAttrs() {\n return _objectSpread({\n role: 'rowgroup'\n }, this.bvAttrs);\n },\n tbodyProps: function tbodyProps() {\n var tbodyTransitionProps = this.tbodyTransitionProps;\n return tbodyTransitionProps ? _objectSpread(_objectSpread({}, tbodyTransitionProps), {}, {\n tag: 'tbody'\n }) : {};\n }\n },\n render: function render(h) {\n var data = {\n props: this.tbodyProps,\n attrs: this.tbodyAttrs\n };\n\n if (this.isTransitionGroup) {\n // We use native listeners if a transition group for any delegated events\n data.on = this.tbodyTransitionHandlers || {};\n data.nativeOn = this.bvListeners;\n } else {\n // Otherwise we place any listeners on the tbody element\n data.on = this.bvListeners;\n }\n\n return h(this.isTransitionGroup ? 'transition-group' : 'tbody', data, this.normalizeSlot());\n }\n});","import { closest, getAttr, getById, matches, select } from '../../../utils/dom';\nimport { EVENT_FILTER } from './constants';\nvar TABLE_TAG_NAMES = ['TD', 'TH', 'TR']; // Returns `true` if we should ignore the click/double-click/keypress event\n// Avoids having the user need to use `@click.stop` on the form control\n\nexport var filterEvent = function filterEvent(event) {\n // Exit early when we don't have a target element\n if (!event || !event.target) {\n /* istanbul ignore next */\n return false;\n }\n\n var el = event.target; // Exit early when element is disabled or a table element\n\n if (el.disabled || TABLE_TAG_NAMES.indexOf(el.tagName) !== -1) {\n return false;\n } // Ignore the click when it was inside a dropdown menu\n\n\n if (closest('.dropdown-menu', el)) {\n return true;\n }\n\n var label = el.tagName === 'LABEL' ? el : closest('label', el); // If the label's form control is not disabled then we don't propagate event\n // Modern browsers have `label.control` that references the associated input, but IE 11\n // does not have this property on the label element, so we resort to DOM lookups\n\n if (label) {\n var labelFor = getAttr(label, 'for');\n var input = labelFor ? getById(labelFor) : select('input, select, textarea', label);\n\n if (input && !input.disabled) {\n return true;\n }\n } // Otherwise check if the event target matches one of the selectors in the\n // event filter (i.e. anchors, non disabled inputs, etc.)\n // Return `true` if we should ignore the event\n\n\n return matches(el, EVENT_FILTER);\n};","import { getSel, isElement } from '../../../utils/dom'; // Helper to determine if a there is an active text selection on the document page\n// Used to filter out click events caused by the mouse up at end of selection\n//\n// Accepts an element as only argument to test to see if selection overlaps or is\n// contained within the element\n\nexport var textSelectionActive = function textSelectionActive() {\n var el = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : document;\n var sel = getSel();\n return sel && sel.toString().trim() !== '' && sel.containsNode && isElement(el) ?\n /* istanbul ignore next */\n sel.containsNode(el, true) : false;\n};","import { Vue } from '../../vue';\nimport { NAME_TH } from '../../constants/components';\nimport { makePropsConfigurable } from '../../utils/props';\nimport { BTd, props as BTdProps } from './td'; // --- Props ---\n\nexport var props = makePropsConfigurable(BTdProps, NAME_TH); // --- Main component ---\n// TODO:\n// In Bootstrap v5, we won't need \"sniffing\" as table element variants properly inherit\n// to the child elements, so this can be converted to a functional component\n// @vue/component\n\nexport var BTh = /*#__PURE__*/Vue.extend({\n name: NAME_TH,\n extends: BTd,\n props: props,\n computed: {\n tag: function tag() {\n return 'th';\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\nfunction _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 { EVENT_NAME_ROW_CLICKED, EVENT_NAME_ROW_HOVERED, EVENT_NAME_ROW_UNHOVERED } from '../../../constants/events';\nimport { PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_FUNCTION, PROP_TYPE_OBJECT_FUNCTION } from '../../../constants/props';\nimport { SLOT_NAME_ROW_DETAILS } from '../../../constants/slots';\nimport { get } from '../../../utils/get';\nimport { isFunction, isString, isUndefinedOrNull } from '../../../utils/inspect';\nimport { makeProp } from '../../../utils/props';\nimport { toString } from '../../../utils/string';\nimport { BTr } from '../tr';\nimport { BTd } from '../td';\nimport { BTh } from '../th';\nimport { FIELD_KEY_CELL_VARIANT, FIELD_KEY_ROW_VARIANT, FIELD_KEY_SHOW_DETAILS } from './constants'; // --- Props ---\n\nexport var props = {\n detailsTdClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n tbodyTrAttr: makeProp(PROP_TYPE_OBJECT_FUNCTION),\n tbodyTrClass: makeProp([].concat(_toConsumableArray(PROP_TYPE_ARRAY_OBJECT_STRING), [PROP_TYPE_FUNCTION]))\n}; // --- Mixin ---\n// @vue/component\n\nexport var tbodyRowMixin = Vue.extend({\n props: props,\n methods: {\n // Methods for computing classes, attributes and styles for table cells\n getTdValues: function getTdValues(item, key, tdValue, defaultValue) {\n var $parent = this.$parent;\n\n if (tdValue) {\n var value = get(item, key, '');\n\n if (isFunction(tdValue)) {\n return tdValue(value, key, item);\n } else if (isString(tdValue) && isFunction($parent[tdValue])) {\n return $parent[tdValue](value, key, item);\n }\n\n return tdValue;\n }\n\n return defaultValue;\n },\n getThValues: function getThValues(item, key, thValue, type, defaultValue) {\n var $parent = this.$parent;\n\n if (thValue) {\n var value = get(item, key, '');\n\n if (isFunction(thValue)) {\n return thValue(value, key, item, type);\n } else if (isString(thValue) && isFunction($parent[thValue])) {\n return $parent[thValue](value, key, item, type);\n }\n\n return thValue;\n }\n\n return defaultValue;\n },\n // Method to get the value for a field\n getFormattedValue: function getFormattedValue(item, field) {\n var key = field.key;\n var formatter = this.getFieldFormatter(key);\n var value = get(item, key, null);\n\n if (isFunction(formatter)) {\n value = formatter(value, key, item);\n }\n\n return isUndefinedOrNull(value) ? '' : value;\n },\n // Factory function methods\n toggleDetailsFactory: function toggleDetailsFactory(hasDetailsSlot, item) {\n var _this = this;\n\n // Returns a function to toggle a row's details slot\n return function () {\n if (hasDetailsSlot) {\n _this.$set(item, FIELD_KEY_SHOW_DETAILS, !item[FIELD_KEY_SHOW_DETAILS]);\n }\n };\n },\n // Row event handlers\n rowHovered: function rowHovered(event) {\n // `mouseenter` handler (non-bubbling)\n // `this.tbodyRowEvtStopped` from tbody mixin\n if (!this.tbodyRowEvtStopped(event)) {\n // `this.emitTbodyRowEvent` from tbody mixin\n this.emitTbodyRowEvent(EVENT_NAME_ROW_HOVERED, event);\n }\n },\n rowUnhovered: function rowUnhovered(event) {\n // `mouseleave` handler (non-bubbling)\n // `this.tbodyRowEvtStopped` from tbody mixin\n if (!this.tbodyRowEvtStopped(event)) {\n // `this.emitTbodyRowEvent` from tbody mixin\n this.emitTbodyRowEvent(EVENT_NAME_ROW_UNHOVERED, event);\n }\n },\n // Renders a TD or TH for a row's field\n renderTbodyRowCell: function renderTbodyRowCell(field, colIndex, item, rowIndex) {\n var _this2 = this;\n\n var isStacked = this.isStacked;\n var key = field.key,\n label = field.label,\n isRowHeader = field.isRowHeader;\n var h = this.$createElement;\n var hasDetailsSlot = this.hasNormalizedSlot(SLOT_NAME_ROW_DETAILS);\n var formatted = this.getFormattedValue(item, field);\n var stickyColumn = !isStacked && (this.isResponsive || this.stickyHeader) && field.stickyColumn; // We only uses the helper components for sticky columns to\n // improve performance of BTable/BTableLite by reducing the\n // total number of vue instances created during render\n\n var cellTag = stickyColumn ? isRowHeader ? BTh : BTd : isRowHeader ? 'th' : 'td';\n var cellVariant = item[FIELD_KEY_CELL_VARIANT] && item[FIELD_KEY_CELL_VARIANT][key] ? item[FIELD_KEY_CELL_VARIANT][key] : field.variant || null;\n var data = {\n // For the Vue key, we concatenate the column index and\n // field key (as field keys could be duplicated)\n // TODO: Although we do prevent duplicate field keys...\n // So we could change this to: `row-${rowIndex}-cell-${key}`\n class: [field.class ? field.class : '', this.getTdValues(item, key, field.tdClass, '')],\n props: {},\n attrs: _objectSpread({\n 'aria-colindex': String(colIndex + 1)\n }, isRowHeader ? this.getThValues(item, key, field.thAttr, 'row', {}) : this.getTdValues(item, key, field.tdAttr, {})),\n key: \"row-\".concat(rowIndex, \"-cell-\").concat(colIndex, \"-\").concat(key)\n };\n\n if (stickyColumn) {\n // We are using the helper BTd or BTh\n data.props = {\n stackedHeading: isStacked ? label : null,\n stickyColumn: true,\n variant: cellVariant\n };\n } else {\n // Using native TD or TH element, so we need to\n // add in the attributes and variant class\n data.attrs['data-label'] = isStacked && !isUndefinedOrNull(label) ? toString(label) : null;\n data.attrs.role = isRowHeader ? 'rowheader' : 'cell';\n data.attrs.scope = isRowHeader ? 'row' : null; // Add in the variant class\n\n if (cellVariant) {\n data.class.push(\"\".concat(this.dark ? 'bg' : 'table', \"-\").concat(cellVariant));\n }\n }\n\n var slotScope = {\n item: item,\n index: rowIndex,\n field: field,\n unformatted: get(item, key, ''),\n value: formatted,\n toggleDetails: this.toggleDetailsFactory(hasDetailsSlot, item),\n detailsShowing: Boolean(item[FIELD_KEY_SHOW_DETAILS])\n }; // If table supports selectable mode, then add in the following scope\n // this.supportsSelectableRows will be undefined if mixin isn't loaded\n\n if (this.supportsSelectableRows) {\n slotScope.rowSelected = this.isRowSelected(rowIndex);\n\n slotScope.selectRow = function () {\n return _this2.selectRow(rowIndex);\n };\n\n slotScope.unselectRow = function () {\n return _this2.unselectRow(rowIndex);\n };\n } // The new `v-slot` syntax doesn't like a slot name starting with\n // a square bracket and if using in-document HTML templates, the\n // v-slot attributes are lower-cased by the browser.\n // Switched to round bracket syntax to prevent confusion with\n // dynamic slot name syntax.\n // We look for slots in this order: `cell(${key})`, `cell(${key.toLowerCase()})`, 'cell()'\n // Slot names are now cached by mixin tbody in `this.$_bodyFieldSlotNameCache`\n // Will be `null` if no slot (or fallback slot) exists\n\n\n var slotName = this.$_bodyFieldSlotNameCache[key];\n var $childNodes = slotName ? this.normalizeSlot(slotName, slotScope) : toString(formatted);\n\n if (this.isStacked) {\n // We wrap in a DIV to ensure rendered as a single cell when visually stacked!\n $childNodes = [h('div', [$childNodes])];\n } // Render either a td or th cell\n\n\n return h(cellTag, data, [$childNodes]);\n },\n // Renders an item's row (or rows if details supported)\n renderTbodyRow: function renderTbodyRow(item, rowIndex) {\n var _this3 = this;\n\n var fields = this.computedFields,\n striped = this.striped,\n primaryKey = this.primaryKey,\n currentPage = this.currentPage,\n perPage = this.perPage,\n tbodyTrClass = this.tbodyTrClass,\n tbodyTrAttr = this.tbodyTrAttr;\n var h = this.$createElement;\n var hasDetailsSlot = this.hasNormalizedSlot(SLOT_NAME_ROW_DETAILS);\n var rowShowDetails = item[FIELD_KEY_SHOW_DETAILS] && hasDetailsSlot;\n var hasRowClickHandler = this.$listeners[EVENT_NAME_ROW_CLICKED] || this.hasSelectableRowClick; // We can return more than one TR if rowDetails enabled\n\n var $rows = []; // Details ID needed for `aria-details` when details showing\n // We set it to `null` when not showing so that attribute\n // does not appear on the element\n\n var detailsId = rowShowDetails ? this.safeId(\"_details_\".concat(rowIndex, \"_\")) : null; // For each item data field in row\n\n var $tds = fields.map(function (field, colIndex) {\n return _this3.renderTbodyRowCell(field, colIndex, item, rowIndex);\n }); // Calculate the row number in the dataset (indexed from 1)\n\n var ariaRowIndex = null;\n\n if (currentPage && perPage && perPage > 0) {\n ariaRowIndex = String((currentPage - 1) * perPage + rowIndex + 1);\n } // Create a unique :key to help ensure that sub components are re-rendered rather than\n // re-used, which can cause issues. If a primary key is not provided we use the rendered\n // rows index within the tbody.\n // See: https://github.com/bootstrap-vue/bootstrap-vue/issues/2410\n\n\n var primaryKeyValue = toString(get(item, primaryKey)) || null;\n var rowKey = primaryKeyValue || toString(rowIndex); // If primary key is provided, use it to generate a unique ID on each tbody > tr\n // In the format of '{tableId}__row_{primaryKeyValue}'\n\n var rowId = primaryKeyValue ? this.safeId(\"_row_\".concat(primaryKeyValue)) : null; // Selectable classes and attributes\n\n var selectableClasses = this.selectableRowClasses ? this.selectableRowClasses(rowIndex) : {};\n var selectableAttrs = this.selectableRowAttrs ? this.selectableRowAttrs(rowIndex) : {}; // Additional classes and attributes\n\n var userTrClasses = isFunction(tbodyTrClass) ? tbodyTrClass(item, 'row') : tbodyTrClass;\n var userTrAttrs = isFunction(tbodyTrAttr) ?\n /* istanbul ignore next */\n tbodyTrAttr(item, 'row') : tbodyTrAttr; // Add the item row\n\n $rows.push(h(BTr, {\n class: [userTrClasses, selectableClasses, rowShowDetails ? 'b-table-has-details' : ''],\n props: {\n variant: item[FIELD_KEY_ROW_VARIANT] || null\n },\n attrs: _objectSpread(_objectSpread({\n id: rowId\n }, userTrAttrs), {}, {\n // Users cannot override the following attributes\n tabindex: hasRowClickHandler ? '0' : null,\n 'data-pk': primaryKeyValue || null,\n 'aria-details': detailsId,\n 'aria-owns': detailsId,\n 'aria-rowindex': ariaRowIndex\n }, selectableAttrs),\n on: {\n // Note: These events are not A11Y friendly!\n mouseenter: this.rowHovered,\n mouseleave: this.rowUnhovered\n },\n key: \"__b-table-row-\".concat(rowKey, \"__\"),\n ref: 'item-rows',\n refInFor: true\n }, $tds)); // Row Details slot\n\n if (rowShowDetails) {\n var detailsScope = {\n item: item,\n index: rowIndex,\n fields: fields,\n toggleDetails: this.toggleDetailsFactory(hasDetailsSlot, item)\n }; // If table supports selectable mode, then add in the following scope\n // this.supportsSelectableRows will be undefined if mixin isn't loaded\n\n if (this.supportsSelectableRows) {\n detailsScope.rowSelected = this.isRowSelected(rowIndex);\n\n detailsScope.selectRow = function () {\n return _this3.selectRow(rowIndex);\n };\n\n detailsScope.unselectRow = function () {\n return _this3.unselectRow(rowIndex);\n };\n } // Render the details slot in a TD\n\n\n var $details = h(BTd, {\n props: {\n colspan: fields.length\n },\n class: this.detailsTdClass\n }, [this.normalizeSlot(SLOT_NAME_ROW_DETAILS, detailsScope)]); // Add a hidden row to keep table row striping consistent when details showing\n // Only added if the table is striped\n\n if (striped) {\n $rows.push( // We don't use `BTr` here as we don't need the extra functionality\n h('tr', {\n staticClass: 'd-none',\n attrs: {\n 'aria-hidden': 'true',\n role: 'presentation'\n },\n key: \"__b-table-details-stripe__\".concat(rowKey)\n }));\n } // Add the actual details row\n\n\n var userDetailsTrClasses = isFunction(this.tbodyTrClass) ?\n /* istanbul ignore next */\n this.tbodyTrClass(item, SLOT_NAME_ROW_DETAILS) : this.tbodyTrClass;\n var userDetailsTrAttrs = isFunction(this.tbodyTrAttr) ?\n /* istanbul ignore next */\n this.tbodyTrAttr(item, SLOT_NAME_ROW_DETAILS) : this.tbodyTrAttr;\n $rows.push(h(BTr, {\n staticClass: 'b-table-details',\n class: [userDetailsTrClasses],\n props: {\n variant: item[FIELD_KEY_ROW_VARIANT] || null\n },\n attrs: _objectSpread(_objectSpread({}, userDetailsTrAttrs), {}, {\n // Users cannot override the following attributes\n id: detailsId,\n tabindex: '-1'\n }),\n key: \"__b-table-details__\".concat(rowKey)\n }, [$details]));\n } else if (hasDetailsSlot) {\n // Only add the placeholder if a the table has a row-details slot defined (but not shown)\n $rows.push(h());\n\n if (striped) {\n // Add extra placeholder if table is striped\n $rows.push(h());\n }\n } // Return the row(s)\n\n\n return $rows;\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 { EVENT_NAME_ROW_CLICKED, EVENT_NAME_ROW_CONTEXTMENU, EVENT_NAME_ROW_DBLCLICKED, EVENT_NAME_ROW_MIDDLE_CLICKED } from '../../../constants/events';\nimport { CODE_DOWN, CODE_END, CODE_ENTER, CODE_HOME, CODE_SPACE, CODE_UP } from '../../../constants/key-codes';\nimport { PROP_TYPE_ARRAY_OBJECT_STRING } from '../../../constants/props';\nimport { arrayIncludes, from as arrayFrom } from '../../../utils/array';\nimport { attemptFocus, closest, isActiveElement, isElement } from '../../../utils/dom';\nimport { stopEvent } from '../../../utils/events';\nimport { sortKeys } from '../../../utils/object';\nimport { makeProp, pluckProps } from '../../../utils/props';\nimport { BTbody, props as BTbodyProps } from '../tbody';\nimport { filterEvent } from './filter-event';\nimport { textSelectionActive } from './text-selection-active';\nimport { tbodyRowMixin, props as tbodyRowProps } from './mixin-tbody-row'; // --- Helper methods ---\n\nvar getCellSlotName = function getCellSlotName(value) {\n return \"cell(\".concat(value || '', \")\");\n}; // --- Props ---\n\n\nexport var props = sortKeys(_objectSpread(_objectSpread(_objectSpread({}, BTbodyProps), tbodyRowProps), {}, {\n tbodyClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING)\n})); // --- Mixin ---\n// @vue/component\n\nexport var tbodyMixin = Vue.extend({\n mixins: [tbodyRowMixin],\n props: props,\n beforeDestroy: function beforeDestroy() {\n this.$_bodyFieldSlotNameCache = null;\n },\n methods: {\n // Returns all the item TR elements (excludes detail and spacer rows)\n // `this.$refs['item-rows']` is an array of item TR components/elements\n // Rows should all be `` components, but we map to TR elements\n // Also note that `this.$refs['item-rows']` may not always be in document order\n getTbodyTrs: function getTbodyTrs() {\n var $refs = this.$refs;\n var tbody = $refs.tbody ? $refs.tbody.$el || $refs.tbody : null;\n var trs = ($refs['item-rows'] || []).map(function (tr) {\n return tr.$el || tr;\n });\n return tbody && tbody.children && tbody.children.length > 0 && trs && trs.length > 0 ? arrayFrom(tbody.children).filter(function (tr) {\n return arrayIncludes(trs, tr);\n }) :\n /* istanbul ignore next */\n [];\n },\n // Returns index of a particular TBODY item TR\n // We set `true` on closest to include self in result\n getTbodyTrIndex: function getTbodyTrIndex(el) {\n /* istanbul ignore next: should not normally happen */\n if (!isElement(el)) {\n return -1;\n }\n\n var tr = el.tagName === 'TR' ? el : closest('tr', el, true);\n return tr ? this.getTbodyTrs().indexOf(tr) : -1;\n },\n // Emits a row event, with the item object, row index and original event\n emitTbodyRowEvent: function emitTbodyRowEvent(type, event) {\n if (type && this.hasListener(type) && event && event.target) {\n var rowIndex = this.getTbodyTrIndex(event.target);\n\n if (rowIndex > -1) {\n // The array of TRs correlate to the `computedItems` array\n var item = this.computedItems[rowIndex];\n this.$emit(type, item, rowIndex, event);\n }\n }\n },\n tbodyRowEvtStopped: function tbodyRowEvtStopped(event) {\n return this.stopIfBusy && this.stopIfBusy(event);\n },\n // Delegated row event handlers\n onTbodyRowKeydown: function onTbodyRowKeydown(event) {\n // Keyboard navigation and row click emulation\n var target = event.target,\n keyCode = event.keyCode;\n\n if (this.tbodyRowEvtStopped(event) || target.tagName !== 'TR' || !isActiveElement(target) || target.tabIndex !== 0) {\n // Early exit if not an item row TR\n return;\n }\n\n if (arrayIncludes([CODE_ENTER, CODE_SPACE], keyCode)) {\n // Emulated click for keyboard users, transfer to click handler\n stopEvent(event);\n this.onTBodyRowClicked(event);\n } else if (arrayIncludes([CODE_UP, CODE_DOWN, CODE_HOME, CODE_END], keyCode)) {\n // Keyboard navigation\n var rowIndex = this.getTbodyTrIndex(target);\n\n if (rowIndex > -1) {\n stopEvent(event);\n var trs = this.getTbodyTrs();\n var shift = event.shiftKey;\n\n if (keyCode === CODE_HOME || shift && keyCode === CODE_UP) {\n // Focus first row\n attemptFocus(trs[0]);\n } else if (keyCode === CODE_END || shift && keyCode === CODE_DOWN) {\n // Focus last row\n attemptFocus(trs[trs.length - 1]);\n } else if (keyCode === CODE_UP && rowIndex > 0) {\n // Focus previous row\n attemptFocus(trs[rowIndex - 1]);\n } else if (keyCode === CODE_DOWN && rowIndex < trs.length - 1) {\n // Focus next row\n attemptFocus(trs[rowIndex + 1]);\n }\n }\n }\n },\n onTBodyRowClicked: function onTBodyRowClicked(event) {\n // Don't emit event when the table is busy, the user clicked\n // on a non-disabled control or is selecting text\n if (this.tbodyRowEvtStopped(event) || filterEvent(event) || textSelectionActive(this.$el)) {\n return;\n }\n\n this.emitTbodyRowEvent(EVENT_NAME_ROW_CLICKED, event);\n },\n onTbodyRowMiddleMouseRowClicked: function onTbodyRowMiddleMouseRowClicked(event) {\n if (!this.tbodyRowEvtStopped(event) && event.which === 2) {\n this.emitTbodyRowEvent(EVENT_NAME_ROW_MIDDLE_CLICKED, event);\n }\n },\n onTbodyRowContextmenu: function onTbodyRowContextmenu(event) {\n if (!this.tbodyRowEvtStopped(event)) {\n this.emitTbodyRowEvent(EVENT_NAME_ROW_CONTEXTMENU, event);\n }\n },\n onTbodyRowDblClicked: function onTbodyRowDblClicked(event) {\n if (!this.tbodyRowEvtStopped(event) && !filterEvent(event)) {\n this.emitTbodyRowEvent(EVENT_NAME_ROW_DBLCLICKED, event);\n }\n },\n // Render the tbody element and children\n // Note:\n // Row hover handlers are handled by the tbody-row mixin\n // As mouseenter/mouseleave events do not bubble\n renderTbody: function renderTbody() {\n var _this = this;\n\n var items = this.computedItems,\n renderBusy = this.renderBusy,\n renderTopRow = this.renderTopRow,\n renderEmpty = this.renderEmpty,\n renderBottomRow = this.renderBottomRow;\n var h = this.$createElement;\n var hasRowClickHandler = this.hasListener(EVENT_NAME_ROW_CLICKED) || this.hasSelectableRowClick; // Prepare the tbody rows\n\n var $rows = []; // Add the item data rows or the busy slot\n\n var $busy = renderBusy ? renderBusy() : null;\n\n if ($busy) {\n // If table is busy and a busy slot, then return only the busy \"row\" indicator\n $rows.push($busy);\n } else {\n // Table isn't busy, or we don't have a busy slot\n // Create a slot cache for improved performance when looking up cell slot names\n // Values will be keyed by the field's `key` and will store the slot's name\n // Slots could be dynamic (i.e. `v-if`), so we must compute on each render\n // Used by tbody-row mixin render helper\n var cache = {};\n var defaultSlotName = getCellSlotName();\n defaultSlotName = this.hasNormalizedSlot(defaultSlotName) ? defaultSlotName : null;\n this.computedFields.forEach(function (field) {\n var key = field.key;\n var slotName = getCellSlotName(key);\n var lowercaseSlotName = getCellSlotName(key.toLowerCase());\n cache[key] = _this.hasNormalizedSlot(slotName) ? slotName : _this.hasNormalizedSlot(lowercaseSlotName) ?\n /* istanbul ignore next */\n lowercaseSlotName : defaultSlotName;\n }); // Created as a non-reactive property so to not trigger component updates\n // Must be a fresh object each render\n\n this.$_bodyFieldSlotNameCache = cache; // Add static top row slot (hidden in visibly stacked mode\n // as we can't control `data-label` attr)\n\n $rows.push(renderTopRow ? renderTopRow() : h()); // Render the rows\n\n items.forEach(function (item, rowIndex) {\n // Render the individual item row (rows if details slot)\n $rows.push(_this.renderTbodyRow(item, rowIndex));\n }); // Empty items / empty filtered row slot (only shows if `items.length < 1`)\n\n $rows.push(renderEmpty ? renderEmpty() : h()); // Static bottom row slot (hidden in visibly stacked mode\n // as we can't control `data-label` attr)\n\n $rows.push(renderBottomRow ? renderBottomRow() : h());\n } // Note: these events will only emit if a listener is registered\n\n\n var handlers = {\n auxclick: this.onTbodyRowMiddleMouseRowClicked,\n // TODO:\n // Perhaps we do want to automatically prevent the\n // default context menu from showing if there is a\n // `row-contextmenu` listener registered\n contextmenu: this.onTbodyRowContextmenu,\n // The following event(s) is not considered A11Y friendly\n dblclick: this.onTbodyRowDblClicked // Hover events (`mouseenter`/`mouseleave`) are handled by `tbody-row` mixin\n\n }; // Add in click/keydown listeners if needed\n\n if (hasRowClickHandler) {\n handlers.click = this.onTBodyRowClicked;\n handlers.keydown = this.onTbodyRowKeydown;\n } // Assemble rows into the tbody\n\n\n var $tbody = h(BTbody, {\n class: this.tbodyClass || null,\n props: pluckProps(BTbodyProps, this.$props),\n // BTbody transfers all native event listeners to the root element\n // TODO: Only set the handlers if the table is not busy\n on: handlers,\n ref: 'tbody'\n }, $rows); // Return the assembled tbody\n\n return $tbody;\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_TFOOT } from '../../constants/components';\nimport { PROP_TYPE_STRING } from '../../constants/props';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { attrsMixin } from '../../mixins/attrs';\nimport { listenersMixin } from '../../mixins/listeners';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n // Supported values: 'lite', 'dark', or null\n footVariant: makeProp(PROP_TYPE_STRING)\n}, NAME_TFOOT); // --- Main component ---\n// TODO:\n// In Bootstrap v5, we won't need \"sniffing\" as table element variants properly inherit\n// to the child elements, so this can be converted to a functional component\n// @vue/component\n\nexport var BTfoot = /*#__PURE__*/Vue.extend({\n name: NAME_TFOOT,\n mixins: [attrsMixin, listenersMixin, normalizeSlotMixin],\n provide: function provide() {\n return {\n bvTableRowGroup: this\n };\n },\n inject: {\n // Sniffed by `` / `` / ``\n bvTable: {\n default:\n /* istanbul ignore next */\n function _default() {\n return {};\n }\n }\n },\n inheritAttrs: false,\n props: props,\n computed: {\n // Sniffed by `` / `` / ``\n isTfoot: function isTfoot() {\n return true;\n },\n // Sniffed by `` / `` / ``\n isDark: function isDark() {\n return this.bvTable.dark;\n },\n // Sniffed by `` / `` / ``\n isStacked: function isStacked() {\n return this.bvTable.isStacked;\n },\n // Sniffed by `` / `` / ``\n isResponsive: function isResponsive() {\n return this.bvTable.isResponsive;\n },\n // Sniffed by `` / `` / ``\n // Sticky headers are only supported in thead\n isStickyHeader: function isStickyHeader() {\n return false;\n },\n // Sniffed by `` / `` / ``\n // Needed to handle header background classes, due to lack of\n // background color inheritance with Bootstrap v4 table CSS\n hasStickyHeader: function hasStickyHeader() {\n return !this.isStacked && this.bvTable.stickyHeader;\n },\n // Sniffed by `` / `` / ``\n tableVariant: function tableVariant() {\n return this.bvTable.tableVariant;\n },\n tfootClasses: function tfootClasses() {\n return [this.footVariant ? \"thead-\".concat(this.footVariant) : null];\n },\n tfootAttrs: function tfootAttrs() {\n return _objectSpread(_objectSpread({}, this.bvAttrs), {}, {\n role: 'rowgroup'\n });\n }\n },\n render: function render(h) {\n return h('tfoot', {\n class: this.tfootClasses,\n attrs: this.tfootAttrs,\n // Pass down any native listeners\n on: this.bvListeners\n }, this.normalizeSlot());\n }\n});","import { Vue } from '../../../vue';\nimport { PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../../constants/props';\nimport { SLOT_NAME_CUSTOM_FOOT } from '../../../constants/slots';\nimport { makeProp } from '../../../utils/props';\nimport { BTfoot } from '../tfoot'; // --- Props ---\n\nexport var props = {\n footClone: makeProp(PROP_TYPE_BOOLEAN, false),\n // Any Bootstrap theme variant (or custom)\n // Falls back to `headRowVariant`\n footRowVariant: makeProp(PROP_TYPE_STRING),\n // 'dark', 'light', or `null` (or custom)\n footVariant: makeProp(PROP_TYPE_STRING),\n tfootClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n tfootTrClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING)\n}; // --- Mixin ---\n// @vue/component\n\nexport var tfootMixin = Vue.extend({\n props: props,\n methods: {\n renderTFootCustom: function renderTFootCustom() {\n var h = this.$createElement;\n\n if (this.hasNormalizedSlot(SLOT_NAME_CUSTOM_FOOT)) {\n return h(BTfoot, {\n class: this.tfootClass || null,\n props: {\n footVariant: this.footVariant || this.headVariant || null\n },\n key: 'bv-tfoot-custom'\n }, this.normalizeSlot(SLOT_NAME_CUSTOM_FOOT, {\n items: this.computedItems.slice(),\n fields: this.computedFields.slice(),\n columns: this.computedFields.length\n }));\n }\n\n return h();\n },\n renderTfoot: function renderTfoot() {\n // Passing true to renderThead will make it render a tfoot\n return this.footClone ? this.renderThead(true) : this.renderTFootCustom();\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_THEAD } from '../../constants/components';\nimport { PROP_TYPE_STRING } from '../../constants/props';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { attrsMixin } from '../../mixins/attrs';\nimport { listenersMixin } from '../../mixins/listeners';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n // Also sniffed by `` / `` / ``\n // Supported values: 'lite', 'dark', or `null`\n headVariant: makeProp(PROP_TYPE_STRING)\n}, NAME_THEAD); // --- Main component ---\n// TODO:\n// In Bootstrap v5, we won't need \"sniffing\" as table element variants properly inherit\n// to the child elements, so this can be converted to a functional component\n// @vue/component\n\nexport var BThead = /*#__PURE__*/Vue.extend({\n name: NAME_THEAD,\n mixins: [attrsMixin, listenersMixin, normalizeSlotMixin],\n provide: function provide() {\n return {\n bvTableRowGroup: this\n };\n },\n inject: {\n // Sniffed by `` / `` / ``\n bvTable: {\n default:\n /* istanbul ignore next */\n function _default() {\n return {};\n }\n }\n },\n inheritAttrs: false,\n props: props,\n computed: {\n // Sniffed by `` / `` / ``\n isThead: function isThead() {\n return true;\n },\n // Sniffed by `` / `` / ``\n isDark: function isDark() {\n return this.bvTable.dark;\n },\n // Sniffed by `` / `` / ``\n isStacked: function isStacked() {\n return this.bvTable.isStacked;\n },\n // Sniffed by `` / `` / ``\n isResponsive: function isResponsive() {\n return this.bvTable.isResponsive;\n },\n // Sniffed by `` / `` / ``\n // Needed to handle header background classes, due to lack of\n // background color inheritance with Bootstrap v4 table CSS\n // Sticky headers only apply to cells in table `thead`\n isStickyHeader: function isStickyHeader() {\n return !this.isStacked && this.bvTable.stickyHeader;\n },\n // Sniffed by `` / `` / ``\n // Needed to handle header background classes, due to lack of\n // background color inheritance with Bootstrap v4 table CSS\n hasStickyHeader: function hasStickyHeader() {\n return !this.isStacked && this.bvTable.stickyHeader;\n },\n // Sniffed by `` / `` / ``\n tableVariant: function tableVariant() {\n return this.bvTable.tableVariant;\n },\n theadClasses: function theadClasses() {\n return [this.headVariant ? \"thead-\".concat(this.headVariant) : null];\n },\n theadAttrs: function theadAttrs() {\n return _objectSpread({\n role: 'rowgroup'\n }, this.bvAttrs);\n }\n },\n render: function render(h) {\n return h('thead', {\n class: this.theadClasses,\n attrs: this.theadAttrs,\n // Pass down any native listeners\n on: this.bvListeners\n }, this.normalizeSlot());\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\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 } from '../../../constants/events';\nimport { CODE_ENTER, CODE_SPACE } from '../../../constants/key-codes';\nimport { PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_STRING } from '../../../constants/props';\nimport { SLOT_NAME_THEAD_TOP } from '../../../constants/slots';\nimport { stopEvent } from '../../../utils/events';\nimport { htmlOrText } from '../../../utils/html';\nimport { identity } from '../../../utils/identity';\nimport { isUndefinedOrNull } from '../../../utils/inspect';\nimport { noop } from '../../../utils/noop';\nimport { makeProp } from '../../../utils/props';\nimport { startCase } from '../../../utils/string';\nimport { BThead } from '../thead';\nimport { BTfoot } from '../tfoot';\nimport { BTr } from '../tr';\nimport { BTh } from '../th';\nimport { filterEvent } from './filter-event';\nimport { textSelectionActive } from './text-selection-active'; // --- Helper methods ---\n\nvar getHeadSlotName = function getHeadSlotName(value) {\n return \"head(\".concat(value || '', \")\");\n};\n\nvar getFootSlotName = function getFootSlotName(value) {\n return \"foot(\".concat(value || '', \")\");\n}; // --- Props ---\n\n\nexport var props = {\n // Any Bootstrap theme variant (or custom)\n headRowVariant: makeProp(PROP_TYPE_STRING),\n // 'light', 'dark' or `null` (or custom)\n headVariant: makeProp(PROP_TYPE_STRING),\n theadClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n theadTrClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING)\n}; // --- Mixin ---\n// @vue/component\n\nexport var theadMixin = Vue.extend({\n props: props,\n methods: {\n fieldClasses: function fieldClasses(field) {\n // Header field (
) classes\n return [field.class ? field.class : '', field.thClass ? field.thClass : ''];\n },\n headClicked: function headClicked(event, field, isFoot) {\n if (this.stopIfBusy && this.stopIfBusy(event)) {\n // If table is busy (via provider) then don't propagate\n return;\n } else if (filterEvent(event)) {\n // Clicked on a non-disabled control so ignore\n return;\n } else if (textSelectionActive(this.$el)) {\n // User is selecting text, so ignore\n\n /* istanbul ignore next: JSDOM doesn't support getSelection() */\n return;\n }\n\n stopEvent(event);\n this.$emit(EVENT_NAME_HEAD_CLICKED, field.key, field, event, isFoot);\n },\n renderThead: function renderThead() {\n var _this = this;\n\n var isFoot = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n var fields = this.computedFields,\n isSortable = this.isSortable,\n isSelectable = this.isSelectable,\n headVariant = this.headVariant,\n footVariant = this.footVariant,\n headRowVariant = this.headRowVariant,\n footRowVariant = this.footRowVariant;\n var h = this.$createElement; // In always stacked mode, we don't bother rendering the head/foot\n // Or if no field headings (empty table)\n\n if (this.isStackedAlways || fields.length === 0) {\n return h();\n }\n\n var hasHeadClickListener = isSortable || this.hasListener(EVENT_NAME_HEAD_CLICKED); // Reference to `selectAllRows` and `clearSelected()`, if table is selectable\n\n var selectAllRows = isSelectable ? this.selectAllRows : noop;\n var clearSelected = isSelectable ? this.clearSelected : noop; // Helper function to generate a field cell\n\n var makeCell = function makeCell(field, colIndex) {\n var label = field.label,\n labelHtml = field.labelHtml,\n variant = field.variant,\n stickyColumn = field.stickyColumn,\n key = field.key;\n var ariaLabel = null;\n\n if (!field.label.trim() && !field.headerTitle) {\n // In case field's label and title are empty/blank\n // We need to add a hint about what the column is about for non-sighted users\n\n /* istanbul ignore next */\n ariaLabel = startCase(field.key);\n }\n\n var on = {};\n\n if (hasHeadClickListener) {\n on.click = function (event) {\n _this.headClicked(event, field, isFoot);\n };\n\n on.keydown = function (event) {\n var keyCode = event.keyCode;\n\n if (keyCode === CODE_ENTER || keyCode === CODE_SPACE) {\n _this.headClicked(event, field, isFoot);\n }\n };\n }\n\n var sortAttrs = isSortable ? _this.sortTheadThAttrs(key, field, isFoot) : {};\n var sortClass = isSortable ? _this.sortTheadThClasses(key, field, isFoot) : null;\n var sortLabel = isSortable ? _this.sortTheadThLabel(key, field, isFoot) : null;\n var data = {\n class: [_this.fieldClasses(field), sortClass],\n props: {\n variant: variant,\n stickyColumn: stickyColumn\n },\n style: field.thStyle || {},\n attrs: _objectSpread(_objectSpread({\n // We only add a `tabindex` of `0` if there is a head-clicked listener\n // and the current field is sortable\n tabindex: hasHeadClickListener && field.sortable ? '0' : null,\n abbr: field.headerAbbr || null,\n title: field.headerTitle || null,\n 'aria-colindex': colIndex + 1,\n 'aria-label': ariaLabel\n }, _this.getThValues(null, key, field.thAttr, isFoot ? 'foot' : 'head', {})), sortAttrs),\n on: on,\n key: key\n }; // Handle edge case where in-document templates are used with new\n // `v-slot:name` syntax where the browser lower-cases the v-slot's\n // name (attributes become lower cased when parsed by the browser)\n // We have replaced the square bracket syntax with round brackets\n // to prevent confusion with dynamic slot names\n\n var slotNames = [getHeadSlotName(key), getHeadSlotName(key.toLowerCase()), getHeadSlotName()]; // Footer will fallback to header slot names\n\n if (isFoot) {\n slotNames = [getFootSlotName(key), getFootSlotName(key.toLowerCase()), getFootSlotName()].concat(_toConsumableArray(slotNames));\n }\n\n var scope = {\n label: label,\n column: key,\n field: field,\n isFoot: isFoot,\n // Add in row select methods\n selectAllRows: selectAllRows,\n clearSelected: clearSelected\n };\n var $content = _this.normalizeSlot(slotNames, scope) || h('div', {\n domProps: htmlOrText(labelHtml, label)\n });\n var $srLabel = sortLabel ? h('span', {\n staticClass: 'sr-only'\n }, \" (\".concat(sortLabel, \")\")) : null; // Return the header cell\n\n return h(BTh, data, [$content, $srLabel].filter(identity));\n }; // Generate the array of cells\n\n\n var $cells = fields.map(makeCell).filter(identity); // Generate the row(s)\n\n var $trs = [];\n\n if (isFoot) {\n $trs.push(h(BTr, {\n class: this.tfootTrClass,\n props: {\n variant: isUndefinedOrNull(footRowVariant) ? headRowVariant :\n /* istanbul ignore next */\n footRowVariant\n }\n }, $cells));\n } else {\n var scope = {\n columns: fields.length,\n fields: fields,\n // Add in row select methods\n selectAllRows: selectAllRows,\n clearSelected: clearSelected\n };\n $trs.push(this.normalizeSlot(SLOT_NAME_THEAD_TOP, scope) || h());\n $trs.push(h(BTr, {\n class: this.theadTrClass,\n props: {\n variant: headRowVariant\n }\n }, $cells));\n }\n\n return h(isFoot ? BTfoot : BThead, {\n class: (isFoot ? this.tfootClass : this.theadClass) || null,\n props: isFoot ? {\n footVariant: footVariant || headVariant || null\n } : {\n headVariant: headVariant || null\n },\n key: isFoot ? 'bv-tfoot' : 'bv-thead'\n }, $trs);\n }\n }\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});","'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar toObject = require('../internals/to-object');\nvar nativeGetPrototypeOf = require('../internals/object-get-prototype-of');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeGetPrototypeOf(1); });\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES, sham: !CORRECT_PROTOTYPE_GETTER }, {\n getPrototypeOf: function getPrototypeOf(it) {\n return nativeGetPrototypeOf(toObject(it));\n }\n});\n\n","import { Vue } from '../../vue';\nimport { NAME_PROGRESS_BAR } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_NUMBER_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { htmlOrText } from '../../utils/html';\nimport { isBoolean } from '../../utils/inspect';\nimport { mathMax, mathPow } from '../../utils/math';\nimport { toFixed, toFloat, toInteger } from '../../utils/number';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { toString } from '../../utils/string';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n animated: makeProp(PROP_TYPE_BOOLEAN, null),\n label: makeProp(PROP_TYPE_STRING),\n labelHtml: makeProp(PROP_TYPE_STRING),\n max: makeProp(PROP_TYPE_NUMBER_STRING, null),\n precision: makeProp(PROP_TYPE_NUMBER_STRING, null),\n showProgress: makeProp(PROP_TYPE_BOOLEAN, null),\n showValue: makeProp(PROP_TYPE_BOOLEAN, null),\n striped: makeProp(PROP_TYPE_BOOLEAN, null),\n value: makeProp(PROP_TYPE_NUMBER_STRING, 0),\n variant: makeProp(PROP_TYPE_STRING)\n}, NAME_PROGRESS_BAR); // --- Main component ---\n// @vue/component\n\nexport var BProgressBar = /*#__PURE__*/Vue.extend({\n name: NAME_PROGRESS_BAR,\n mixins: [normalizeSlotMixin],\n inject: {\n bvProgress: {\n default:\n /* istanbul ignore next */\n function _default() {\n return {};\n }\n }\n },\n props: props,\n computed: {\n progressBarClasses: function progressBarClasses() {\n var computedAnimated = this.computedAnimated,\n computedVariant = this.computedVariant;\n return [computedVariant ? \"bg-\".concat(computedVariant) : '', this.computedStriped || computedAnimated ? 'progress-bar-striped' : '', computedAnimated ? 'progress-bar-animated' : ''];\n },\n progressBarStyles: function progressBarStyles() {\n return {\n width: 100 * (this.computedValue / this.computedMax) + '%'\n };\n },\n computedValue: function computedValue() {\n return toFloat(this.value, 0);\n },\n computedMax: function computedMax() {\n // Prefer our max over parent setting\n // Default to `100` for invalid values (`-x`, `0`, `NaN`)\n var max = toFloat(this.max) || toFloat(this.bvProgress.max, 0);\n return max > 0 ? max : 100;\n },\n computedPrecision: function computedPrecision() {\n // Prefer our precision over parent setting\n // Default to `0` for invalid values (`-x`, `NaN`)\n return mathMax(toInteger(this.precision, toInteger(this.bvProgress.precision, 0)), 0);\n },\n computedProgress: function computedProgress() {\n var precision = this.computedPrecision;\n var p = mathPow(10, precision);\n return toFixed(100 * p * this.computedValue / this.computedMax / p, precision);\n },\n computedVariant: function computedVariant() {\n // Prefer our variant over parent setting\n return this.variant || this.bvProgress.variant;\n },\n computedStriped: function computedStriped() {\n // Prefer our striped over parent setting\n return isBoolean(this.striped) ? this.striped : this.bvProgress.striped || false;\n },\n computedAnimated: function computedAnimated() {\n // Prefer our animated over parent setting\n return isBoolean(this.animated) ? this.animated : this.bvProgress.animated || false;\n },\n computedShowProgress: function computedShowProgress() {\n // Prefer our showProgress over parent setting\n return isBoolean(this.showProgress) ? this.showProgress : this.bvProgress.showProgress || false;\n },\n computedShowValue: function computedShowValue() {\n // Prefer our showValue over parent setting\n return isBoolean(this.showValue) ? this.showValue : this.bvProgress.showValue || false;\n }\n },\n render: function render(h) {\n var label = this.label,\n labelHtml = this.labelHtml,\n computedValue = this.computedValue,\n computedPrecision = this.computedPrecision;\n var $children;\n var domProps = {};\n\n if (this.hasNormalizedSlot()) {\n $children = this.normalizeSlot();\n } else if (label || labelHtml) {\n domProps = htmlOrText(labelHtml, label);\n } else if (this.computedShowProgress) {\n $children = this.computedProgress;\n } else if (this.computedShowValue) {\n $children = toFixed(computedValue, computedPrecision);\n }\n\n return h('div', {\n staticClass: 'progress-bar',\n class: this.progressBarClasses,\n style: this.progressBarStyles,\n attrs: {\n role: 'progressbar',\n 'aria-valuemin': '0',\n 'aria-valuemax': toString(this.computedMax),\n 'aria-valuenow': toFixed(computedValue, computedPrecision)\n },\n domProps: domProps\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 } from '../../vue';\nimport { NAME_PROGRESS } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_NUMBER_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { omit, sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable, pluckProps } from '../../utils/props';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { BProgressBar, props as BProgressBarProps } from './progress-bar'; // --- Props ---\n\nvar progressBarProps = omit(BProgressBarProps, ['label', 'labelHtml']);\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, progressBarProps), {}, {\n animated: makeProp(PROP_TYPE_BOOLEAN, false),\n height: makeProp(PROP_TYPE_STRING),\n max: makeProp(PROP_TYPE_NUMBER_STRING, 100),\n precision: makeProp(PROP_TYPE_NUMBER_STRING, 0),\n showProgress: makeProp(PROP_TYPE_BOOLEAN, false),\n showValue: makeProp(PROP_TYPE_BOOLEAN, false),\n striped: makeProp(PROP_TYPE_BOOLEAN, false)\n})), NAME_PROGRESS); // --- Main component ---\n// @vue/component\n\nexport var BProgress = /*#__PURE__*/Vue.extend({\n name: NAME_PROGRESS,\n mixins: [normalizeSlotMixin],\n provide: function provide() {\n return {\n bvProgress: this\n };\n },\n props: props,\n computed: {\n progressHeight: function progressHeight() {\n return {\n height: this.height || null\n };\n }\n },\n render: function render(h) {\n var $childNodes = this.normalizeSlot();\n\n if (!$childNodes) {\n $childNodes = h(BProgressBar, {\n props: pluckProps(progressBarProps, this.$props)\n });\n }\n\n return h('div', {\n staticClass: 'progress',\n style: this.progressHeight\n }, [$childNodes]);\n }\n});","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\nvar setToStringTag = require('../internals/set-to-string-tag');\n\n// `Symbol.toStringTag` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.tostringtag\ndefineWellKnownSymbol('toStringTag');\n\n// `Symbol.prototype[@@toStringTag]` property\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@tostringtag\nsetToStringTag(getBuiltIn('Symbol'), 'Symbol');\n","'use strict';\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.asyncIterator` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.asynciterator\ndefineWellKnownSymbol('asyncIterator');\n","export const heightTransition = {\n /*\n\n HowTo:\n 1. Add dynamic style to element and set style as `trHeight`\n 2. Set transition speed using `transition: 0.35s height;` <= you can use appropriate value;\n 3. Optionally you can set `overflow: hidden;` to hide element overflow while height is animated.\n 4. Set initial height using `trSetHeight` before any operation. [mounted hook is recommended - You can use `ref` for dynamic contents]\n 5. Toggle height using height operations 🍻\n 6. Toggle usage of $nextTick for height operations is any issue occur [experimental] 🔬\n\n */\n\n data() {\n return {\n trHeight: null,\n }\n },\n methods: {\n trAddHeight(val) {\n // Add height to existing height\n // Usage: Where new element is append or more height is added (e.g. list append)\n\n /* Assumes:\n - Height is assigned and is `String`\n - Incoming value is valid number in `Number` or `String`\n */\n const heightValue = Number(this.trHeight.substring(0, this.trHeight.length - 2))\n this.trHeight = `${heightValue + Number(val)}px`\n },\n trTrimHeight(val) {\n // Remove height from existing height\n // Usage: Where new element is removed or height is remove (e.g. list pop/ele remove)\n\n /* Assumes:\n - Height is assigned and is `String`\n - Incoming value is valid number in `Number` or `String`\n */\n const heightValue = Number(this.trHeight.substring(0, this.trHeight.length - 2))\n this.trHeight = `${heightValue - Number(val)}px`\n },\n trSetHeight(val) {\n // Set height\n // Usage: Mostly for assigning initial value from mounted hook\n\n /* Assumes:\n - Height is not assigned and what to assign for add/remove operation\n - What to set height at something for odd usage\n - Incoming value is valid number in `Number` or `String`\n */\n if (val === null) this.trHeight = 'auto'\n else this.trHeight = `${Number(val)}px`\n },\n },\n}\n\n// Ignore below for now. We will remove it when we add more transition in future.\nexport const _ = null\n","import _typeof from \"./typeof.js\";\nexport default function _regeneratorRuntime() {\n \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */\n _regeneratorRuntime = function _regeneratorRuntime() {\n return e;\n };\n var t,\n e = {},\n r = Object.prototype,\n n = r.hasOwnProperty,\n o = Object.defineProperty || function (t, e, r) {\n t[e] = r.value;\n },\n i = \"function\" == typeof Symbol ? Symbol : {},\n a = i.iterator || \"@@iterator\",\n c = i.asyncIterator || \"@@asyncIterator\",\n u = i.toStringTag || \"@@toStringTag\";\n function define(t, e, r) {\n return Object.defineProperty(t, e, {\n value: r,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }), t[e];\n }\n try {\n define({}, \"\");\n } catch (t) {\n define = function define(t, e, r) {\n return t[e] = r;\n };\n }\n function wrap(t, e, r, n) {\n var i = e && e.prototype instanceof Generator ? e : Generator,\n a = Object.create(i.prototype),\n c = new Context(n || []);\n return o(a, \"_invoke\", {\n value: makeInvokeMethod(t, r, c)\n }), a;\n }\n function tryCatch(t, e, r) {\n try {\n return {\n type: \"normal\",\n arg: t.call(e, r)\n };\n } catch (t) {\n return {\n type: \"throw\",\n arg: t\n };\n }\n }\n e.wrap = wrap;\n var h = \"suspendedStart\",\n l = \"suspendedYield\",\n f = \"executing\",\n s = \"completed\",\n y = {};\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n var p = {};\n define(p, a, function () {\n return this;\n });\n var d = Object.getPrototypeOf,\n v = d && d(d(values([])));\n v && v !== r && n.call(v, a) && (p = v);\n var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p);\n function defineIteratorMethods(t) {\n [\"next\", \"throw\", \"return\"].forEach(function (e) {\n define(t, e, function (t) {\n return this._invoke(e, t);\n });\n });\n }\n function AsyncIterator(t, e) {\n function invoke(r, o, i, a) {\n var c = tryCatch(t[r], t, o);\n if (\"throw\" !== c.type) {\n var u = c.arg,\n h = u.value;\n return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) {\n invoke(\"next\", t, i, a);\n }, function (t) {\n invoke(\"throw\", t, i, a);\n }) : e.resolve(h).then(function (t) {\n u.value = t, i(u);\n }, function (t) {\n return invoke(\"throw\", t, i, a);\n });\n }\n a(c.arg);\n }\n var r;\n o(this, \"_invoke\", {\n value: function value(t, n) {\n function callInvokeWithMethodAndArg() {\n return new e(function (e, r) {\n invoke(t, n, e, r);\n });\n }\n return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n }\n });\n }\n function makeInvokeMethod(e, r, n) {\n var o = h;\n return function (i, a) {\n if (o === f) throw new Error(\"Generator is already running\");\n if (o === s) {\n if (\"throw\" === i) throw a;\n return {\n value: t,\n done: !0\n };\n }\n for (n.method = i, n.arg = a;;) {\n var c = n.delegate;\n if (c) {\n var u = maybeInvokeDelegate(c, n);\n if (u) {\n if (u === y) continue;\n return u;\n }\n }\n if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) {\n if (o === h) throw o = s, n.arg;\n n.dispatchException(n.arg);\n } else \"return\" === n.method && n.abrupt(\"return\", n.arg);\n o = f;\n var p = tryCatch(e, r, n);\n if (\"normal\" === p.type) {\n if (o = n.done ? s : l, p.arg === y) continue;\n return {\n value: p.arg,\n done: n.done\n };\n }\n \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg);\n }\n };\n }\n function maybeInvokeDelegate(e, r) {\n var n = r.method,\n o = e.iterator[n];\n if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y;\n var i = tryCatch(o, e.iterator, r.arg);\n if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y;\n var a = i.arg;\n return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y);\n }\n function pushTryEntry(t) {\n var e = {\n tryLoc: t[0]\n };\n 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e);\n }\n function resetTryEntry(t) {\n var e = t.completion || {};\n e.type = \"normal\", delete e.arg, t.completion = e;\n }\n function Context(t) {\n this.tryEntries = [{\n tryLoc: \"root\"\n }], t.forEach(pushTryEntry, this), this.reset(!0);\n }\n function values(e) {\n if (e || \"\" === e) {\n var r = e[a];\n if (r) return r.call(e);\n if (\"function\" == typeof e.next) return e;\n if (!isNaN(e.length)) {\n var o = -1,\n i = function next() {\n for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next;\n return next.value = t, next.done = !0, next;\n };\n return i.next = i;\n }\n }\n throw new TypeError(_typeof(e) + \" is not iterable\");\n }\n return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", {\n value: GeneratorFunctionPrototype,\n configurable: !0\n }), o(GeneratorFunctionPrototype, \"constructor\", {\n value: GeneratorFunction,\n configurable: !0\n }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) {\n var e = \"function\" == typeof t && t.constructor;\n return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name));\n }, e.mark = function (t) {\n return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t;\n }, e.awrap = function (t) {\n return {\n __await: t\n };\n }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () {\n return this;\n }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) {\n void 0 === i && (i = Promise);\n var a = new AsyncIterator(wrap(t, r, n, o), i);\n return e.isGeneratorFunction(r) ? a : a.next().then(function (t) {\n return t.done ? t.value : a.next();\n });\n }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () {\n return this;\n }), define(g, \"toString\", function () {\n return \"[object Generator]\";\n }), e.keys = function (t) {\n var e = Object(t),\n r = [];\n for (var n in e) r.push(n);\n return r.reverse(), function next() {\n for (; r.length;) {\n var t = r.pop();\n if (t in e) return next.value = t, next.done = !1, next;\n }\n return next.done = !0, next;\n };\n }, e.values = values, Context.prototype = {\n constructor: Context,\n reset: function reset(e) {\n if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t);\n },\n stop: function stop() {\n this.done = !0;\n var t = this.tryEntries[0].completion;\n if (\"throw\" === t.type) throw t.arg;\n return this.rval;\n },\n dispatchException: function dispatchException(e) {\n if (this.done) throw e;\n var r = this;\n function handle(n, o) {\n return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o;\n }\n for (var o = this.tryEntries.length - 1; o >= 0; --o) {\n var i = this.tryEntries[o],\n a = i.completion;\n if (\"root\" === i.tryLoc) return handle(\"end\");\n if (i.tryLoc <= this.prev) {\n var c = n.call(i, \"catchLoc\"),\n u = n.call(i, \"finallyLoc\");\n if (c && u) {\n if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);\n if (this.prev < i.finallyLoc) return handle(i.finallyLoc);\n } else if (c) {\n if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);\n } else {\n if (!u) throw new Error(\"try statement without catch or finally\");\n if (this.prev < i.finallyLoc) return handle(i.finallyLoc);\n }\n }\n }\n },\n abrupt: function abrupt(t, e) {\n for (var r = this.tryEntries.length - 1; r >= 0; --r) {\n var o = this.tryEntries[r];\n if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) {\n var i = o;\n break;\n }\n }\n i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null);\n var a = i ? i.completion : {};\n return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a);\n },\n complete: function complete(t, e) {\n if (\"throw\" === t.type) throw t.arg;\n return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y;\n },\n finish: function finish(t) {\n for (var e = this.tryEntries.length - 1; e >= 0; --e) {\n var r = this.tryEntries[e];\n if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y;\n }\n },\n \"catch\": function _catch(t) {\n for (var e = this.tryEntries.length - 1; e >= 0; --e) {\n var r = this.tryEntries[e];\n if (r.tryLoc === t) {\n var n = r.completion;\n if (\"throw\" === n.type) {\n var o = n.arg;\n resetTryEntry(r);\n }\n return o;\n }\n }\n throw new Error(\"illegal catch attempt\");\n },\n delegateYield: function delegateYield(e, r, n) {\n return this.delegate = {\n iterator: values(e),\n resultName: r,\n nextLoc: n\n }, \"next\" === this.method && (this.arg = t), y;\n }\n }, e;\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_BADGE } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../constants/props';\nimport { omit, sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable, pluckProps } from '../../utils/props';\nimport { isLink } from '../../utils/router';\nimport { BLink, props as BLinkProps } from '../link/link'; // --- Props ---\n\nvar linkProps = omit(BLinkProps, ['event', 'routerTag']);\ndelete linkProps.href.default;\ndelete linkProps.to.default;\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, linkProps), {}, {\n pill: makeProp(PROP_TYPE_BOOLEAN, false),\n tag: makeProp(PROP_TYPE_STRING, 'span'),\n variant: makeProp(PROP_TYPE_STRING, 'secondary')\n})), NAME_BADGE); // --- Main component ---\n// @vue/component\n\nexport var BBadge = /*#__PURE__*/Vue.extend({\n name: NAME_BADGE,\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 active = props.active,\n disabled = props.disabled;\n var link = isLink(props);\n var tag = link ? BLink : props.tag;\n var variant = props.variant || 'secondary';\n return h(tag, mergeData(data, {\n staticClass: 'badge',\n class: [\"badge-\".concat(variant), {\n 'badge-pill': props.pill,\n active: active,\n disabled: disabled\n }],\n props: link ? pluckProps(linkProps, props) : {}\n }), children);\n }\n});","export var noop = function noop() {};"],"sourceRoot":""}