{"version":3,"sources":["webpack:///./node_modules/bootstrap-vue/esm/mixins/form-selection.js","webpack:///./node_modules/bootstrap-vue/esm/mixins/form-validity.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/bootstrap-vue/esm/components/input-group/input-group-prepend.js","webpack:///./node_modules/bootstrap-vue/esm/mixins/form-text.js","webpack:///./node_modules/bootstrap-vue/esm/components/input-group/input-group-addon.js","webpack:///./node_modules/bootstrap-vue/esm/components/form-input/form-input.js","webpack:///./node_modules/bootstrap-vue/esm/components/input-group/input-group.js","webpack:///./node_modules/bootstrap-vue/esm/components/alert/alert.js","webpack:///./src/views/live/Live.vue?204b","webpack:///./src/views/live/LiveGrid.vue?edc2","webpack:///src/views/live/LiveGrid.vue","webpack:///./src/views/live/LiveGrid.vue?34de","webpack:///./src/views/live/LiveGrid.vue","webpack:///src/views/live/Live.vue","webpack:///./src/views/live/Live.vue?2afb","webpack:///./src/views/live/Live.vue","webpack:///./node_modules/bootstrap-vue/esm/utils/stable-sort.js","webpack:///./node_modules/bootstrap-vue/esm/mixins/form-size.js","webpack:///./src/views/live/LiveGrid.vue?e523","webpack:///./node_modules/bootstrap-vue/esm/components/input-group/input-group-append.js","webpack:///./node_modules/bootstrap-vue/esm/components/input-group/input-group-text.js","webpack:///./node_modules/bootstrap-vue/esm/mixins/form-state.js","webpack:///./node_modules/bootstrap-vue/esm/components/card/card-text.js","webpack:///./node_modules/bootstrap-vue/esm/mixins/form-control.js"],"names":["formSelectionMixin","extend","computed","selectionStart","cache","get","this","$refs","input","set","val","selectionEnd","selectionDirection","methods","select","_this$$refs$input","apply","arguments","setSelectionRange","_this$$refs$input2","setRangeText","_this$$refs$input3","formValidityMixin","validity","validationMessage","willValidate","setCustomValidity","checkValidity","reportValidity","hasListenerMixin","hasListener","name","$listeners","$events","_events","length","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","_objectSpread","target","i","source","forEach","key","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","obj","value","configurable","writable","LIGHT","DARK","variant","BTr","mixins","attrs","listeners","provide","bvTableTr","inject","bvTableRowGroup","default","inheritAttrs","props","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","undefined","formattedRow","field","filterByFormatted","formatter","allowedKeys","array","_toConsumableArray","arr","_arrayWithoutHoles","_iterableToArray","_unsupportedIterableToArray","_nonIterableSpread","TypeError","o","minLen","_arrayLikeToArray","n","prototype","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","fn","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","then","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","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","tbody","$el","trs","tr","children","getTbodyTrIndex","onTbodyRowKeydown","keyCode","tabIndex","onTBodyRowClicked","shift","onTbodyRowMiddleMouseRowClicked","which","onTbodyRowContextmenu","onTbodyRowDblClicked","renderTopRow","$busy","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","BInputGroupPrepend","functional","append","ariaInvalid","autocomplete","debounce","lazy","lazyFormatter","number","placeholder","plaintext","readonly","formTextMixin","localValue","vModelValue","modifyValue","computedClass","isRange","isColor","sizeFormClass","stateClass","computedDebounce","hasFormatter","stringifyValue","modifiedValue","clearDebounce","$_inputDebounceTimer","formatValue","force","updateValue","doUpdate","$input","onInput","composing","formattedValue","defaultPrevented","propagation","onChange","onBlur","focus","blur","isText","BInputGroupAddon","TYPES","list","max","min","noWheel","step","BFormInput","localType","computedAttrs","form","required","computedAriaInvalid","computedListeners","change","setWheelStopper","deactivated","activated","onWheelFocus","onWheelBlur","stopWheel","appendHtml","prepend","prependHtml","size","BInputGroup","slots","scopedSlots","$scopedSlots","$slots","$prepend","hasPrependSlot","$append","hasAppendSlot","parseCountDown","show","parseShow","dismissLabel","dismissible","fade","BAlert","countDown","localShow","clearCountDownInterval","$_countDownTimeout","dismiss","$alert","$dismissButton","noFade","_vm","_h","_c","_self","staticRenderFns","_v","filterTable","model","callback","$$v","expression","filterChannels","_u","params","idcanal","path","_s","nombre","categoria","_e","detalle","working","$event","$router","go","components","BRow","BCol","BCard","BCardBody","BImg","BCardText","BLink","BButton","BSpinner","BInputGroupAppend","directives","Ripple","swiperData","$http","idcanaltipo","estado","response","catch","error","console","log","filterTableAll","arrayOriginal","canal","nombreReturn","filterSearch","DetalleReturn","valueFilter","toUpperCase","includes","component","HomeLive","LiveGrid","stableSort","compareFn","bind","formSizeMixin","BInputGroupText","state","formStateMixin","computedState","textTag","SELECTOR","autofocus","formControlMixin","handleAutofocus"],"mappings":"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","file":"js/chunk-451ad8c9.213cab61.js","sourcesContent":["import { Vue } from '../vue'; // @vue/component\n\nexport var formSelectionMixin = Vue.extend({\n computed: {\n selectionStart: {\n // Expose selectionStart for formatters, etc\n cache: false,\n\n /* istanbul ignore next */\n get: function get() {\n return this.$refs.input.selectionStart;\n },\n\n /* istanbul ignore next */\n set: function set(val) {\n this.$refs.input.selectionStart = val;\n }\n },\n selectionEnd: {\n // Expose selectionEnd for formatters, etc\n cache: false,\n\n /* istanbul ignore next */\n get: function get() {\n return this.$refs.input.selectionEnd;\n },\n\n /* istanbul ignore next */\n set: function set(val) {\n this.$refs.input.selectionEnd = val;\n }\n },\n selectionDirection: {\n // Expose selectionDirection for formatters, etc\n cache: false,\n\n /* istanbul ignore next */\n get: function get() {\n return this.$refs.input.selectionDirection;\n },\n\n /* istanbul ignore next */\n set: function set(val) {\n this.$refs.input.selectionDirection = val;\n }\n }\n },\n methods: {\n /* istanbul ignore next */\n select: function select() {\n var _this$$refs$input;\n\n // For external handler that may want a select() method\n (_this$$refs$input = this.$refs.input).select.apply(_this$$refs$input, arguments);\n },\n\n /* istanbul ignore next */\n setSelectionRange: function setSelectionRange() {\n var _this$$refs$input2;\n\n // For external handler that may want a setSelectionRange(a,b,c) method\n (_this$$refs$input2 = this.$refs.input).setSelectionRange.apply(_this$$refs$input2, arguments);\n },\n\n /* istanbul ignore next */\n setRangeText: function setRangeText() {\n var _this$$refs$input3;\n\n // For external handler that may want a setRangeText(a,b,c) method\n (_this$$refs$input3 = this.$refs.input).setRangeText.apply(_this$$refs$input3, arguments);\n }\n }\n});","import { Vue } from '../vue'; // @vue/component\n\nexport var formValidityMixin = Vue.extend({\n computed: {\n validity: {\n // Expose validity property\n cache: false,\n\n /* istanbul ignore next */\n get: function get() {\n return this.$refs.input.validity;\n }\n },\n validationMessage: {\n // Expose validationMessage property\n cache: false,\n\n /* istanbul ignore next */\n get: function get() {\n return this.$refs.input.validationMessage;\n }\n },\n willValidate: {\n // Expose willValidate property\n cache: false,\n\n /* istanbul ignore next */\n get: function get() {\n return this.$refs.input.willValidate;\n }\n }\n },\n methods: {\n /* istanbul ignore next */\n setCustomValidity: function setCustomValidity() {\n var _this$$refs$input;\n\n // For external handler that may want a setCustomValidity(...) method\n return (_this$$refs$input = this.$refs.input).setCustomValidity.apply(_this$$refs$input, arguments);\n },\n\n /* istanbul ignore next */\n checkValidity: function checkValidity() {\n var _this$$refs$input2;\n\n // For external handler that may want a checkValidity(...) method\n return (_this$$refs$input2 = this.$refs.input).checkValidity.apply(_this$$refs$input2, arguments);\n },\n\n /* istanbul ignore next */\n reportValidity: function reportValidity() {\n var _this$$refs$input3;\n\n // For external handler that may want a reportValidity(...) method\n return (_this$$refs$input3 = this.$refs.input).reportValidity.apply(_this$$refs$input3, arguments);\n }\n }\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});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue, mergeData } from '../../vue';\nimport { NAME_INPUT_GROUP_PREPEND } from '../../constants/components';\nimport { omit } from '../../utils/object';\nimport { makePropsConfigurable } from '../../utils/props';\nimport { BInputGroupAddon, props as BInputGroupAddonProps } from './input-group-addon'; // --- Props ---\n\nexport var props = makePropsConfigurable(omit(BInputGroupAddonProps, ['append']), NAME_INPUT_GROUP_PREPEND); // --- Main component ---\n// @vue/component\n\nexport var BInputGroupPrepend = /*#__PURE__*/Vue.extend({\n name: NAME_INPUT_GROUP_PREPEND,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n // Pass all our data down to child, and set `append` to `true`\n return h(BInputGroupAddon, mergeData(data, {\n props: _objectSpread(_objectSpread({}, props), {}, {\n append: false\n })\n }), children);\n }\n});","function 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_BLUR, EVENT_NAME_CHANGE, EVENT_NAME_INPUT, EVENT_NAME_UPDATE, HOOK_EVENT_NAME_BEFORE_DESTROY } from '../constants/events';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_BOOLEAN_STRING, PROP_TYPE_FUNCTION, PROP_TYPE_NUMBER_STRING, PROP_TYPE_STRING } from '../constants/props';\nimport { attemptBlur, attemptFocus } from '../utils/dom';\nimport { stopEvent } from '../utils/events';\nimport { mathMax } from '../utils/math';\nimport { makeModelMixin } from '../utils/model';\nimport { toInteger, toFloat } from '../utils/number';\nimport { sortKeys } from '../utils/object';\nimport { hasPropFunction, makeProp, makePropsConfigurable } from '../utils/props';\nimport { toString } from '../utils/string'; // --- Constants ---\n\nvar _makeModelMixin = makeModelMixin('value', {\n type: PROP_TYPE_NUMBER_STRING,\n defaultValue: '',\n event: EVENT_NAME_UPDATE\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 = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, modelProps), {}, {\n ariaInvalid: makeProp(PROP_TYPE_BOOLEAN_STRING, false),\n autocomplete: makeProp(PROP_TYPE_STRING),\n // Debounce timeout (in ms). Not applicable with `lazy` prop\n debounce: makeProp(PROP_TYPE_NUMBER_STRING, 0),\n formatter: makeProp(PROP_TYPE_FUNCTION),\n // Only update the `v-model` on blur/change events\n lazy: makeProp(PROP_TYPE_BOOLEAN, false),\n lazyFormatter: makeProp(PROP_TYPE_BOOLEAN, false),\n number: makeProp(PROP_TYPE_BOOLEAN, false),\n placeholder: makeProp(PROP_TYPE_STRING),\n plaintext: makeProp(PROP_TYPE_BOOLEAN, false),\n readonly: makeProp(PROP_TYPE_BOOLEAN, false),\n trim: makeProp(PROP_TYPE_BOOLEAN, false)\n})), 'formTextControls'); // --- Mixin ---\n// @vue/component\n\nexport var formTextMixin = Vue.extend({\n mixins: [modelMixin],\n props: props,\n data: function data() {\n var value = this[MODEL_PROP_NAME];\n return {\n localValue: toString(value),\n vModelValue: this.modifyValue(value)\n };\n },\n computed: {\n computedClass: function computedClass() {\n var plaintext = this.plaintext,\n type = this.type;\n var isRange = type === 'range';\n var isColor = type === 'color';\n return [{\n // Range input needs class `custom-range`\n 'custom-range': isRange,\n // `plaintext` not supported by `type=\"range\"` or `type=\"color\"`\n 'form-control-plaintext': plaintext && !isRange && !isColor,\n // `form-control` not used by `type=\"range\"` or `plaintext`\n // Always used by `type=\"color\"`\n 'form-control': isColor || !plaintext && !isRange\n }, this.sizeFormClass, this.stateClass];\n },\n computedDebounce: function computedDebounce() {\n // Ensure we have a positive number equal to or greater than 0\n return mathMax(toInteger(this.debounce, 0), 0);\n },\n hasFormatter: function hasFormatter() {\n return hasPropFunction(this.formatter);\n }\n },\n watch: _defineProperty({}, MODEL_PROP_NAME, function (newValue) {\n var stringifyValue = toString(newValue);\n var modifiedValue = this.modifyValue(newValue);\n\n if (stringifyValue !== this.localValue || modifiedValue !== this.vModelValue) {\n // Clear any pending debounce timeout, as we are overwriting the user input\n this.clearDebounce(); // Update the local values\n\n this.localValue = stringifyValue;\n this.vModelValue = modifiedValue;\n }\n }),\n created: function created() {\n // Create private non-reactive props\n this.$_inputDebounceTimer = null;\n },\n mounted: function mounted() {\n // Set up destroy handler\n this.$on(HOOK_EVENT_NAME_BEFORE_DESTROY, this.clearDebounce);\n },\n beforeDestroy: function beforeDestroy() {\n this.clearDebounce();\n },\n methods: {\n clearDebounce: function clearDebounce() {\n clearTimeout(this.$_inputDebounceTimer);\n this.$_inputDebounceTimer = null;\n },\n formatValue: function formatValue(value, event) {\n var force = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n value = toString(value);\n\n if (this.hasFormatter && (!this.lazyFormatter || force)) {\n value = this.formatter(value, event);\n }\n\n return value;\n },\n modifyValue: function modifyValue(value) {\n value = toString(value); // Emulate `.trim` modifier behaviour\n\n if (this.trim) {\n value = value.trim();\n } // Emulate `.number` modifier behaviour\n\n\n if (this.number) {\n value = toFloat(value, value);\n }\n\n return value;\n },\n updateValue: function updateValue(value) {\n var _this = this;\n\n var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var lazy = this.lazy;\n\n if (lazy && !force) {\n return;\n } // Make sure to always clear the debounce when `updateValue()`\n // is called, even when the v-model hasn't changed\n\n\n this.clearDebounce(); // Define the shared update logic in a method to be able to use\n // it for immediate and debounced value changes\n\n var doUpdate = function doUpdate() {\n value = _this.modifyValue(value);\n\n if (value !== _this.vModelValue) {\n _this.vModelValue = value;\n\n _this.$emit(MODEL_EVENT_NAME, value);\n } else if (_this.hasFormatter) {\n // When the `vModelValue` hasn't changed but the actual input value\n // is out of sync, make sure to change it to the given one\n // Usually caused by browser autocomplete and how it triggers the\n // change or input event, or depending on the formatter function\n // https://github.com/bootstrap-vue/bootstrap-vue/issues/2657\n // https://github.com/bootstrap-vue/bootstrap-vue/issues/3498\n\n /* istanbul ignore next: hard to test */\n var $input = _this.$refs.input;\n /* istanbul ignore if: hard to test out of sync value */\n\n if ($input && value !== $input.value) {\n $input.value = value;\n }\n }\n }; // Only debounce the value update when a value greater than `0`\n // is set and we are not in lazy mode or this is a forced update\n\n\n var debounce = this.computedDebounce;\n\n if (debounce > 0 && !lazy && !force) {\n this.$_inputDebounceTimer = setTimeout(doUpdate, debounce);\n } else {\n // Immediately update the v-model\n doUpdate();\n }\n },\n onInput: function onInput(event) {\n // `event.target.composing` is set by Vue\n // https://github.com/vuejs/vue/blob/dev/src/platforms/web/runtime/directives/model.js\n // TODO: Is this needed now with the latest Vue?\n\n /* istanbul ignore if: hard to test composition events */\n if (event.target.composing) {\n return;\n }\n\n var value = event.target.value;\n var formattedValue = this.formatValue(value, event); // Exit when the `formatter` function strictly returned `false`\n // or prevented the input event\n\n /* istanbul ignore next */\n\n if (formattedValue === false || event.defaultPrevented) {\n stopEvent(event, {\n propagation: false\n });\n return;\n }\n\n this.localValue = formattedValue;\n this.updateValue(formattedValue);\n this.$emit(EVENT_NAME_INPUT, formattedValue);\n },\n onChange: function onChange(event) {\n var value = event.target.value;\n var formattedValue = this.formatValue(value, event); // Exit when the `formatter` function strictly returned `false`\n // or prevented the input event\n\n /* istanbul ignore next */\n\n if (formattedValue === false || event.defaultPrevented) {\n stopEvent(event, {\n propagation: false\n });\n return;\n }\n\n this.localValue = formattedValue;\n this.updateValue(formattedValue, true);\n this.$emit(EVENT_NAME_CHANGE, formattedValue);\n },\n onBlur: function onBlur(event) {\n // Apply the `localValue` on blur to prevent cursor jumps\n // on mobile browsers (e.g. caused by autocomplete)\n var value = event.target.value;\n var formattedValue = this.formatValue(value, event, true);\n\n if (formattedValue !== false) {\n // We need to use the modified value here to apply the\n // `.trim` and `.number` modifiers properly\n this.localValue = toString(this.modifyValue(formattedValue)); // We pass the formatted value here since the `updateValue` method\n // handles the modifiers itself\n\n this.updateValue(formattedValue, true);\n } // Emit native blur event\n\n\n this.$emit(EVENT_NAME_BLUR, event);\n },\n focus: function focus() {\n // For external handler that may want a focus method\n if (!this.disabled) {\n attemptFocus(this.$el);\n }\n },\n blur: function blur() {\n // For external handler that may want a blur method\n if (!this.disabled) {\n attemptBlur(this.$el);\n }\n }\n }\n});","import { Vue, mergeData } from '../../vue';\nimport { NAME_INPUT_GROUP_ADDON } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../constants/props';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { BInputGroupText } from './input-group-text'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n append: makeProp(PROP_TYPE_BOOLEAN, false),\n id: makeProp(PROP_TYPE_STRING),\n isText: makeProp(PROP_TYPE_BOOLEAN, false),\n tag: makeProp(PROP_TYPE_STRING, 'div')\n}, NAME_INPUT_GROUP_ADDON); // --- Main component ---\n// @vue/component\n\nexport var BInputGroupAddon = /*#__PURE__*/Vue.extend({\n name: NAME_INPUT_GROUP_ADDON,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var append = props.append;\n return h(props.tag, mergeData(data, {\n class: {\n 'input-group-append': append,\n 'input-group-prepend': !append\n },\n attrs: {\n id: props.id\n }\n }), props.isText ? [h(BInputGroupText, children)] : children);\n }\n});","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_FORM_INPUT } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_NUMBER_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { arrayIncludes } from '../../utils/array';\nimport { attemptBlur } from '../../utils/dom';\nimport { eventOn, eventOff, eventOnOff, stopEvent } from '../../utils/events';\nimport { sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { formControlMixin, props as formControlProps } from '../../mixins/form-control';\nimport { formSelectionMixin } from '../../mixins/form-selection';\nimport { formSizeMixin, props as formSizeProps } from '../../mixins/form-size';\nimport { formStateMixin, props as formStateProps } from '../../mixins/form-state';\nimport { formTextMixin, props as formTextProps } from '../../mixins/form-text';\nimport { formValidityMixin } from '../../mixins/form-validity';\nimport { idMixin, props as idProps } from '../../mixins/id';\nimport { listenersMixin } from '../../mixins/listeners'; // --- Constants ---\n// Valid supported input types\n\nvar TYPES = ['text', 'password', 'email', 'number', 'url', 'tel', 'search', 'range', 'color', 'date', 'time', 'datetime', 'datetime-local', 'month', 'week']; // --- Props ---\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, idProps), formControlProps), formSizeProps), formStateProps), formTextProps), {}, {\n list: makeProp(PROP_TYPE_STRING),\n max: makeProp(PROP_TYPE_NUMBER_STRING),\n min: makeProp(PROP_TYPE_NUMBER_STRING),\n // Disable mousewheel to prevent wheel from changing values (i.e. number/date)\n noWheel: makeProp(PROP_TYPE_BOOLEAN, false),\n step: makeProp(PROP_TYPE_NUMBER_STRING),\n type: makeProp(PROP_TYPE_STRING, 'text', function (type) {\n return arrayIncludes(TYPES, type);\n })\n})), NAME_FORM_INPUT); // --- Main component ---\n// @vue/component\n\nexport var BFormInput = /*#__PURE__*/Vue.extend({\n name: NAME_FORM_INPUT,\n // Mixin order is important!\n mixins: [listenersMixin, idMixin, formControlMixin, formSizeMixin, formStateMixin, formTextMixin, formSelectionMixin, formValidityMixin],\n props: props,\n computed: {\n localType: function localType() {\n // We only allow certain types\n var type = this.type;\n return arrayIncludes(TYPES, type) ? type : 'text';\n },\n computedAttrs: function computedAttrs() {\n var type = this.localType,\n name = this.name,\n form = this.form,\n disabled = this.disabled,\n placeholder = this.placeholder,\n required = this.required,\n min = this.min,\n max = this.max,\n step = this.step;\n return {\n id: this.safeId(),\n name: name,\n form: form,\n type: type,\n disabled: disabled,\n placeholder: placeholder,\n required: required,\n autocomplete: this.autocomplete || null,\n readonly: this.readonly || this.plaintext,\n min: min,\n max: max,\n step: step,\n list: type !== 'password' ? this.list : null,\n 'aria-required': required ? 'true' : null,\n 'aria-invalid': this.computedAriaInvalid\n };\n },\n computedListeners: function computedListeners() {\n return _objectSpread(_objectSpread({}, this.bvListeners), {}, {\n input: this.onInput,\n change: this.onChange,\n blur: this.onBlur\n });\n }\n },\n watch: {\n noWheel: function noWheel(newValue) {\n this.setWheelStopper(newValue);\n }\n },\n mounted: function mounted() {\n this.setWheelStopper(this.noWheel);\n },\n\n /* istanbul ignore next */\n deactivated: function deactivated() {\n // Turn off listeners when keep-alive component deactivated\n\n /* istanbul ignore next */\n this.setWheelStopper(false);\n },\n\n /* istanbul ignore next */\n activated: function activated() {\n // Turn on listeners (if no-wheel) when keep-alive component activated\n\n /* istanbul ignore next */\n this.setWheelStopper(this.noWheel);\n },\n beforeDestroy: function beforeDestroy() {\n /* istanbul ignore next */\n this.setWheelStopper(false);\n },\n methods: {\n setWheelStopper: function setWheelStopper(on) {\n var input = this.$el; // We use native events, so that we don't interfere with propagation\n\n eventOnOff(on, input, 'focus', this.onWheelFocus);\n eventOnOff(on, input, 'blur', this.onWheelBlur);\n\n if (!on) {\n eventOff(document, 'wheel', this.stopWheel);\n }\n },\n onWheelFocus: function onWheelFocus() {\n eventOn(document, 'wheel', this.stopWheel);\n },\n onWheelBlur: function onWheelBlur() {\n eventOff(document, 'wheel', this.stopWheel);\n },\n stopWheel: function stopWheel(event) {\n stopEvent(event, {\n propagation: false\n });\n attemptBlur(this.$el);\n }\n },\n render: function render(h) {\n return h('input', {\n class: this.computedClass,\n attrs: this.computedAttrs,\n domProps: {\n value: this.localValue\n },\n on: this.computedListeners,\n ref: 'input'\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, mergeData } from '../../vue';\nimport { NAME_INPUT_GROUP } from '../../constants/components';\nimport { PROP_TYPE_STRING } from '../../constants/props';\nimport { SLOT_NAME_APPEND, SLOT_NAME_DEFAULT, SLOT_NAME_PREPEND } from '../../constants/slots';\nimport { htmlOrText } from '../../utils/html';\nimport { hasNormalizedSlot, normalizeSlot } from '../../utils/normalize-slot';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { BInputGroupAppend } from './input-group-append';\nimport { BInputGroupPrepend } from './input-group-prepend';\nimport { BInputGroupText } from './input-group-text'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n append: makeProp(PROP_TYPE_STRING),\n appendHtml: makeProp(PROP_TYPE_STRING),\n id: makeProp(PROP_TYPE_STRING),\n prepend: makeProp(PROP_TYPE_STRING),\n prependHtml: makeProp(PROP_TYPE_STRING),\n size: makeProp(PROP_TYPE_STRING),\n tag: makeProp(PROP_TYPE_STRING, 'div')\n}, NAME_INPUT_GROUP); // --- Main component ---\n// @vue/component\n\nexport var BInputGroup = /*#__PURE__*/Vue.extend({\n name: NAME_INPUT_GROUP,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n slots = _ref.slots,\n scopedSlots = _ref.scopedSlots;\n var prepend = props.prepend,\n prependHtml = props.prependHtml,\n append = props.append,\n appendHtml = props.appendHtml,\n size = props.size;\n var $scopedSlots = scopedSlots || {};\n var $slots = slots();\n var slotScope = {};\n var $prepend = h();\n var hasPrependSlot = hasNormalizedSlot(SLOT_NAME_PREPEND, $scopedSlots, $slots);\n\n if (hasPrependSlot || prepend || prependHtml) {\n $prepend = h(BInputGroupPrepend, [hasPrependSlot ? normalizeSlot(SLOT_NAME_PREPEND, slotScope, $scopedSlots, $slots) : h(BInputGroupText, {\n domProps: htmlOrText(prependHtml, prepend)\n })]);\n }\n\n var $append = h();\n var hasAppendSlot = hasNormalizedSlot(SLOT_NAME_APPEND, $scopedSlots, $slots);\n\n if (hasAppendSlot || append || appendHtml) {\n $append = h(BInputGroupAppend, [hasAppendSlot ? normalizeSlot(SLOT_NAME_APPEND, slotScope, $scopedSlots, $slots) : h(BInputGroupText, {\n domProps: htmlOrText(appendHtml, append)\n })]);\n }\n\n return h(props.tag, mergeData(data, {\n staticClass: 'input-group',\n class: _defineProperty({}, \"input-group-\".concat(size), size),\n attrs: {\n id: props.id || null,\n role: 'group'\n }\n }), [$prepend, normalizeSlot(SLOT_NAME_DEFAULT, slotScope, $scopedSlots, $slots), $append]);\n }\n});","var _watch;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { COMPONENT_UID_KEY, Vue } from '../../vue';\nimport { NAME_ALERT } from '../../constants/components';\nimport { EVENT_NAME_DISMISSED, EVENT_NAME_DISMISS_COUNT_DOWN } from '../../constants/events';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_BOOLEAN_NUMBER_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { SLOT_NAME_DISMISS } from '../../constants/slots';\nimport { requestAF } from '../../utils/dom';\nimport { isBoolean, isNumeric } from '../../utils/inspect';\nimport { makeModelMixin } from '../../utils/model';\nimport { toInteger } from '../../utils/number';\nimport { sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { BButtonClose } from '../button/button-close';\nimport { BVTransition } from '../transition/bv-transition'; // --- Constants ---\n\nvar _makeModelMixin = makeModelMixin('show', {\n type: PROP_TYPE_BOOLEAN_NUMBER_STRING,\n defaultValue: false\n}),\n modelMixin = _makeModelMixin.mixin,\n modelProps = _makeModelMixin.props,\n MODEL_PROP_NAME = _makeModelMixin.prop,\n MODEL_EVENT_NAME = _makeModelMixin.event; // --- Helper methods ---\n// Convert `show` value to a number\n\n\nvar parseCountDown = function parseCountDown(show) {\n if (show === '' || isBoolean(show)) {\n return 0;\n }\n\n show = toInteger(show, 0);\n return show > 0 ? show : 0;\n}; // Convert `show` value to a boolean\n\n\nvar parseShow = function parseShow(show) {\n if (show === '' || show === true) {\n return true;\n }\n\n if (toInteger(show, 0) < 1) {\n // Boolean will always return false for the above comparison\n return false;\n }\n\n return !!show;\n}; // --- Props ---\n\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, modelProps), {}, {\n dismissLabel: makeProp(PROP_TYPE_STRING, 'Close'),\n dismissible: makeProp(PROP_TYPE_BOOLEAN, false),\n fade: makeProp(PROP_TYPE_BOOLEAN, false),\n variant: makeProp(PROP_TYPE_STRING, 'info')\n})), NAME_ALERT); // --- Main component ---\n// @vue/component\n\nexport var BAlert = /*#__PURE__*/Vue.extend({\n name: NAME_ALERT,\n mixins: [modelMixin, normalizeSlotMixin],\n props: props,\n data: function data() {\n return {\n countDown: 0,\n // If initially shown, we need to set these for SSR\n localShow: parseShow(this[MODEL_PROP_NAME])\n };\n },\n watch: (_watch = {}, _defineProperty(_watch, MODEL_PROP_NAME, function (newValue) {\n this.countDown = parseCountDown(newValue);\n this.localShow = parseShow(newValue);\n }), _defineProperty(_watch, \"countDown\", function countDown(newValue) {\n var _this = this;\n\n this.clearCountDownInterval();\n var show = this[MODEL_PROP_NAME]; // Ignore if `show` transitions to a boolean value\n\n if (isNumeric(show)) {\n this.$emit(EVENT_NAME_DISMISS_COUNT_DOWN, newValue); // Update the v-model if needed\n\n if (show !== newValue) {\n this.$emit(MODEL_EVENT_NAME, newValue);\n }\n\n if (newValue > 0) {\n this.localShow = true;\n this.$_countDownTimeout = setTimeout(function () {\n _this.countDown--;\n }, 1000);\n } else {\n // Slightly delay the hide to allow any UI updates\n this.$nextTick(function () {\n requestAF(function () {\n _this.localShow = false;\n });\n });\n }\n }\n }), _defineProperty(_watch, \"localShow\", function localShow(newValue) {\n var show = this[MODEL_PROP_NAME]; // Only emit dismissed events for dismissible or auto-dismissing alerts\n\n if (!newValue && (this.dismissible || isNumeric(show))) {\n this.$emit(EVENT_NAME_DISMISSED);\n } // Only emit booleans if we weren't passed a number via v-model\n\n\n if (!isNumeric(show) && show !== newValue) {\n this.$emit(MODEL_EVENT_NAME, newValue);\n }\n }), _watch),\n created: function created() {\n // Create private non-reactive props\n this.$_filterTimer = null;\n var show = this[MODEL_PROP_NAME];\n this.countDown = parseCountDown(show);\n this.localShow = parseShow(show);\n },\n beforeDestroy: function beforeDestroy() {\n this.clearCountDownInterval();\n },\n methods: {\n dismiss: function dismiss() {\n this.clearCountDownInterval();\n this.countDown = 0;\n this.localShow = false;\n },\n clearCountDownInterval: function clearCountDownInterval() {\n clearTimeout(this.$_countDownTimeout);\n this.$_countDownTimeout = null;\n }\n },\n render: function render(h) {\n var $alert = h();\n\n if (this.localShow) {\n var dismissible = this.dismissible,\n variant = this.variant;\n var $dismissButton = h();\n\n if (dismissible) {\n // Add dismiss button\n $dismissButton = h(BButtonClose, {\n attrs: {\n 'aria-label': this.dismissLabel\n },\n on: {\n click: this.dismiss\n }\n }, [this.normalizeSlot(SLOT_NAME_DISMISS)]);\n }\n\n $alert = h('div', {\n staticClass: 'alert',\n class: _defineProperty({\n 'alert-dismissible': dismissible\n }, \"alert-\".concat(variant), variant),\n attrs: {\n role: 'alert',\n 'aria-live': 'polite',\n 'aria-atomic': true\n },\n key: this[COMPONENT_UID_KEY]\n }, [$dismissButton, this.normalizeSlot()]);\n }\n\n return h(BVTransition, {\n props: {\n noFade: !this.fade\n }\n }, [$alert]);\n }\n});","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('b-col',{attrs:{\"md\":\"12\"}},[_c('home-live')],1),_c('b-col',{staticClass:\"mt-2\",attrs:{\"md\":\"12\"}},[_c('live-grid')],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('h2',{staticClass:\"text-white mt-5\"},[_vm._v(\"Parrilla de Canales\")]),_c('div',{staticClass:\"ecoxmmerce-searchbar mt-1\"},[_c('b-row',[_c('b-col',{attrs:{\"cols\":\"12\"}},[_c('b-input-group',{staticClass:\"input-group-merge\"},[_c('b-form-input',{staticClass:\"search-product text-white\",attrs:{\"placeholder\":\"Buscar Canal...\"},on:{\"input\":_vm.filterTable},model:{value:(_vm.filter),callback:function ($$v) {_vm.filter=$$v},expression:\"filter\"}}),_c('b-input-group-append',{attrs:{\"is-text\":\"\"}},[_c('feather-icon',{staticClass:\"text-muted\",attrs:{\"icon\":\"SearchIcon\"}})],1)],1)],1)],1)],1),_c('section',{staticClass:\"list-view\"},[_c('b-table',{attrs:{\"items\":_vm.filterChannels,\"fields\":_vm.fields,\"dark\":false,\"responsive\":\"\",\"no-border-collapse\":false,\"hover\":\"\"},scopedSlots:_vm._u([{key:\"cell(icon)\",fn:function(data){return [_c('b-link',{attrs:{\"to\":{\n name: 'canal-play',\n params: { id: data.item.idcanal }\n }}},[_c('b-img',{staticClass:\"d-inline-block img-live\",attrs:{\"src\":data.item.path,\"alt\":\"Channel\",\"center\":\"\",\"rounded\":\"\"}})],1)]}},{key:\"cell(description)\",fn:function(data){return [_c('b-link',{attrs:{\"to\":{\n name: 'canal-play',\n params: { id: data.item.idcanal }\n }}},[_c('h4',{staticClass:\"text-warning\"},[_vm._v(_vm._s(data.item.nombre))]),(data.item.categoria)?_c('h5',{staticClass:\"text-success\"},[_vm._v(\" \"+_vm._s(data.item.categoria.categoria)+\" \")]):_vm._e(),_c('p',{staticClass:\"text-white text-justify\"},[_vm._v(\" \"+_vm._s(data.item.detalle)+\" \")])])]}}])})],1),_c('div',{staticClass:\"row\"},[_c('b-alert',{attrs:{\"variant\":\"warning\",\"show\":_vm.show}},[_c('div',{staticClass:\"alert-body\"},[(!_vm.working)?_c('span',[_c('feather-icon',{staticClass:\"mr-50\",attrs:{\"icon\":\"InfoIcon\"}}),_vm._v(\" Ningún contenido para mostrar    \"),_c('strong',[_c('b-link',{staticClass:\"text-warning\",on:{\"click\":function($event){return _vm.$router.go(-1)}}},[_vm._v(\" Volver \")])],1)],1):_c('span',[_c('b-spinner',{attrs:{\"small\":\"\"}}),_vm._v(\" Procesando... Espera un momento por favor. \")],1)])])],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LiveGrid.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LiveGrid.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./LiveGrid.vue?vue&type=template&id=6730c26e&scoped=true\"\nimport script from \"./LiveGrid.vue?vue&type=script&lang=js\"\nexport * from \"./LiveGrid.vue?vue&type=script&lang=js\"\nimport style0 from \"./LiveGrid.vue?vue&type=style&index=0&id=6730c26e&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6730c26e\",\n null\n \n)\n\nexport default component.exports","\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Live.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Live.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Live.vue?vue&type=template&id=5a5bc73e\"\nimport script from \"./Live.vue?vue&type=script&lang=js\"\nexport * from \"./Live.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","/*\n * Consistent and stable sort function across JavaScript platforms\n *\n * Inconsistent sorts can cause SSR problems between client and server\n * such as in if sortBy is applied to the data on server side render.\n * Chrome and V8 native sorts are inconsistent/unstable\n *\n * This function uses native sort with fallback to index compare when the a and b\n * compare returns 0\n *\n * Algorithm based on:\n * https://stackoverflow.com/questions/1427608/fast-stable-sorting-algorithm-implementation-in-javascript/45422645#45422645\n *\n * @param {array} array to sort\n * @param {function} sort compare function\n * @return {array}\n */\nexport var stableSort = function stableSort(array, compareFn) {\n // Using `.bind(compareFn)` on the wrapped anonymous function improves\n // performance by avoiding the function call setup. We don't use an arrow\n // function here as it binds `this` to the `stableSort` context rather than\n // the `compareFn` context, which wouldn't give us the performance increase.\n return array.map(function (a, index) {\n return [index, a];\n }).sort(function (a, b) {\n return this(a[1], b[1]) || a[0] - b[0];\n }.bind(compareFn)).map(function (e) {\n return e[1];\n });\n};","import { Vue } from '../vue';\nimport { PROP_TYPE_STRING } from '../constants/props';\nimport { makeProp, makePropsConfigurable } from '../utils/props'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n size: makeProp(PROP_TYPE_STRING)\n}, 'formControls'); // --- Mixin ---\n// @vue/component\n\nexport var formSizeMixin = Vue.extend({\n props: props,\n computed: {\n sizeFormClass: function sizeFormClass() {\n return [this.size ? \"form-control-\".concat(this.size) : null];\n }\n }\n});","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LiveGrid.vue?vue&type=style&index=0&id=6730c26e&prod&lang=scss&scoped=true\"","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue, mergeData } from '../../vue';\nimport { NAME_INPUT_GROUP_APPEND } from '../../constants/components';\nimport { omit } from '../../utils/object';\nimport { makePropsConfigurable } from '../../utils/props';\nimport { BInputGroupAddon, props as BInputGroupAddonProps } from './input-group-addon'; // --- Props ---\n\nexport var props = makePropsConfigurable(omit(BInputGroupAddonProps, ['append']), NAME_INPUT_GROUP_APPEND); // --- Main component ---\n// @vue/component\n\nexport var BInputGroupAppend = /*#__PURE__*/Vue.extend({\n name: NAME_INPUT_GROUP_APPEND,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n // Pass all our data down to child, and set `append` to `true`\n return h(BInputGroupAddon, mergeData(data, {\n props: _objectSpread(_objectSpread({}, props), {}, {\n append: true\n })\n }), children);\n }\n});","import { Vue, mergeData } from '../../vue';\nimport { NAME_INPUT_GROUP_TEXT } from '../../constants/components';\nimport { PROP_TYPE_STRING } from '../../constants/props';\nimport { makeProp, makePropsConfigurable } from '../../utils/props'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n tag: makeProp(PROP_TYPE_STRING, 'div')\n}, NAME_INPUT_GROUP_TEXT); // --- Main component ---\n// @vue/component\n\nexport var BInputGroupText = /*#__PURE__*/Vue.extend({\n name: NAME_INPUT_GROUP_TEXT,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n return h(props.tag, mergeData(data, {\n staticClass: 'input-group-text'\n }), children);\n }\n});","/* Form control contextual state class computation\n *\n * Returned class is either 'is-valid' or 'is-invalid' based on the 'state' prop\n * state can be one of five values:\n * - true for is-valid\n * - false for is-invalid\n * - null for no contextual state\n */\nimport { Vue } from '../vue';\nimport { PROP_TYPE_BOOLEAN } from '../constants/props';\nimport { isBoolean } from '../utils/inspect';\nimport { makeProp, makePropsConfigurable } from '../utils/props'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n // Tri-state prop: true, false, null (or undefined)\n state: makeProp(PROP_TYPE_BOOLEAN, null)\n}, 'formState'); // --- Mixin ---\n// @vue/component\n\nexport var formStateMixin = Vue.extend({\n props: props,\n computed: {\n computedState: function computedState() {\n // If not a boolean, ensure that value is null\n return isBoolean(this.state) ? this.state : null;\n },\n stateClass: function stateClass() {\n var state = this.computedState;\n return state === true ? 'is-valid' : state === false ? 'is-invalid' : null;\n },\n computedAriaInvalid: function computedAriaInvalid() {\n var ariaInvalid = this.ariaInvalid;\n\n if (ariaInvalid === true || ariaInvalid === 'true' || ariaInvalid === '') {\n return 'true';\n }\n\n return this.computedState === false ? 'true' : ariaInvalid;\n }\n }\n});","import { Vue, mergeData } from '../../vue';\nimport { NAME_CARD_TEXT } from '../../constants/components';\nimport { PROP_TYPE_STRING } from '../../constants/props';\nimport { makeProp, makePropsConfigurable } from '../../utils/props'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n textTag: makeProp(PROP_TYPE_STRING, 'p')\n}, NAME_CARD_TEXT); // --- Main component ---\n// @vue/component\n\nexport var BCardText = /*#__PURE__*/Vue.extend({\n name: NAME_CARD_TEXT,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n return h(props.textTag, mergeData(data, {\n staticClass: 'card-text'\n }), children);\n }\n});","import { Vue } from '../vue';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../constants/props';\nimport { attemptFocus, isVisible, matches, requestAF, select } from '../utils/dom';\nimport { makeProp, makePropsConfigurable } from '../utils/props'; // --- Constants ---\n\nvar SELECTOR = 'input, textarea, select'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n autofocus: makeProp(PROP_TYPE_BOOLEAN, false),\n disabled: makeProp(PROP_TYPE_BOOLEAN, false),\n form: makeProp(PROP_TYPE_STRING),\n id: makeProp(PROP_TYPE_STRING),\n name: makeProp(PROP_TYPE_STRING),\n required: makeProp(PROP_TYPE_BOOLEAN, false)\n}, 'formControls'); // --- Mixin ---\n// @vue/component\n\nexport var formControlMixin = Vue.extend({\n props: props,\n mounted: function mounted() {\n this.handleAutofocus();\n },\n\n /* istanbul ignore next */\n activated: function activated() {\n this.handleAutofocus();\n },\n methods: {\n handleAutofocus: function handleAutofocus() {\n var _this = this;\n\n this.$nextTick(function () {\n requestAF(function () {\n var el = _this.$el;\n\n if (_this.autofocus && isVisible(el)) {\n if (!matches(el, SELECTOR)) {\n el = select(SELECTOR, el);\n }\n\n attemptFocus(el);\n }\n });\n });\n }\n }\n});"],"sourceRoot":""}