{"version":3,"sources":["webpack:///./src/components/CustomLoader.vue?d02f","webpack:///./node_modules/core-js/internals/same-value.js","webpack:///./node_modules/bootstrap-vue/esm/components/button-group/button-group.js","webpack:///./src/components/CustomLoader.vue?02d8","webpack:///src/components/CustomLoader.vue","webpack:///./src/components/CustomLoader.vue?434a","webpack:///./src/components/CustomLoader.vue","webpack:///./src/assets/images/icons/clearFilter.svg","webpack:///./src/components/CustomTable.vue?9920","webpack:///./src/components/CustomTable.vue?3cab","webpack:///./src/components/CustomTable.vue","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/fuse.js/dist/fuse.esm.js","webpack:///src/components/CustomTable.vue","webpack:///./node_modules/core-js/modules/es.string.search.js","webpack:///./node_modules/bootstrap-vue/esm/utils/stable-sort.js","webpack:///./node_modules/core-js/modules/es.string.ends-with.js","webpack:///./src/components/CustomTable.vue?4258","webpack:///./node_modules/core-js/modules/es.array.splice.js","webpack:///./src/components/CustomTable.vue?9f58"],"names":["module","exports","Object","is","x","y","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","obj","value","configurable","writable","props","ariaRole","size","tag","vertical","BButtonGroup","extend","name","functional","render","h","_ref","data","children","class","concat","attrs","role","_vm","this","_h","$createElement","_c","_self","staticClass","staticStyle","_e","_t","staticRenderFns","component","showLoader","on","reloadData","clearFilters","ref","getTableName","tableFilters","filterTable","tablePerPage","tableCurrentPage","showItems","computedFields","rowClass","onFiltered","scopedSlots","_u","fn","scope","field","permissions","style","getMinWidth","minWidth","maxWidth","_v","_s","label","filterType","callLoadData","$event","focus","model","filters","column","callback","$$v","$set","expression","currentLocale","modelConfig","popoverOptions","input","onDatePickerClose","onDateInput","inputValue","inputEvents","_g","start","filterParams","filterParamsName","reduce","selectedOption","apiUrl","indeterminate","selectAllRows","selectAll","$t","proxy","item","index","showEditing","editable","editableType","inputChanged","enteredText","selectChanged","selectedItem","formatter","formatterItem","selectedRows","indexOf","selectionId","themeSkin","getItem","pagination","total_items","per_page","current_page","pageLengths","changePerPage","loadingActive","hasListenerMixin","methods","hasListener","$listeners","$events","_events","LIGHT","DARK","variant","BTr","mixins","listeners","provide","bvTableTr","inject","bvTableRowGroup","default","inheritAttrs","computed","inTbody","isTbody","inThead","isThead","inTfoot","isTfoot","isDark","isStacked","isResponsive","isStickyHeader","hasStickyHeader","tableVariant","headVariant","footVariant","isRowDark","trClasses","trAttrs","bvAttrs","bvListeners","normalizeSlot","bottomRowMixin","renderBottomRow","fields","stacked","tbodyTrClass","tbodyTrAttr","hasNormalizedSlot","columns","colspan","rowspan","stackedHeading","stickyColumn","BTd","isStackedCell","isStickyColumn","rowVariant","computedColspan","computedRowspan","cellClasses","cellAttrs","headOrFoot","$content","MODEL_PROP_NAME_BUSY","MODEL_EVENT_NAME_BUSY","busyMixin","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","result","EVENT_FILTER","row","ignoreFields","includeFields","fieldsObj","undefined","formattedRow","filterByFormatted","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","created","_this2","$nextTick","Boolean","beforeDestroy","clearTimeout","_this3","regExp","pattern","replace","RegExp","lastIndex","computedFieldsObj","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","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","selectedLastRow","isSelectable","hasSelectableRowClick","supportsSelectableRows","selectableHasSelection","some","selectableIsMultiSelect","selectableTableClasses","selectableTableAttrs","equal","setSelectionHandlers","_selectedRows","idx","beforeMount","selectRow","isRowSelected","selectedLastClicked","unselectRow","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","get","bb","localeCompare","MODEL_PROP_NAME_SORT_BY","MODEL_EVENT_NAME_SORT_BY","MODEL_PROP_NAME_SORT_DESC","MODEL_EVENT_NAME_SORT_DESC","SORT_DIRECTION_ASC","SORT_DIRECTION_DESC","SORT_DIRECTION_LAST","SORT_DIRECTIONS","labelSortAsc","labelSortClear","labelSortDesc","noFooterSorting","noLocalSorting","noSortReset","numeric","sortingMixin","localSorting","isSortable","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","tbodyTransitionHandlers","tbodyTransitionProps","BTbody","isTransitionGroup","tbodyAttrs","tbodyProps","nativeOn","TABLE_TAG_NAMES","el","disabled","tagName","labelFor","document","sel","trim","containsNode","BTh","extends","detailsTdClass","tbodyRowMixin","getTdValues","tdValue","getThValues","thValue","getFormattedValue","toggleDetailsFactory","hasDetailsSlot","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","refInFor","detailsScope","$details","userDetailsTrClasses","userDetailsTrAttrs","getCellSlotName","tbodyClass","tbodyMixin","getTbodyTrs","$refs","tbody","$el","trs","tr","getTbodyTrIndex","onTbodyRowKeydown","keyCode","tabIndex","onTBodyRowClicked","shift","onTbodyRowMiddleMouseRowClicked","which","onTbodyRowContextmenu","onTbodyRowDblClicked","renderTopRow","$busy","cache","defaultSlotName","lowercaseSlotName","toLowerCase","handlers","auxclick","contextmenu","dblclick","click","keydown","$tbody","$props","BTfoot","tfootClasses","tfootAttrs","footClone","footRowVariant","tfootClass","tfootTrClass","tfootMixin","renderTFootCustom","BThead","theadClasses","theadAttrs","getHeadSlotName","getFootSlotName","headRowVariant","theadClass","theadTrClass","theadMixin","fieldClasses","thClass","headClicked","hasHeadClickListener","noop","makeCell","labelHtml","ariaLabel","headerTitle","sortAttrs","sortClass","sortLabel","thStyle","abbr","headerAbbr","title","slotNames","$srLabel","$cells","$trs","topRowMixin","BTable","getTag","INFINITY","baseToString","isString","isNumber","isBoolean","isObjectLike","isObject","isDefined","isBlank","INCORRECT_INDEX_TYPE","LOGICAL_SEARCH_INVALID_QUERY_FOR_KEY","PATTERN_LENGTH_TOO_LARGE","max","MISSING_KEY_PROPERTY","INVALID_KEY_WEIGHT_VALUE","hasOwn","hasOwnProperty","KeyStore","_keys","_keyMap","totalWeight","createKey","weight","keyId","JSON","stringify","path","src","getFn","createKeyPath","createKeyId","Error","split","list","deepGet","MatchOptions","includeMatches","findAllMatches","minMatchCharLength","BasicOptions","isCaseSensitive","includeScore","shouldSort","sortFn","score","FuzzyOptions","location","threshold","distance","AdvancedOptions","useExtendedSearch","ignoreLocation","ignoreFieldNorm","fieldNormWeight","Config","SPACE","norm","mantissa","Map","m","Math","pow","numTokens","match","has","parseFloat","round","set","clear","FuseIndex","isCreated","setIndexRecords","docs","records","_keysMap","doc","docIndex","_addString","_addObject","splice","record","$","keyIndex","subRecords","stack","nestedArrIndex","pop","subRecord","createIndex","myIndex","setKeys","setSources","create","parseIndex","computeScore$1","errors","currentLocation","expectedLocation","accuracy","proximity","abs","convertMaskToIndices","matchmask","indices","end","MAX_BITS","search","text","patternAlphabet","patternLen","textLen","min","currentThreshold","bestLocation","computeMatches","matchMask","lastBitArr","finalScore","binMax","mask","binMin","binMid","floor","finish","bitArr","j","charMatch","charAt","isMatch","createPatternAlphabet","char","BitapSearch","options","chunks","addChunk","startIndex","alphabet","remainder","substr","allIndices","totalScore","hasMatches","BaseMatch","getMatch","multiRegex","singleRegex","exp","matches","ExactMatch","super","InverseExactMatch","PrefixExactMatch","startsWith","InversePrefixExactMatch","SuffixExactMatch","endsWith","InverseSuffixExactMatch","FuzzyMatch","_bitapSearch","searchIn","IncludeMatch","searchers","searchersLen","SPACE_RE","OR_TOKEN","parseQuery","query","results","queryItem","found","searcher","token","isMultiMatch","isSingleMatch","MultiMatchSet","Set","ExtendedSearch","_","numMatches","qLen","pLen","registeredSearchers","register","args","createSearcher","searcherClass","condition","LogicalOperator","AND","OR","KeyType","PATH","PATTERN","isExpression","isPath","isLeaf","convertToExplicit","parse","auto","next","isQueryPath","node","operator","computeScore","Number","EPSILON","transformMatches","refIndex","transformScore","format","transformers","transformer","Fuse","_keyStore","setCollection","_docs","_myIndex","add","predicate","removeAt","limit","_searchStringList","_searchObjectList","_searchLogical","evaluate","_findMatches","getValueForItemAtKeyId","res","child","resultMap","expResults","version","config","customTable","addEventListener","fixRegExpWellKnownSymbolLogic","anObject","requireObjectCoercible","sameValue","regExpExec","SEARCH","nativeSearch","maybeCallNative","regexp","O","done","rx","S","previousLastIndex","stableSort","compareFn","bind","toLength","notARegExp","correctIsRegExpLogic","IS_PURE","nativeEndsWith","CORRECT_IS_REGEXP_LOGIC","MDN_POLYFILL_BUG","descriptor","proto","forced","searchString","that","endPosition","toAbsoluteIndex","toInteger","toObject","arraySpeciesCreate","createProperty","arrayMethodHasSpeciesSupport","arrayMethodUsesToLength","HAS_SPECIES_SUPPORT","USES_TO_LENGTH","ACCESSORS","0","1","MAX_SAFE_INTEGER","MAXIMUM_ALLOWED_LENGTH_EXCEEDED","deleteCount","insertCount","actualDeleteCount","A","to","actualStart","argumentsLength"],"mappings":"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","file":"js/chunk-5de15912.5ea08b60.js","sourcesContent":["export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomLoader.vue?vue&type=style&index=0&id=3e4277fd&scoped=true&lang=css&\"","// `SameValue` abstract operation\n// https://tc39.github.io/ecma262/#sec-samevalue\nmodule.exports = Object.is || function is(x, y) {\n // eslint-disable-next-line no-self-compare\n return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y;\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_BUTTON_GROUP } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../constants/props';\nimport { pick, sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { props as buttonProps } from '../button/button'; // --- Props ---\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, pick(buttonProps, ['size'])), {}, {\n ariaRole: makeProp(PROP_TYPE_STRING, 'group'),\n size: makeProp(PROP_TYPE_STRING),\n tag: makeProp(PROP_TYPE_STRING, 'div'),\n vertical: makeProp(PROP_TYPE_BOOLEAN, false)\n})), NAME_BUTTON_GROUP); // --- Main component ---\n// @vue/component\n\nexport var BButtonGroup = /*#__PURE__*/Vue.extend({\n name: NAME_BUTTON_GROUP,\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 class: _defineProperty({\n 'btn-group': !props.vertical,\n 'btn-group-vertical': props.vertical\n }, \"btn-group-\".concat(props.size), props.size),\n attrs: {\n role: props.ariaRole\n }\n }), children);\n }\n});","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(_vm.show)?_c('div',{staticClass:\"customLoader mr-10 d-flex justify-content-center align-items-center\"},[_c('div',{},[_c('div',[_c('b-img',{staticStyle:{\"height\":\"120px\",\"width\":\"120px\"},attrs:{\"src\":require(\"@/assets/images/logo/Logo.svg\")}})],1),_c('div',{staticClass:\"d-flex justify-content-center mt-2\"},[_c('b-spinner',{staticStyle:{\"height\":\"40px\",\"width\":\"40px\"}})],1)])]):_vm._e(),_vm._t(\"default\")],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomLoader.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomLoader.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./CustomLoader.vue?vue&type=template&id=3e4277fd&scoped=true&\"\nimport script from \"./CustomLoader.vue?vue&type=script&lang=js&\"\nexport * from \"./CustomLoader.vue?vue&type=script&lang=js&\"\nimport style0 from \"./CustomLoader.vue?vue&type=style&index=0&id=3e4277fd&scoped=true&lang=css&\"\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 \"3e4277fd\",\n null\n \n)\n\nexport default component.exports","module.exports = __webpack_public_path__ + \"img/clearFilter.0f42e4ef.svg\";","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"relative\"},[_c('custom-loader',{attrs:{\"show\":_vm.showLoader}},[(_vm.showTableOptions)?_c('div',{staticClass:\"py-1 d-flex justify-content-between\"},[_c('div',[_c('b-button-group',{staticStyle:{\"height\":\"38px\"}},[_c('b-button',{staticClass:\"px-1 p-0\",staticStyle:{\"border-bottom-left-radius\":\"20px\",\"border-top-left-radius\":\"20px\"},attrs:{\"variant\":\"primary\"},on:{\"click\":_vm.reloadData}},[_c('feather-icon',{staticClass:\"large-icon\",attrs:{\"icon\":\"RefreshCwIcon\"}})],1),_c('b-button',{staticClass:\"px-1 p-0\",staticStyle:{\"border-bottom-right-radius\":\"20px\",\"border-top-right-radius\":\"20px\"},attrs:{\"variant\":\"primary\"},on:{\"click\":_vm.clearFilters}},[_c('img',{staticStyle:{\"height\":\"25px\",\"margin\":\"0\"},attrs:{\"src\":require(\"@/assets/images/icons/clearFilter.svg\"),\"alt\":\"Refresh icon\"}})])],1)],1),_c('div',[_vm._t(\"buttons\")],2)]):_vm._e(),_c('b-table',{ref:'customTable_' + _vm.getTableName(),staticClass:\"customTable text-center\",staticStyle:{\"user-select\":\"none\",\"max-height\":\"100% !important\",\"height\":\"100%\"},attrs:{\"id\":_vm.getTableName(),\"thead-class\":\"header-top\",\"sticky-header\":\"\",\"show-empty\":\"\",\"select-mode\":\"single\",\"filter\":_vm.tableFilters,\"filter-function\":_vm.filterTable,\"per-page\":_vm.tablePerPage,\"current-page\":_vm.tableCurrentPage,\"items\":_vm.showItems,\"fields\":_vm.computedFields,\"tbody-tr-class\":_vm.rowClass},on:{\"filtered\":_vm.onFiltered},scopedSlots:_vm._u([{key:\"head()\",fn:function(scope){return [_c('div',{staticClass:\"d-flex justify-content-center w-100 \",staticStyle:{}},[_c('div',[_c('div',{staticClass:\"textTableHeader\",class:!scope.field.filter || !(scope.field.permissions || scope.field.permissions === '') ? 'align-top' : '',staticStyle:{\"text-transform\":\"none\",\"margin-bottom\":\"10px\",\"font-size\":\"13px\",\"height\":\"25px\"},style:(_vm.getMinWidth(scope.field.minWidth, scope.field.maxWidth))},[_vm._v(\" \"+_vm._s(scope.field.label)+\" \")]),(scope.field.filter && (scope.field.permissions || scope.field.permissions === ''))?_c('div',{staticClass:\"filter-col\"},[(scope.field.filterType === 'input')?_c('div',[_c('b-form-input',{staticClass:\"customInputFieldTable\",staticStyle:{\"height\":\"30px\"},attrs:{\"debounce\":\"300\"},on:{\"update\":_vm.callLoadData,\"focus\":function($event){_vm.focus=true}},model:{value:(_vm.filters[scope.column]),callback:function ($$v) {_vm.$set(_vm.filters, scope.column, $$v)},expression:\"filters[scope.column]\"}})],1):(scope.field.filterType === 'date')?_c('div',[_c('date-picker',{staticClass:\"relative w-100\",attrs:{\"locale\":_vm.currentLocale,\"first-day-of-week\":2,\"model-config\":_vm.modelConfig,\"popover\":_vm.popoverOptions,\"popover-direction\":\"top\",\"is-range\":\"\",\"masks\":{input: ['DD. MM. YYYY'], data: ['DD. MM. YYYY']}},on:{\"popoverDidHide\":_vm.onDatePickerClose,\"input\":_vm.onDateInput},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar inputValue = ref.inputValue;\nvar inputEvents = ref.inputEvents;\nreturn [_c('div',{staticClass:\"flex justify-center items-center\"},[_c('b-input-group',[_c('b-form-input',_vm._g({staticClass:\"not-disabled customDatePickerTable customDatePicker\",attrs:{\"value\":inputValue.start !== null ? ((inputValue.start) + \" - \" + (inputValue.end)) : '',\"disabled\":\"\"},on:{\"click\":_vm.callLoadData}},inputEvents.start))],1)],1)]}}],null,true),model:{value:(_vm.filters[scope.column]),callback:function ($$v) {_vm.$set(_vm.filters, scope.column, $$v)},expression:\"filters[scope.column]\"}})],1):(scope.field.filterType === 'select')?_c('div',[_c('v-select',{staticClass:\"floating-filter w-100\",attrs:{\"appendToBody\":\"\",\"options\":scope.field.filterParams,\"searchable\":true,\"label\":scope.field.filterParamsName,\"reduce\":scope.field.reduce},on:{\"input\":_vm.callLoadData},scopedSlots:_vm._u([{key:\"selected-option\",fn:function(selectedOption){return [_c('span',{staticClass:\"textCutSelect\"},[_vm._v(\" \"+_vm._s(selectedOption[scope.field.filterParamsName])+\" \")])]}}],null,true),model:{value:(_vm.filters[scope.column]),callback:function ($$v) {_vm.$set(_vm.filters, scope.column, $$v)},expression:\"filters[scope.column]\"}})],1):(scope.field.filterType === 'checkbox' && _vm.apiUrl === '')?_c('div',{staticClass:\"d-flex justify-content-center align-items-center\"},[_c('b-form-checkbox',{attrs:{\"variant\":\"primary\",\"indeterminate\":_vm.indeterminate},on:{\"change\":_vm.selectAllRows},model:{value:(_vm.selectAll),callback:function ($$v) {_vm.selectAll=$$v},expression:\"selectAll\"}})],1):_vm._e()]):_vm._e()])])]}},{key:\"empty\",fn:function(){return [_vm._t(\"empty\",[_c('div',[_vm._v(\" \"+_vm._s(_vm.$t('table_fields.no_data'))+\". \")])])]},proxy:true},{key:\"cell()\",fn:function(item){return [_c('div',{staticClass:\"d-flex justify-content-center column\",staticStyle:{\"font-size\":\"13px\"},attrs:{\"role\":\"item\",\"aria-rowindex\":item.index,\"id\":item.field.key}},[_vm._t(item.field.key,[(_vm.showEditing !== item.index + '-' + item.field.key || !item.field.editable)?_c('div',{style:(_vm.getMinWidth(item.field.minWidth, item.field.maxWidth))},[(item.field.formatter)?_c('div',{staticClass:\"textCut\"},[_vm._v(\" \"+_vm._s(item.field.formatter(item.item[item.field.key]))+\" \")]):(item.field.formatterItem)?_c('div',{staticClass:\"textCut\"},[_vm._v(\" \"+_vm._s(item.field.formatterItem(item.item))+\" \")]):(item.field.key === 'checkboxes')?_c('div',[(_vm.selectedRows.indexOf(item.item[_vm.selectionId]) > -1)?_c('div',{class:_vm.themeSkin === 'dark' ? 'invert' : ''},[_c('svg',{attrs:{\"xmlns\":\"http://www.w3.org/2000/svg\",\"x\":\"0px\",\"y\":\"0px\",\"width\":\"16\",\"height\":\"16\",\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M5.268,10.732c-0.976-0.976-2.559-0.976-3.536,0s-0.976,2.559,0,3.536l4.645,4.645c1.449,1.449,3.797,1.449,5.246,0L12.536,18L5.268,10.732z\",\"opacity\":\".35\"}}),_c('path',{attrs:{\"d\":\"M22.268,4.732c-0.976-0.976-2.559-0.976-3.536,0L9,14.464L12.536,18l9.732-9.732C23.244,7.291,23.244,5.708,22.268,4.732z\"}})])]):_vm._e()]):_c('span',{staticClass:\"textCut\"},[_vm._v(\" \"+_vm._s(_vm.getItem(item.item, item.field.key))+\" \")])]):_c('div',{staticStyle:{\"width\":\"90%\",\"min-width\":\"50px\",\"height\":\"25px\"}},[(!item.field.editableType || item.field.editableType === \"input\")?_c('b-form-input',{ref:'input_field_editing_' +_vm.showEditing,staticStyle:{\"height\":\"25px\"},on:{\"blur\":function($event){return _vm.inputChanged(item)}},model:{value:(_vm.enteredText),callback:function ($$v) {_vm.enteredText=$$v},expression:\"enteredText\"}}):_vm._e(),(item.field.editableType === \"select\")?_c('v-select',{staticStyle:{\"width\":\"100%\",\"height\":\"25px\",\"top\":\"-3px\"},attrs:{\"appendToBody\":\"\",\"label\":item.field.filterParamsName,\"options\":item.field.filterParams},on:{\"input\":function($event){return _vm.selectChanged(item)}},model:{value:(_vm.selectedItem),callback:function ($$v) {_vm.selectedItem=$$v},expression:\"selectedItem\"}}):_vm._e()],1)],null,item)],2)]}}],null,true)}),(_vm.pagination.total_items > _vm.pagination.per_page)?_c('b-row',[_c('b-col',{attrs:{\"cols\":\"12\",\"md\":\"6\"}},[_c('div',{staticClass:\"d-flex d-md-block justify-content-center\"},[(_vm.showItems.length > 0 && _vm.pagination)?_c('div',{staticClass:\"d-flex align-items-center\"},[_c('div',[_vm._v(\" \"+_vm._s(((_vm.pagination.current_page -1) * _vm.pagination.per_page) + 1)+\" - \"),(_vm.pagination.current_page * _vm.pagination.per_page < _vm.pagination.total_items)?_c('span',[_vm._v(\" \"+_vm._s(_vm.pagination.current_page * _vm.pagination.per_page)+\" \")]):_c('span',[_vm._v(\" \"+_vm._s(_vm.pagination.total_items)+\" \")]),_vm._v(\" \"+_vm._s(_vm.$t('pagination.of'))+\" \"+_vm._s(_vm.pagination.total_items)+\" \")]),_c('div',[_c('v-select',{staticClass:\"ml-1 pageSelect\",staticStyle:{\"width\":\"140px\"},attrs:{\"options\":_vm.pageLengths,\"clearable\":false,\"appendToBody\":\"\"},on:{\"input\":_vm.changePerPage},scopedSlots:_vm._u([{key:\"selected-option\",fn:function(ref){\nvar label = ref.label;\nreturn [_c('span',{staticClass:\"d-flex align-items-center\",staticStyle:{\"font-size\":\"12px\",\"margin-bottom\":\"10px\"}},[_c('span',[_vm._v(\" \"+_vm._s(label)+\" \"+_vm._s(_vm.$t('pagination.per_page'))+\" \")])])]}}],null,false,3403665670),model:{value:(_vm.pagination.per_page),callback:function ($$v) {_vm.$set(_vm.pagination, \"per_page\", $$v)},expression:\"pagination.per_page\"}})],1)]):_vm._e()])]),_c('b-col',{staticClass:\"d-flex justify-content-center justify-content-md-end\",attrs:{\"cols\":\"12\",\"md\":\"6\"}},[_c('b-pagination',{attrs:{\"last-number\":\"\",\"first-number\":\"\",\"pills\":\"\",\"total-rows\":_vm.pagination.total_items,\"per-page\":_vm.pagination.per_page,\"size\":\"md\",\"align\":\"center\",\"aria-controls\":_vm.getTableName(),\"disabled\":_vm.loadingActive},on:{\"input\":_vm.callLoadData},model:{value:(_vm.pagination.current_page),callback:function ($$v) {_vm.$set(_vm.pagination, \"current_page\", $$v)},expression:\"pagination.current_page\"}})],1)],1):_vm._e()],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomTable.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomTable.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./CustomTable.vue?vue&type=template&id=71d97d66&scoped=true&\"\nimport script from \"./CustomTable.vue?vue&type=script&lang=js&\"\nexport * from \"./CustomTable.vue?vue&type=script&lang=js&\"\nimport style0 from \"./CustomTable.vue?vue&type=style&index=0&lang=css&\"\nimport style1 from \"./CustomTable.vue?vue&type=style&index=1&id=71d97d66&scoped=true&lang=css&\"\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 \"71d97d66\",\n null\n \n)\n\nexport default component.exports","// 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});","/**\n * Fuse.js v6.6.2 - Lightweight fuzzy-search (http://fusejs.io)\n *\n * Copyright (c) 2022 Kiro Risk (http://kiro.me)\n * All Rights Reserved. Apache Software License 2.0\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n */\n\nfunction isArray(value) {\n return !Array.isArray\n ? getTag(value) === '[object Array]'\n : Array.isArray(value)\n}\n\n// Adapted from: https://github.com/lodash/lodash/blob/master/.internal/baseToString.js\nconst INFINITY = 1 / 0;\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value\n }\n let result = value + '';\n return result == '0' && 1 / value == -INFINITY ? '-0' : result\n}\n\nfunction toString(value) {\n return value == null ? '' : baseToString(value)\n}\n\nfunction isString(value) {\n return typeof value === 'string'\n}\n\nfunction isNumber(value) {\n return typeof value === 'number'\n}\n\n// Adapted from: https://github.com/lodash/lodash/blob/master/isBoolean.js\nfunction isBoolean(value) {\n return (\n value === true ||\n value === false ||\n (isObjectLike(value) && getTag(value) == '[object Boolean]')\n )\n}\n\nfunction isObject(value) {\n return typeof value === 'object'\n}\n\n// Checks if `value` is object-like.\nfunction isObjectLike(value) {\n return isObject(value) && value !== null\n}\n\nfunction isDefined(value) {\n return value !== undefined && value !== null\n}\n\nfunction isBlank(value) {\n return !value.trim().length\n}\n\n// Gets the `toStringTag` of `value`.\n// Adapted from: https://github.com/lodash/lodash/blob/master/.internal/getTag.js\nfunction getTag(value) {\n return value == null\n ? value === undefined\n ? '[object Undefined]'\n : '[object Null]'\n : Object.prototype.toString.call(value)\n}\n\nconst EXTENDED_SEARCH_UNAVAILABLE = 'Extended search is not available';\n\nconst INCORRECT_INDEX_TYPE = \"Incorrect 'index' type\";\n\nconst LOGICAL_SEARCH_INVALID_QUERY_FOR_KEY = (key) =>\n `Invalid value for key ${key}`;\n\nconst PATTERN_LENGTH_TOO_LARGE = (max) =>\n `Pattern length exceeds max of ${max}.`;\n\nconst MISSING_KEY_PROPERTY = (name) => `Missing ${name} property in key`;\n\nconst INVALID_KEY_WEIGHT_VALUE = (key) =>\n `Property 'weight' in key '${key}' must be a positive integer`;\n\nconst hasOwn = Object.prototype.hasOwnProperty;\n\nclass KeyStore {\n constructor(keys) {\n this._keys = [];\n this._keyMap = {};\n\n let totalWeight = 0;\n\n keys.forEach((key) => {\n let obj = createKey(key);\n\n totalWeight += obj.weight;\n\n this._keys.push(obj);\n this._keyMap[obj.id] = obj;\n\n totalWeight += obj.weight;\n });\n\n // Normalize weights so that their sum is equal to 1\n this._keys.forEach((key) => {\n key.weight /= totalWeight;\n });\n }\n get(keyId) {\n return this._keyMap[keyId]\n }\n keys() {\n return this._keys\n }\n toJSON() {\n return JSON.stringify(this._keys)\n }\n}\n\nfunction createKey(key) {\n let path = null;\n let id = null;\n let src = null;\n let weight = 1;\n let getFn = null;\n\n if (isString(key) || isArray(key)) {\n src = key;\n path = createKeyPath(key);\n id = createKeyId(key);\n } else {\n if (!hasOwn.call(key, 'name')) {\n throw new Error(MISSING_KEY_PROPERTY('name'))\n }\n\n const name = key.name;\n src = name;\n\n if (hasOwn.call(key, 'weight')) {\n weight = key.weight;\n\n if (weight <= 0) {\n throw new Error(INVALID_KEY_WEIGHT_VALUE(name))\n }\n }\n\n path = createKeyPath(name);\n id = createKeyId(name);\n getFn = key.getFn;\n }\n\n return { path, id, weight, src, getFn }\n}\n\nfunction createKeyPath(key) {\n return isArray(key) ? key : key.split('.')\n}\n\nfunction createKeyId(key) {\n return isArray(key) ? key.join('.') : key\n}\n\nfunction get(obj, path) {\n let list = [];\n let arr = false;\n\n const deepGet = (obj, path, index) => {\n if (!isDefined(obj)) {\n return\n }\n if (!path[index]) {\n // If there's no path left, we've arrived at the object we care about.\n list.push(obj);\n } else {\n let key = path[index];\n\n const value = obj[key];\n\n if (!isDefined(value)) {\n return\n }\n\n // If we're at the last value in the path, and if it's a string/number/bool,\n // add it to the list\n if (\n index === path.length - 1 &&\n (isString(value) || isNumber(value) || isBoolean(value))\n ) {\n list.push(toString(value));\n } else if (isArray(value)) {\n arr = true;\n // Search each item in the array.\n for (let i = 0, len = value.length; i < len; i += 1) {\n deepGet(value[i], path, index + 1);\n }\n } else if (path.length) {\n // An object. Recurse further.\n deepGet(value, path, index + 1);\n }\n }\n };\n\n // Backwards compatibility (since path used to be a string)\n deepGet(obj, isString(path) ? path.split('.') : path, 0);\n\n return arr ? list : list[0]\n}\n\nconst MatchOptions = {\n // Whether the matches should be included in the result set. When `true`, each record in the result\n // set will include the indices of the matched characters.\n // These can consequently be used for highlighting purposes.\n includeMatches: false,\n // When `true`, the matching function will continue to the end of a search pattern even if\n // a perfect match has already been located in the string.\n findAllMatches: false,\n // Minimum number of characters that must be matched before a result is considered a match\n minMatchCharLength: 1\n};\n\nconst BasicOptions = {\n // When `true`, the algorithm continues searching to the end of the input even if a perfect\n // match is found before the end of the same input.\n isCaseSensitive: false,\n // When true, the matching function will continue to the end of a search pattern even if\n includeScore: false,\n // List of properties that will be searched. This also supports nested properties.\n keys: [],\n // Whether to sort the result list, by score\n shouldSort: true,\n // Default sort function: sort by ascending score, ascending index\n sortFn: (a, b) =>\n a.score === b.score ? (a.idx < b.idx ? -1 : 1) : a.score < b.score ? -1 : 1\n};\n\nconst FuzzyOptions = {\n // Approximately where in the text is the pattern expected to be found?\n location: 0,\n // At what point does the match algorithm give up. A threshold of '0.0' requires a perfect match\n // (of both letters and location), a threshold of '1.0' would match anything.\n threshold: 0.6,\n // Determines how close the match must be to the fuzzy location (specified above).\n // An exact letter match which is 'distance' characters away from the fuzzy location\n // would score as a complete mismatch. A distance of '0' requires the match be at\n // the exact location specified, a threshold of '1000' would require a perfect match\n // to be within 800 characters of the fuzzy location to be found using a 0.8 threshold.\n distance: 100\n};\n\nconst AdvancedOptions = {\n // When `true`, it enables the use of unix-like search commands\n useExtendedSearch: false,\n // The get function to use when fetching an object's properties.\n // The default will search nested paths *ie foo.bar.baz*\n getFn: get,\n // When `true`, search will ignore `location` and `distance`, so it won't matter\n // where in the string the pattern appears.\n // More info: https://fusejs.io/concepts/scoring-theory.html#fuzziness-score\n ignoreLocation: false,\n // When `true`, the calculation for the relevance score (used for sorting) will\n // ignore the field-length norm.\n // More info: https://fusejs.io/concepts/scoring-theory.html#field-length-norm\n ignoreFieldNorm: false,\n // The weight to determine how much field length norm effects scoring.\n fieldNormWeight: 1\n};\n\nvar Config = {\n ...BasicOptions,\n ...MatchOptions,\n ...FuzzyOptions,\n ...AdvancedOptions\n};\n\nconst SPACE = /[^ ]+/g;\n\n// Field-length norm: the shorter the field, the higher the weight.\n// Set to 3 decimals to reduce index size.\nfunction norm(weight = 1, mantissa = 3) {\n const cache = new Map();\n const m = Math.pow(10, mantissa);\n\n return {\n get(value) {\n const numTokens = value.match(SPACE).length;\n\n if (cache.has(numTokens)) {\n return cache.get(numTokens)\n }\n\n // Default function is 1/sqrt(x), weight makes that variable\n const norm = 1 / Math.pow(numTokens, 0.5 * weight);\n\n // In place of `toFixed(mantissa)`, for faster computation\n const n = parseFloat(Math.round(norm * m) / m);\n\n cache.set(numTokens, n);\n\n return n\n },\n clear() {\n cache.clear();\n }\n }\n}\n\nclass FuseIndex {\n constructor({\n getFn = Config.getFn,\n fieldNormWeight = Config.fieldNormWeight\n } = {}) {\n this.norm = norm(fieldNormWeight, 3);\n this.getFn = getFn;\n this.isCreated = false;\n\n this.setIndexRecords();\n }\n setSources(docs = []) {\n this.docs = docs;\n }\n setIndexRecords(records = []) {\n this.records = records;\n }\n setKeys(keys = []) {\n this.keys = keys;\n this._keysMap = {};\n keys.forEach((key, idx) => {\n this._keysMap[key.id] = idx;\n });\n }\n create() {\n if (this.isCreated || !this.docs.length) {\n return\n }\n\n this.isCreated = true;\n\n // List is Array\n if (isString(this.docs[0])) {\n this.docs.forEach((doc, docIndex) => {\n this._addString(doc, docIndex);\n });\n } else {\n // List is Array\n this.docs.forEach((doc, docIndex) => {\n this._addObject(doc, docIndex);\n });\n }\n\n this.norm.clear();\n }\n // Adds a doc to the end of the index\n add(doc) {\n const idx = this.size();\n\n if (isString(doc)) {\n this._addString(doc, idx);\n } else {\n this._addObject(doc, idx);\n }\n }\n // Removes the doc at the specified index of the index\n removeAt(idx) {\n this.records.splice(idx, 1);\n\n // Change ref index of every subsquent doc\n for (let i = idx, len = this.size(); i < len; i += 1) {\n this.records[i].i -= 1;\n }\n }\n getValueForItemAtKeyId(item, keyId) {\n return item[this._keysMap[keyId]]\n }\n size() {\n return this.records.length\n }\n _addString(doc, docIndex) {\n if (!isDefined(doc) || isBlank(doc)) {\n return\n }\n\n let record = {\n v: doc,\n i: docIndex,\n n: this.norm.get(doc)\n };\n\n this.records.push(record);\n }\n _addObject(doc, docIndex) {\n let record = { i: docIndex, $: {} };\n\n // Iterate over every key (i.e, path), and fetch the value at that key\n this.keys.forEach((key, keyIndex) => {\n let value = key.getFn ? key.getFn(doc) : this.getFn(doc, key.path);\n\n if (!isDefined(value)) {\n return\n }\n\n if (isArray(value)) {\n let subRecords = [];\n const stack = [{ nestedArrIndex: -1, value }];\n\n while (stack.length) {\n const { nestedArrIndex, value } = stack.pop();\n\n if (!isDefined(value)) {\n continue\n }\n\n if (isString(value) && !isBlank(value)) {\n let subRecord = {\n v: value,\n i: nestedArrIndex,\n n: this.norm.get(value)\n };\n\n subRecords.push(subRecord);\n } else if (isArray(value)) {\n value.forEach((item, k) => {\n stack.push({\n nestedArrIndex: k,\n value: item\n });\n });\n } else ;\n }\n record.$[keyIndex] = subRecords;\n } else if (isString(value) && !isBlank(value)) {\n let subRecord = {\n v: value,\n n: this.norm.get(value)\n };\n\n record.$[keyIndex] = subRecord;\n }\n });\n\n this.records.push(record);\n }\n toJSON() {\n return {\n keys: this.keys,\n records: this.records\n }\n }\n}\n\nfunction createIndex(\n keys,\n docs,\n { getFn = Config.getFn, fieldNormWeight = Config.fieldNormWeight } = {}\n) {\n const myIndex = new FuseIndex({ getFn, fieldNormWeight });\n myIndex.setKeys(keys.map(createKey));\n myIndex.setSources(docs);\n myIndex.create();\n return myIndex\n}\n\nfunction parseIndex(\n data,\n { getFn = Config.getFn, fieldNormWeight = Config.fieldNormWeight } = {}\n) {\n const { keys, records } = data;\n const myIndex = new FuseIndex({ getFn, fieldNormWeight });\n myIndex.setKeys(keys);\n myIndex.setIndexRecords(records);\n return myIndex\n}\n\nfunction computeScore$1(\n pattern,\n {\n errors = 0,\n currentLocation = 0,\n expectedLocation = 0,\n distance = Config.distance,\n ignoreLocation = Config.ignoreLocation\n } = {}\n) {\n const accuracy = errors / pattern.length;\n\n if (ignoreLocation) {\n return accuracy\n }\n\n const proximity = Math.abs(expectedLocation - currentLocation);\n\n if (!distance) {\n // Dodge divide by zero error.\n return proximity ? 1.0 : accuracy\n }\n\n return accuracy + proximity / distance\n}\n\nfunction convertMaskToIndices(\n matchmask = [],\n minMatchCharLength = Config.minMatchCharLength\n) {\n let indices = [];\n let start = -1;\n let end = -1;\n let i = 0;\n\n for (let len = matchmask.length; i < len; i += 1) {\n let match = matchmask[i];\n if (match && start === -1) {\n start = i;\n } else if (!match && start !== -1) {\n end = i - 1;\n if (end - start + 1 >= minMatchCharLength) {\n indices.push([start, end]);\n }\n start = -1;\n }\n }\n\n // (i-1 - start) + 1 => i - start\n if (matchmask[i - 1] && i - start >= minMatchCharLength) {\n indices.push([start, i - 1]);\n }\n\n return indices\n}\n\n// Machine word size\nconst MAX_BITS = 32;\n\nfunction search(\n text,\n pattern,\n patternAlphabet,\n {\n location = Config.location,\n distance = Config.distance,\n threshold = Config.threshold,\n findAllMatches = Config.findAllMatches,\n minMatchCharLength = Config.minMatchCharLength,\n includeMatches = Config.includeMatches,\n ignoreLocation = Config.ignoreLocation\n } = {}\n) {\n if (pattern.length > MAX_BITS) {\n throw new Error(PATTERN_LENGTH_TOO_LARGE(MAX_BITS))\n }\n\n const patternLen = pattern.length;\n // Set starting location at beginning text and initialize the alphabet.\n const textLen = text.length;\n // Handle the case when location > text.length\n const expectedLocation = Math.max(0, Math.min(location, textLen));\n // Highest score beyond which we give up.\n let currentThreshold = threshold;\n // Is there a nearby exact match? (speedup)\n let bestLocation = expectedLocation;\n\n // Performance: only computer matches when the minMatchCharLength > 1\n // OR if `includeMatches` is true.\n const computeMatches = minMatchCharLength > 1 || includeMatches;\n // A mask of the matches, used for building the indices\n const matchMask = computeMatches ? Array(textLen) : [];\n\n let index;\n\n // Get all exact matches, here for speed up\n while ((index = text.indexOf(pattern, bestLocation)) > -1) {\n let score = computeScore$1(pattern, {\n currentLocation: index,\n expectedLocation,\n distance,\n ignoreLocation\n });\n\n currentThreshold = Math.min(score, currentThreshold);\n bestLocation = index + patternLen;\n\n if (computeMatches) {\n let i = 0;\n while (i < patternLen) {\n matchMask[index + i] = 1;\n i += 1;\n }\n }\n }\n\n // Reset the best location\n bestLocation = -1;\n\n let lastBitArr = [];\n let finalScore = 1;\n let binMax = patternLen + textLen;\n\n const mask = 1 << (patternLen - 1);\n\n for (let i = 0; i < patternLen; i += 1) {\n // Scan for the best match; each iteration allows for one more error.\n // Run a binary search to determine how far from the match location we can stray\n // at this error level.\n let binMin = 0;\n let binMid = binMax;\n\n while (binMin < binMid) {\n const score = computeScore$1(pattern, {\n errors: i,\n currentLocation: expectedLocation + binMid,\n expectedLocation,\n distance,\n ignoreLocation\n });\n\n if (score <= currentThreshold) {\n binMin = binMid;\n } else {\n binMax = binMid;\n }\n\n binMid = Math.floor((binMax - binMin) / 2 + binMin);\n }\n\n // Use the result from this iteration as the maximum for the next.\n binMax = binMid;\n\n let start = Math.max(1, expectedLocation - binMid + 1);\n let finish = findAllMatches\n ? textLen\n : Math.min(expectedLocation + binMid, textLen) + patternLen;\n\n // Initialize the bit array\n let bitArr = Array(finish + 2);\n\n bitArr[finish + 1] = (1 << i) - 1;\n\n for (let j = finish; j >= start; j -= 1) {\n let currentLocation = j - 1;\n let charMatch = patternAlphabet[text.charAt(currentLocation)];\n\n if (computeMatches) {\n // Speed up: quick bool to int conversion (i.e, `charMatch ? 1 : 0`)\n matchMask[currentLocation] = +!!charMatch;\n }\n\n // First pass: exact match\n bitArr[j] = ((bitArr[j + 1] << 1) | 1) & charMatch;\n\n // Subsequent passes: fuzzy match\n if (i) {\n bitArr[j] |=\n ((lastBitArr[j + 1] | lastBitArr[j]) << 1) | 1 | lastBitArr[j + 1];\n }\n\n if (bitArr[j] & mask) {\n finalScore = computeScore$1(pattern, {\n errors: i,\n currentLocation,\n expectedLocation,\n distance,\n ignoreLocation\n });\n\n // This match will almost certainly be better than any existing match.\n // But check anyway.\n if (finalScore <= currentThreshold) {\n // Indeed it is\n currentThreshold = finalScore;\n bestLocation = currentLocation;\n\n // Already passed `loc`, downhill from here on in.\n if (bestLocation <= expectedLocation) {\n break\n }\n\n // When passing `bestLocation`, don't exceed our current distance from `expectedLocation`.\n start = Math.max(1, 2 * expectedLocation - bestLocation);\n }\n }\n }\n\n // No hope for a (better) match at greater error levels.\n const score = computeScore$1(pattern, {\n errors: i + 1,\n currentLocation: expectedLocation,\n expectedLocation,\n distance,\n ignoreLocation\n });\n\n if (score > currentThreshold) {\n break\n }\n\n lastBitArr = bitArr;\n }\n\n const result = {\n isMatch: bestLocation >= 0,\n // Count exact matches (those with a score of 0) to be \"almost\" exact\n score: Math.max(0.001, finalScore)\n };\n\n if (computeMatches) {\n const indices = convertMaskToIndices(matchMask, minMatchCharLength);\n if (!indices.length) {\n result.isMatch = false;\n } else if (includeMatches) {\n result.indices = indices;\n }\n }\n\n return result\n}\n\nfunction createPatternAlphabet(pattern) {\n let mask = {};\n\n for (let i = 0, len = pattern.length; i < len; i += 1) {\n const char = pattern.charAt(i);\n mask[char] = (mask[char] || 0) | (1 << (len - i - 1));\n }\n\n return mask\n}\n\nclass BitapSearch {\n constructor(\n pattern,\n {\n location = Config.location,\n threshold = Config.threshold,\n distance = Config.distance,\n includeMatches = Config.includeMatches,\n findAllMatches = Config.findAllMatches,\n minMatchCharLength = Config.minMatchCharLength,\n isCaseSensitive = Config.isCaseSensitive,\n ignoreLocation = Config.ignoreLocation\n } = {}\n ) {\n this.options = {\n location,\n threshold,\n distance,\n includeMatches,\n findAllMatches,\n minMatchCharLength,\n isCaseSensitive,\n ignoreLocation\n };\n\n this.pattern = isCaseSensitive ? pattern : pattern.toLowerCase();\n\n this.chunks = [];\n\n if (!this.pattern.length) {\n return\n }\n\n const addChunk = (pattern, startIndex) => {\n this.chunks.push({\n pattern,\n alphabet: createPatternAlphabet(pattern),\n startIndex\n });\n };\n\n const len = this.pattern.length;\n\n if (len > MAX_BITS) {\n let i = 0;\n const remainder = len % MAX_BITS;\n const end = len - remainder;\n\n while (i < end) {\n addChunk(this.pattern.substr(i, MAX_BITS), i);\n i += MAX_BITS;\n }\n\n if (remainder) {\n const startIndex = len - MAX_BITS;\n addChunk(this.pattern.substr(startIndex), startIndex);\n }\n } else {\n addChunk(this.pattern, 0);\n }\n }\n\n searchIn(text) {\n const { isCaseSensitive, includeMatches } = this.options;\n\n if (!isCaseSensitive) {\n text = text.toLowerCase();\n }\n\n // Exact match\n if (this.pattern === text) {\n let result = {\n isMatch: true,\n score: 0\n };\n\n if (includeMatches) {\n result.indices = [[0, text.length - 1]];\n }\n\n return result\n }\n\n // Otherwise, use Bitap algorithm\n const {\n location,\n distance,\n threshold,\n findAllMatches,\n minMatchCharLength,\n ignoreLocation\n } = this.options;\n\n let allIndices = [];\n let totalScore = 0;\n let hasMatches = false;\n\n this.chunks.forEach(({ pattern, alphabet, startIndex }) => {\n const { isMatch, score, indices } = search(text, pattern, alphabet, {\n location: location + startIndex,\n distance,\n threshold,\n findAllMatches,\n minMatchCharLength,\n includeMatches,\n ignoreLocation\n });\n\n if (isMatch) {\n hasMatches = true;\n }\n\n totalScore += score;\n\n if (isMatch && indices) {\n allIndices = [...allIndices, ...indices];\n }\n });\n\n let result = {\n isMatch: hasMatches,\n score: hasMatches ? totalScore / this.chunks.length : 1\n };\n\n if (hasMatches && includeMatches) {\n result.indices = allIndices;\n }\n\n return result\n }\n}\n\nclass BaseMatch {\n constructor(pattern) {\n this.pattern = pattern;\n }\n static isMultiMatch(pattern) {\n return getMatch(pattern, this.multiRegex)\n }\n static isSingleMatch(pattern) {\n return getMatch(pattern, this.singleRegex)\n }\n search(/*text*/) {}\n}\n\nfunction getMatch(pattern, exp) {\n const matches = pattern.match(exp);\n return matches ? matches[1] : null\n}\n\n// Token: 'file\n\nclass ExactMatch extends BaseMatch {\n constructor(pattern) {\n super(pattern);\n }\n static get type() {\n return 'exact'\n }\n static get multiRegex() {\n return /^=\"(.*)\"$/\n }\n static get singleRegex() {\n return /^=(.*)$/\n }\n search(text) {\n const isMatch = text === this.pattern;\n\n return {\n isMatch,\n score: isMatch ? 0 : 1,\n indices: [0, this.pattern.length - 1]\n }\n }\n}\n\n// Token: !fire\n\nclass InverseExactMatch extends BaseMatch {\n constructor(pattern) {\n super(pattern);\n }\n static get type() {\n return 'inverse-exact'\n }\n static get multiRegex() {\n return /^!\"(.*)\"$/\n }\n static get singleRegex() {\n return /^!(.*)$/\n }\n search(text) {\n const index = text.indexOf(this.pattern);\n const isMatch = index === -1;\n\n return {\n isMatch,\n score: isMatch ? 0 : 1,\n indices: [0, text.length - 1]\n }\n }\n}\n\n// Token: ^file\n\nclass PrefixExactMatch extends BaseMatch {\n constructor(pattern) {\n super(pattern);\n }\n static get type() {\n return 'prefix-exact'\n }\n static get multiRegex() {\n return /^\\^\"(.*)\"$/\n }\n static get singleRegex() {\n return /^\\^(.*)$/\n }\n search(text) {\n const isMatch = text.startsWith(this.pattern);\n\n return {\n isMatch,\n score: isMatch ? 0 : 1,\n indices: [0, this.pattern.length - 1]\n }\n }\n}\n\n// Token: !^fire\n\nclass InversePrefixExactMatch extends BaseMatch {\n constructor(pattern) {\n super(pattern);\n }\n static get type() {\n return 'inverse-prefix-exact'\n }\n static get multiRegex() {\n return /^!\\^\"(.*)\"$/\n }\n static get singleRegex() {\n return /^!\\^(.*)$/\n }\n search(text) {\n const isMatch = !text.startsWith(this.pattern);\n\n return {\n isMatch,\n score: isMatch ? 0 : 1,\n indices: [0, text.length - 1]\n }\n }\n}\n\n// Token: .file$\n\nclass SuffixExactMatch extends BaseMatch {\n constructor(pattern) {\n super(pattern);\n }\n static get type() {\n return 'suffix-exact'\n }\n static get multiRegex() {\n return /^\"(.*)\"\\$$/\n }\n static get singleRegex() {\n return /^(.*)\\$$/\n }\n search(text) {\n const isMatch = text.endsWith(this.pattern);\n\n return {\n isMatch,\n score: isMatch ? 0 : 1,\n indices: [text.length - this.pattern.length, text.length - 1]\n }\n }\n}\n\n// Token: !.file$\n\nclass InverseSuffixExactMatch extends BaseMatch {\n constructor(pattern) {\n super(pattern);\n }\n static get type() {\n return 'inverse-suffix-exact'\n }\n static get multiRegex() {\n return /^!\"(.*)\"\\$$/\n }\n static get singleRegex() {\n return /^!(.*)\\$$/\n }\n search(text) {\n const isMatch = !text.endsWith(this.pattern);\n return {\n isMatch,\n score: isMatch ? 0 : 1,\n indices: [0, text.length - 1]\n }\n }\n}\n\nclass FuzzyMatch extends BaseMatch {\n constructor(\n pattern,\n {\n location = Config.location,\n threshold = Config.threshold,\n distance = Config.distance,\n includeMatches = Config.includeMatches,\n findAllMatches = Config.findAllMatches,\n minMatchCharLength = Config.minMatchCharLength,\n isCaseSensitive = Config.isCaseSensitive,\n ignoreLocation = Config.ignoreLocation\n } = {}\n ) {\n super(pattern);\n this._bitapSearch = new BitapSearch(pattern, {\n location,\n threshold,\n distance,\n includeMatches,\n findAllMatches,\n minMatchCharLength,\n isCaseSensitive,\n ignoreLocation\n });\n }\n static get type() {\n return 'fuzzy'\n }\n static get multiRegex() {\n return /^\"(.*)\"$/\n }\n static get singleRegex() {\n return /^(.*)$/\n }\n search(text) {\n return this._bitapSearch.searchIn(text)\n }\n}\n\n// Token: 'file\n\nclass IncludeMatch extends BaseMatch {\n constructor(pattern) {\n super(pattern);\n }\n static get type() {\n return 'include'\n }\n static get multiRegex() {\n return /^'\"(.*)\"$/\n }\n static get singleRegex() {\n return /^'(.*)$/\n }\n search(text) {\n let location = 0;\n let index;\n\n const indices = [];\n const patternLen = this.pattern.length;\n\n // Get all exact matches\n while ((index = text.indexOf(this.pattern, location)) > -1) {\n location = index + patternLen;\n indices.push([index, location - 1]);\n }\n\n const isMatch = !!indices.length;\n\n return {\n isMatch,\n score: isMatch ? 0 : 1,\n indices\n }\n }\n}\n\n// ❗Order is important. DO NOT CHANGE.\nconst searchers = [\n ExactMatch,\n IncludeMatch,\n PrefixExactMatch,\n InversePrefixExactMatch,\n InverseSuffixExactMatch,\n SuffixExactMatch,\n InverseExactMatch,\n FuzzyMatch\n];\n\nconst searchersLen = searchers.length;\n\n// Regex to split by spaces, but keep anything in quotes together\nconst SPACE_RE = / +(?=(?:[^\\\"]*\\\"[^\\\"]*\\\")*[^\\\"]*$)/;\nconst OR_TOKEN = '|';\n\n// Return a 2D array representation of the query, for simpler parsing.\n// Example:\n// \"^core go$ | rb$ | py$ xy$\" => [[\"^core\", \"go$\"], [\"rb$\"], [\"py$\", \"xy$\"]]\nfunction parseQuery(pattern, options = {}) {\n return pattern.split(OR_TOKEN).map((item) => {\n let query = item\n .trim()\n .split(SPACE_RE)\n .filter((item) => item && !!item.trim());\n\n let results = [];\n for (let i = 0, len = query.length; i < len; i += 1) {\n const queryItem = query[i];\n\n // 1. Handle multiple query match (i.e, once that are quoted, like `\"hello world\"`)\n let found = false;\n let idx = -1;\n while (!found && ++idx < searchersLen) {\n const searcher = searchers[idx];\n let token = searcher.isMultiMatch(queryItem);\n if (token) {\n results.push(new searcher(token, options));\n found = true;\n }\n }\n\n if (found) {\n continue\n }\n\n // 2. Handle single query matches (i.e, once that are *not* quoted)\n idx = -1;\n while (++idx < searchersLen) {\n const searcher = searchers[idx];\n let token = searcher.isSingleMatch(queryItem);\n if (token) {\n results.push(new searcher(token, options));\n break\n }\n }\n }\n\n return results\n })\n}\n\n// These extended matchers can return an array of matches, as opposed\n// to a singl match\nconst MultiMatchSet = new Set([FuzzyMatch.type, IncludeMatch.type]);\n\n/**\n * Command-like searching\n * ======================\n *\n * Given multiple search terms delimited by spaces.e.g. `^jscript .python$ ruby !java`,\n * search in a given text.\n *\n * Search syntax:\n *\n * | Token | Match type | Description |\n * | ----------- | -------------------------- | -------------------------------------- |\n * | `jscript` | fuzzy-match | Items that fuzzy match `jscript` |\n * | `=scheme` | exact-match | Items that are `scheme` |\n * | `'python` | include-match | Items that include `python` |\n * | `!ruby` | inverse-exact-match | Items that do not include `ruby` |\n * | `^java` | prefix-exact-match | Items that start with `java` |\n * | `!^earlang` | inverse-prefix-exact-match | Items that do not start with `earlang` |\n * | `.js$` | suffix-exact-match | Items that end with `.js` |\n * | `!.go$` | inverse-suffix-exact-match | Items that do not end with `.go` |\n *\n * A single pipe character acts as an OR operator. For example, the following\n * query matches entries that start with `core` and end with either`go`, `rb`,\n * or`py`.\n *\n * ```\n * ^core go$ | rb$ | py$\n * ```\n */\nclass ExtendedSearch {\n constructor(\n pattern,\n {\n isCaseSensitive = Config.isCaseSensitive,\n includeMatches = Config.includeMatches,\n minMatchCharLength = Config.minMatchCharLength,\n ignoreLocation = Config.ignoreLocation,\n findAllMatches = Config.findAllMatches,\n location = Config.location,\n threshold = Config.threshold,\n distance = Config.distance\n } = {}\n ) {\n this.query = null;\n this.options = {\n isCaseSensitive,\n includeMatches,\n minMatchCharLength,\n findAllMatches,\n ignoreLocation,\n location,\n threshold,\n distance\n };\n\n this.pattern = isCaseSensitive ? pattern : pattern.toLowerCase();\n this.query = parseQuery(this.pattern, this.options);\n }\n\n static condition(_, options) {\n return options.useExtendedSearch\n }\n\n searchIn(text) {\n const query = this.query;\n\n if (!query) {\n return {\n isMatch: false,\n score: 1\n }\n }\n\n const { includeMatches, isCaseSensitive } = this.options;\n\n text = isCaseSensitive ? text : text.toLowerCase();\n\n let numMatches = 0;\n let allIndices = [];\n let totalScore = 0;\n\n // ORs\n for (let i = 0, qLen = query.length; i < qLen; i += 1) {\n const searchers = query[i];\n\n // Reset indices\n allIndices.length = 0;\n numMatches = 0;\n\n // ANDs\n for (let j = 0, pLen = searchers.length; j < pLen; j += 1) {\n const searcher = searchers[j];\n const { isMatch, indices, score } = searcher.search(text);\n\n if (isMatch) {\n numMatches += 1;\n totalScore += score;\n if (includeMatches) {\n const type = searcher.constructor.type;\n if (MultiMatchSet.has(type)) {\n allIndices = [...allIndices, ...indices];\n } else {\n allIndices.push(indices);\n }\n }\n } else {\n totalScore = 0;\n numMatches = 0;\n allIndices.length = 0;\n break\n }\n }\n\n // OR condition, so if TRUE, return\n if (numMatches) {\n let result = {\n isMatch: true,\n score: totalScore / numMatches\n };\n\n if (includeMatches) {\n result.indices = allIndices;\n }\n\n return result\n }\n }\n\n // Nothing was matched\n return {\n isMatch: false,\n score: 1\n }\n }\n}\n\nconst registeredSearchers = [];\n\nfunction register(...args) {\n registeredSearchers.push(...args);\n}\n\nfunction createSearcher(pattern, options) {\n for (let i = 0, len = registeredSearchers.length; i < len; i += 1) {\n let searcherClass = registeredSearchers[i];\n if (searcherClass.condition(pattern, options)) {\n return new searcherClass(pattern, options)\n }\n }\n\n return new BitapSearch(pattern, options)\n}\n\nconst LogicalOperator = {\n AND: '$and',\n OR: '$or'\n};\n\nconst KeyType = {\n PATH: '$path',\n PATTERN: '$val'\n};\n\nconst isExpression = (query) =>\n !!(query[LogicalOperator.AND] || query[LogicalOperator.OR]);\n\nconst isPath = (query) => !!query[KeyType.PATH];\n\nconst isLeaf = (query) =>\n !isArray(query) && isObject(query) && !isExpression(query);\n\nconst convertToExplicit = (query) => ({\n [LogicalOperator.AND]: Object.keys(query).map((key) => ({\n [key]: query[key]\n }))\n});\n\n// When `auto` is `true`, the parse function will infer and initialize and add\n// the appropriate `Searcher` instance\nfunction parse(query, options, { auto = true } = {}) {\n const next = (query) => {\n let keys = Object.keys(query);\n\n const isQueryPath = isPath(query);\n\n if (!isQueryPath && keys.length > 1 && !isExpression(query)) {\n return next(convertToExplicit(query))\n }\n\n if (isLeaf(query)) {\n const key = isQueryPath ? query[KeyType.PATH] : keys[0];\n\n const pattern = isQueryPath ? query[KeyType.PATTERN] : query[key];\n\n if (!isString(pattern)) {\n throw new Error(LOGICAL_SEARCH_INVALID_QUERY_FOR_KEY(key))\n }\n\n const obj = {\n keyId: createKeyId(key),\n pattern\n };\n\n if (auto) {\n obj.searcher = createSearcher(pattern, options);\n }\n\n return obj\n }\n\n let node = {\n children: [],\n operator: keys[0]\n };\n\n keys.forEach((key) => {\n const value = query[key];\n\n if (isArray(value)) {\n value.forEach((item) => {\n node.children.push(next(item));\n });\n }\n });\n\n return node\n };\n\n if (!isExpression(query)) {\n query = convertToExplicit(query);\n }\n\n return next(query)\n}\n\n// Practical scoring function\nfunction computeScore(\n results,\n { ignoreFieldNorm = Config.ignoreFieldNorm }\n) {\n results.forEach((result) => {\n let totalScore = 1;\n\n result.matches.forEach(({ key, norm, score }) => {\n const weight = key ? key.weight : null;\n\n totalScore *= Math.pow(\n score === 0 && weight ? Number.EPSILON : score,\n (weight || 1) * (ignoreFieldNorm ? 1 : norm)\n );\n });\n\n result.score = totalScore;\n });\n}\n\nfunction transformMatches(result, data) {\n const matches = result.matches;\n data.matches = [];\n\n if (!isDefined(matches)) {\n return\n }\n\n matches.forEach((match) => {\n if (!isDefined(match.indices) || !match.indices.length) {\n return\n }\n\n const { indices, value } = match;\n\n let obj = {\n indices,\n value\n };\n\n if (match.key) {\n obj.key = match.key.src;\n }\n\n if (match.idx > -1) {\n obj.refIndex = match.idx;\n }\n\n data.matches.push(obj);\n });\n}\n\nfunction transformScore(result, data) {\n data.score = result.score;\n}\n\nfunction format(\n results,\n docs,\n {\n includeMatches = Config.includeMatches,\n includeScore = Config.includeScore\n } = {}\n) {\n const transformers = [];\n\n if (includeMatches) transformers.push(transformMatches);\n if (includeScore) transformers.push(transformScore);\n\n return results.map((result) => {\n const { idx } = result;\n\n const data = {\n item: docs[idx],\n refIndex: idx\n };\n\n if (transformers.length) {\n transformers.forEach((transformer) => {\n transformer(result, data);\n });\n }\n\n return data\n })\n}\n\nclass Fuse {\n constructor(docs, options = {}, index) {\n this.options = { ...Config, ...options };\n\n if (\n this.options.useExtendedSearch &&\n !true\n ) {\n throw new Error(EXTENDED_SEARCH_UNAVAILABLE)\n }\n\n this._keyStore = new KeyStore(this.options.keys);\n\n this.setCollection(docs, index);\n }\n\n setCollection(docs, index) {\n this._docs = docs;\n\n if (index && !(index instanceof FuseIndex)) {\n throw new Error(INCORRECT_INDEX_TYPE)\n }\n\n this._myIndex =\n index ||\n createIndex(this.options.keys, this._docs, {\n getFn: this.options.getFn,\n fieldNormWeight: this.options.fieldNormWeight\n });\n }\n\n add(doc) {\n if (!isDefined(doc)) {\n return\n }\n\n this._docs.push(doc);\n this._myIndex.add(doc);\n }\n\n remove(predicate = (/* doc, idx */) => false) {\n const results = [];\n\n for (let i = 0, len = this._docs.length; i < len; i += 1) {\n const doc = this._docs[i];\n if (predicate(doc, i)) {\n this.removeAt(i);\n i -= 1;\n len -= 1;\n\n results.push(doc);\n }\n }\n\n return results\n }\n\n removeAt(idx) {\n this._docs.splice(idx, 1);\n this._myIndex.removeAt(idx);\n }\n\n getIndex() {\n return this._myIndex\n }\n\n search(query, { limit = -1 } = {}) {\n const {\n includeMatches,\n includeScore,\n shouldSort,\n sortFn,\n ignoreFieldNorm\n } = this.options;\n\n let results = isString(query)\n ? isString(this._docs[0])\n ? this._searchStringList(query)\n : this._searchObjectList(query)\n : this._searchLogical(query);\n\n computeScore(results, { ignoreFieldNorm });\n\n if (shouldSort) {\n results.sort(sortFn);\n }\n\n if (isNumber(limit) && limit > -1) {\n results = results.slice(0, limit);\n }\n\n return format(results, this._docs, {\n includeMatches,\n includeScore\n })\n }\n\n _searchStringList(query) {\n const searcher = createSearcher(query, this.options);\n const { records } = this._myIndex;\n const results = [];\n\n // Iterate over every string in the index\n records.forEach(({ v: text, i: idx, n: norm }) => {\n if (!isDefined(text)) {\n return\n }\n\n const { isMatch, score, indices } = searcher.searchIn(text);\n\n if (isMatch) {\n results.push({\n item: text,\n idx,\n matches: [{ score, value: text, norm, indices }]\n });\n }\n });\n\n return results\n }\n\n _searchLogical(query) {\n\n const expression = parse(query, this.options);\n\n const evaluate = (node, item, idx) => {\n if (!node.children) {\n const { keyId, searcher } = node;\n\n const matches = this._findMatches({\n key: this._keyStore.get(keyId),\n value: this._myIndex.getValueForItemAtKeyId(item, keyId),\n searcher\n });\n\n if (matches && matches.length) {\n return [\n {\n idx,\n item,\n matches\n }\n ]\n }\n\n return []\n }\n\n const res = [];\n for (let i = 0, len = node.children.length; i < len; i += 1) {\n const child = node.children[i];\n const result = evaluate(child, item, idx);\n if (result.length) {\n res.push(...result);\n } else if (node.operator === LogicalOperator.AND) {\n return []\n }\n }\n return res\n };\n\n const records = this._myIndex.records;\n const resultMap = {};\n const results = [];\n\n records.forEach(({ $: item, i: idx }) => {\n if (isDefined(item)) {\n let expResults = evaluate(expression, item, idx);\n\n if (expResults.length) {\n // Dedupe when adding\n if (!resultMap[idx]) {\n resultMap[idx] = { idx, item, matches: [] };\n results.push(resultMap[idx]);\n }\n expResults.forEach(({ matches }) => {\n resultMap[idx].matches.push(...matches);\n });\n }\n }\n });\n\n return results\n }\n\n _searchObjectList(query) {\n const searcher = createSearcher(query, this.options);\n const { keys, records } = this._myIndex;\n const results = [];\n\n // List is Array\n records.forEach(({ $: item, i: idx }) => {\n if (!isDefined(item)) {\n return\n }\n\n let matches = [];\n\n // Iterate over every key (i.e, path), and fetch the value at that key\n keys.forEach((key, keyIndex) => {\n matches.push(\n ...this._findMatches({\n key,\n value: item[keyIndex],\n searcher\n })\n );\n });\n\n if (matches.length) {\n results.push({\n idx,\n item,\n matches\n });\n }\n });\n\n return results\n }\n _findMatches({ key, value, searcher }) {\n if (!isDefined(value)) {\n return []\n }\n\n let matches = [];\n\n if (isArray(value)) {\n value.forEach(({ v: text, i: idx, n: norm }) => {\n if (!isDefined(text)) {\n return\n }\n\n const { isMatch, score, indices } = searcher.searchIn(text);\n\n if (isMatch) {\n matches.push({\n score,\n key,\n value: text,\n idx,\n norm,\n indices\n });\n }\n });\n } else {\n const { v: text, n: norm } = value;\n\n const { isMatch, score, indices } = searcher.searchIn(text);\n\n if (isMatch) {\n matches.push({ score, key, value: text, norm, indices });\n }\n }\n\n return matches\n }\n}\n\nFuse.version = '6.6.2';\nFuse.createIndex = createIndex;\nFuse.parseIndex = parseIndex;\nFuse.config = Config;\n\n{\n Fuse.parseQuery = parse;\n}\n\n{\n register(ExtendedSearch);\n}\n\nexport { Fuse as default };\n","\n\n\n\n\n","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar sameValue = require('../internals/same-value');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\n// @@search logic\nfixRegExpWellKnownSymbolLogic('search', 1, function (SEARCH, nativeSearch, maybeCallNative) {\n return [\n // `String.prototype.search` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.search\n function search(regexp) {\n var O = requireObjectCoercible(this);\n var searcher = regexp == undefined ? undefined : regexp[SEARCH];\n return searcher !== undefined ? searcher.call(regexp, O) : new RegExp(regexp)[SEARCH](String(O));\n },\n // `RegExp.prototype[@@search]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@search\n function (regexp) {\n var res = maybeCallNative(nativeSearch, regexp, this);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n\n var previousLastIndex = rx.lastIndex;\n if (!sameValue(previousLastIndex, 0)) rx.lastIndex = 0;\n var result = regExpExec(rx, S);\n if (!sameValue(rx.lastIndex, previousLastIndex)) rx.lastIndex = previousLastIndex;\n return result === null ? -1 : result.index;\n }\n ];\n});\n","/*\n * Consistent and stable sort function across JavaScript platforms\n *\n * Inconsistent sorts can cause SSR problems between client and server\n * such as in if sortBy is applied to the data on server side render.\n * Chrome and V8 native sorts are inconsistent/unstable\n *\n * This function uses native sort with fallback to index compare when the a and b\n * compare returns 0\n *\n * Algorithm based on:\n * https://stackoverflow.com/questions/1427608/fast-stable-sorting-algorithm-implementation-in-javascript/45422645#45422645\n *\n * @param {array} array to sort\n * @param {function} sort compare function\n * @return {array}\n */\nexport var stableSort = function stableSort(array, compareFn) {\n // Using `.bind(compareFn)` on the wrapped anonymous function improves\n // performance by avoiding the function call setup. We don't use an arrow\n // function here as it binds `this` to the `stableSort` context rather than\n // the `compareFn` context, which wouldn't give us the performance increase.\n return array.map(function (a, index) {\n return [index, a];\n }).sort(function (a, b) {\n return this(a[1], b[1]) || a[0] - b[0];\n }.bind(compareFn)).map(function (e) {\n return e[1];\n });\n};","'use strict';\nvar $ = require('../internals/export');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar toLength = require('../internals/to-length');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\nvar IS_PURE = require('../internals/is-pure');\n\nvar nativeEndsWith = ''.endsWith;\nvar min = Math.min;\n\nvar CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic('endsWith');\n// https://github.com/zloirock/core-js/pull/702\nvar MDN_POLYFILL_BUG = !IS_PURE && !CORRECT_IS_REGEXP_LOGIC && !!function () {\n var descriptor = getOwnPropertyDescriptor(String.prototype, 'endsWith');\n return descriptor && !descriptor.writable;\n}();\n\n// `String.prototype.endsWith` method\n// https://tc39.github.io/ecma262/#sec-string.prototype.endswith\n$({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC }, {\n endsWith: function endsWith(searchString /* , endPosition = @length */) {\n var that = String(requireObjectCoercible(this));\n notARegExp(searchString);\n var endPosition = arguments.length > 1 ? arguments[1] : undefined;\n var len = toLength(that.length);\n var end = endPosition === undefined ? len : min(toLength(endPosition), len);\n var search = String(searchString);\n return nativeEndsWith\n ? nativeEndsWith.call(that, search, end)\n : that.slice(end - search.length, end) === search;\n }\n});\n","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomTable.vue?vue&type=style&index=1&id=71d97d66&scoped=true&lang=css&\"","'use strict';\nvar $ = require('../internals/export');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toInteger = require('../internals/to-integer');\nvar toLength = require('../internals/to-length');\nvar toObject = require('../internals/to-object');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar createProperty = require('../internals/create-property');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('splice');\nvar USES_TO_LENGTH = arrayMethodUsesToLength('splice', { ACCESSORS: true, 0: 0, 1: 2 });\n\nvar max = Math.max;\nvar min = Math.min;\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_LENGTH_EXCEEDED = 'Maximum allowed length exceeded';\n\n// `Array.prototype.splice` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.splice\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH }, {\n splice: function splice(start, deleteCount /* , ...items */) {\n var O = toObject(this);\n var len = toLength(O.length);\n var actualStart = toAbsoluteIndex(start, len);\n var argumentsLength = arguments.length;\n var insertCount, actualDeleteCount, A, k, from, to;\n if (argumentsLength === 0) {\n insertCount = actualDeleteCount = 0;\n } else if (argumentsLength === 1) {\n insertCount = 0;\n actualDeleteCount = len - actualStart;\n } else {\n insertCount = argumentsLength - 2;\n actualDeleteCount = min(max(toInteger(deleteCount), 0), len - actualStart);\n }\n if (len + insertCount - actualDeleteCount > MAX_SAFE_INTEGER) {\n throw TypeError(MAXIMUM_ALLOWED_LENGTH_EXCEEDED);\n }\n A = arraySpeciesCreate(O, actualDeleteCount);\n for (k = 0; k < actualDeleteCount; k++) {\n from = actualStart + k;\n if (from in O) createProperty(A, k, O[from]);\n }\n A.length = actualDeleteCount;\n if (insertCount < actualDeleteCount) {\n for (k = actualStart; k < len - actualDeleteCount; k++) {\n from = k + actualDeleteCount;\n to = k + insertCount;\n if (from in O) O[to] = O[from];\n else delete O[to];\n }\n for (k = len; k > len - actualDeleteCount + insertCount; k--) delete O[k - 1];\n } else if (insertCount > actualDeleteCount) {\n for (k = len - actualDeleteCount; k > actualStart; k--) {\n from = k + actualDeleteCount - 1;\n to = k + insertCount - 1;\n if (from in O) O[to] = O[from];\n else delete O[to];\n }\n }\n for (k = 0; k < insertCount; k++) {\n O[k + actualStart] = arguments[k + 2];\n }\n O.length = len - actualDeleteCount + insertCount;\n return A;\n }\n});\n","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomTable.vue?vue&type=style&index=0&lang=css&\""],"sourceRoot":""}