{"version":3,"sources":["webpack:///./src/views/Plants/Ingredients/Prices.vue?e620","webpack:///src/views/Plants/Ingredients/Prices.vue","webpack:///./src/views/Plants/Ingredients/Prices.vue?afc5","webpack:///./src/views/Plants/Ingredients/Prices.vue?aad9","webpack:///./node_modules/bootstrap-vue/esm/utils/stringify-object-values.js","webpack:///./node_modules/bootstrap-vue/esm/components/form/form.js","webpack:///./node_modules/bootstrap-vue/esm/components/pagination/pagination.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-bottom-row.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-busy.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-empty.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/sanitize-row.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/stringify-record-values.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-filtering.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-pagination.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-provider.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-selectable.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-sorting.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/default-sort-compare.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-top-row.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/table.js","webpack:///./node_modules/bootstrap-vue/esm/utils/stable-sort.js","webpack:///./node_modules/bootstrap-vue/esm/mixins/pagination.js","webpack:///./node_modules/core-js/modules/es.array.splice.js","webpack:///./src/@core/mixins/ui/transition.js","webpack:///./node_modules/vue-ripple-directive/src/ripple.js","webpack:///./src/views/Plants/Ingredients/Prices.vue?0210"],"names":["render","_vm","this","_h","$createElement","_c","_self","attrs","staticClass","_v","_s","$t","$store","state","appConfig","isRTL","perPageOptions","model","value","callback","$$v","perPage","expression","searchQuery","on","priceListUpdate","$event","updatePrices","ref","style","height","trHeight","preventDefault","repeateAgain","prices","fields","currentPage","scopedSlots","_u","key","fn","item","staticStyle","vade0name","numeral","changedItem","$set","dataMeta","from","to","of","length","proxy","staticRenderFns","components","BForm","BRow","BCol","BButton","BFormInput","BCard","BTable","BPagination","vSelect","directives","Ripple","mixins","beforeRouteEnter","name","meta","breadcrumb","push","text","active","next","data","allPrices","changedItems","computed","localItemsCount","methods","undefined","val","index","map","component","stringifyObjectValues","sort","k","filter","v","join","props","id","inline","novalidate","validated","extend","functional","h","_ref","children","class","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","sym","getOwnPropertyDescriptor","enumerable","apply","_objectSpread","target","i","arguments","source","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","obj","configurable","writable","DEFAULT_PER_PAGE","DEFAULT_TOTAL_ROWS","sanitizePerPage","sanitizeTotalRows","ariaControls","totalRows","numberOfPages","result","pageSizeNumberOfPages","watch","newValue","oldValue","localNumberOfPages","created","_this","$nextTick","onClick","event","pageNumber","_this2","clickEvt","cancelable","vueTarget","$emit","type","defaultPrevented","$el","contains","focusCurrent","makePage","pageNum","linkProps","bottomRowMixin","renderBottomRow","computedFields","stacked","tbodyTrClass","tbodyTrAttr","hasNormalizedSlot","normalizeSlot","columns","MODEL_PROP_NAME_BUSY","MODEL_EVENT_NAME_BUSY","busyMixin","localBusy","computedBusy","stopIfBusy","renderBusy","colspan","emptyFilteredHtml","emptyFilteredText","emptyHtml","emptyText","showEmpty","emptyMixin","renderEmpty","items","computedItems","$empty","isFiltered","domProps","html","role","row","ignoreFields","includeFields","fieldsObj","formattedRow","reduce","field","filterByFormatted","formatter","allowedKeys","array","_toConsumableArray","arr","_arrayWithoutHoles","_iterableToArray","_unsupportedIterableToArray","_nonIterableSpread","TypeError","o","minLen","_arrayLikeToArray","n","prototype","toString","call","slice","constructor","Array","test","iter","Symbol","iterator","isArray","len","arr2","DEBOUNCE_DEPRECATED_MSG","concat","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","timeout","setTimeout","Boolean","beforeDestroy","clearTimeout","_this3","regExp","pattern","replace","RegExp","lastIndex","computedFieldsObj","paginationMixin","localPaging","noProviderPaging","paginatedItems","sortedItems","math","ROOT_EVENT_NAME_REFRESHED","ROOT_ACTION_EVENT_NAME_REFRESH","apiUrl","noProviderSorting","providerMixin","providerTriggerContext","ctx","sortBy","sortDesc","localSortBy","localSortDesc","_providerUpdate","mounted","listenOnRoot","refresh","$off","$on","clearSelected","_providerSetLocal","emitOnRoot","context","then","e","message","_props","_watch","SELECT_MODES","noSelectOnClick","selectMode","selectable","selectedVariant","selectableMixin","selectedRows","selectedLastRow","isSelectable","hasSelectableRowClick","supportsSelectableRows","selectableHasSelection","some","selectableIsMultiSelect","selectableTableClasses","selectableTableAttrs","equal","setSelectionHandlers","_selectedRows","idx","beforeMount","selectRow","isRowSelected","selectedLastClicked","unselectRow","selectAllRows","selectableRowClasses","variant","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","f","sortable","sortCompareLocale","sortNullLast","sortCompare","sortCompareOptions","usage","sortByFormatted","getFieldFormatter","handleSort","isFoot","sortChanged","toggleLocalSortDesc","sortDirection","sortKey","sortTheadThClasses","sortIconLeft","sortTheadThAttrs","ariaSort","sortTheadThLabel","labelSorting","topRowMixin","renderTopRow","stableSort","compareFn","bind","_makeModelMixin","defaultValue","validator","modelMixin","mixin","modelProps","MODEL_PROP_NAME","prop","MODEL_EVENT_NAME","ELLIPSIS_THRESHOLD","DEFAULT_LIMIT","makePageArray","startNumber","_","number","classes","sanitizeLimit","limit","sanitizeCurrentPage","page","onSpaceKey","keyCode","immediatePropagation","currentTarget","click","align","ariaLabel","disabled","ellipsisClass","ellipsisText","firstClass","firstNumber","firstText","hideEllipsis","hideGotoEndButtons","labelFirstPage","labelLastPage","labelNextPage","labelPage","labelPrevPage","lastClass","lastNumber","lastText","nextClass","nextText","pageClass","pills","prevClass","prevText","size","localLimit","btnSize","alignment","styleClass","computedCurrentPage","paginationParams","showFirstDots","showLastDots","numberOfLinks","lastPageNumber","pageList","_this$paginationParam","pages","_i","_i2","_i3","handleKeyNav","isNav","propagation","focusFirst","focusPrev","focusLast","focusNext","getButtons","btn","find","el","_this4","reverse","_this5","buttons","indexOf","_this6","_this7","pageNumbers","p","_this$paginationParam2","fill","$buttons","isActivePage","noCurrentPage","makeEndBtn","linkTo","btnSlot","btnText","btnClass","pageTest","isDisabled","scope","$btnContent","$inner","tabindex","keydown","makeEllipsis","isLast","makePageButton","tabIndex","btnContent","content","$firstPageBtn","offset","$lastPageBtn","$pagination","$","toAbsoluteIndex","toInteger","toLength","toObject","arraySpeciesCreate","createProperty","arrayMethodHasSpeciesSupport","arrayMethodUsesToLength","HAS_SPECIES_SUPPORT","USES_TO_LENGTH","ACCESSORS","0","1","max","Math","min","MAX_SAFE_INTEGER","MAXIMUM_ALLOWED_LENGTH_EXCEEDED","proto","forced","splice","start","deleteCount","insertCount","actualDeleteCount","A","O","actualStart","argumentsLength","heightTransition","trAddHeight","heightValue","Number","substring","trTrimHeight","trSetHeight","binding","transition","setProps","modifiers","addEventListener","rippler","bg","color","zIndex","targetBorder","parseInt","getComputedStyle","rect","getBoundingClientRect","left","top","width","offsetWidth","offsetHeight","dx","clientX","dy","clientY","maxX","maxY","window","radius","sqrt","border","ripple","document","createElement","rippleContainer","className","marginTop","marginLeft","borderRadius","pointerEvents","position","backgroundColor","overflow","storedTargetPosition","clearRipple","parentNode","removeChild","removeEventListener","clearPosition","childNodes","appendChild","borderTopLeftRadius","borderTopRightRadius","borderBottomLeftRadius","borderBottomRightRadius","direction","isNaN"],"mappings":"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","file":"js/chunk-240c230f.15c71988.js","sourcesContent":["var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-card',{attrs:{\"no-body\":\"\"}},[_c('div',{staticClass:\"m-2\"},[_c('b-row',[_c('b-col',{staticClass:\"d-flex align-items-center justify-content-start mb-1 mb-md-0\",attrs:{\"cols\":\"12\",\"md\":\"6\"}},[_c('label',[_vm._v(_vm._s(_vm.$t(\"eachPage\")))]),_c('v-select',{staticClass:\"per-page-selector d-inline-block mx-50\",attrs:{\"transition\":\"\",\"dir\":_vm.$store.state.appConfig.isRTL ? 'rtl' : 'ltr',\"options\":_vm.perPageOptions,\"clearable\":false},model:{value:(_vm.perPage),callback:function ($$v) {_vm.perPage=$$v},expression:\"perPage\"}}),_c('label',[_vm._v(\" \"+_vm._s(_vm.$t(\"piece\"))+\" \")])],1),_c('b-col',{attrs:{\"cols\":\"12\",\"md\":\"6\"}},[_c('div',{staticClass:\"d-flex align-items-center justify-content-end\"},[_c('b-form-input',{staticClass:\"d-inline-block mr-1\",attrs:{\"placeholder\":_vm.$t('search'),\"data\":_vm.searchQuery},on:{\"input\":_vm.priceListUpdate}}),_c('b-button',{attrs:{\"variant\":\"success\"},on:{\"click\":function($event){return _vm.updatePrices()}}},[_vm._v(\" \"+_vm._s(_vm.$t(\"update\"))+\" \")])],1)])],1)],1),_c('div',[_c('b-form',{ref:\"form\",staticClass:\"repeater-form\",style:({ height: _vm.trHeight }),on:{\"submit\":function($event){$event.preventDefault();return _vm.repeateAgain($event)}}},[(true)?_c('b-table',{ref:\"refPricesTable\",staticClass:\"editable-table\",attrs:{\"items\":_vm.prices,\"striped\":\"\",\"small\":true,\"fields\":_vm.fields,\"responsive\":\"\",\"primary-key\":\"ikey\",\"bordered\":\"\",\"show-empty\":\"\",\"empty-text\":_vm.$t('noRecords'),\"per-page\":_vm.perPage,\"current-page\":_vm.currentPage},scopedSlots:_vm._u([{key:\"cell(price)\",fn:function(ref){\nvar item = ref.item;\nreturn [_c('div',{staticClass:\"editable text-right max-w-150\"},[_c('b-form-input',{staticStyle:{\"text-align\":\"right\"},attrs:{\"id\":item.vade0name,\"type\":\"number\",\"options\":{\n numeral: true,\n }},on:{\"input\":function($event){return _vm.changedItem(item)}},model:{value:(item.price),callback:function ($$v) {_vm.$set(item, \"price\", $$v)},expression:\"item.price\"}})],1)]}}],null,false,3313656972)}):_vm._e(),_c('div',{staticClass:\"mx-2 mb-2\"},[_c('b-row',[_c('b-col',{staticClass:\"\\n d-flex\\n align-items-center\\n justify-content-center justify-content-sm-start\\n \",attrs:{\"cols\":\"12\",\"sm\":\"6\"}},[_c('span',{staticClass:\"text-muted\"},[_vm._v(_vm._s(_vm.$t(\"showing\"))+\" \"+_vm._s(_vm.dataMeta.from)+\" \"+_vm._s(_vm.$t(\"to\"))+\" \"+_vm._s(_vm.dataMeta.to)+\" \"+_vm._s(_vm.$t(\"of\"))+\" \"+_vm._s(_vm.dataMeta.of)+\" \"+_vm._s(_vm.$t(\"entries\"))+\" \")])]),_c('b-col',{staticClass:\"\\n d-flex\\n align-items-center\\n justify-content-center justify-content-sm-end\\n \",attrs:{\"cols\":\"12\",\"sm\":\"6\"}},[_c('b-pagination',{staticClass:\"mb-0 mt-1 mt-sm-0\",attrs:{\"total-rows\":_vm.prices.length,\"per-page\":_vm.perPage,\"first-number\":\"\",\"last-number\":\"\",\"prev-class\":\"prev-item\",\"next-class\":\"next-item\"},scopedSlots:_vm._u([{key:\"prev-text\",fn:function(){return [_c('feather-icon',{attrs:{\"icon\":\"ChevronLeftIcon\",\"size\":\"18\"}})]},proxy:true},{key:\"next-text\",fn:function(){return [_c('feather-icon',{attrs:{\"icon\":\"ChevronRightIcon\",\"size\":\"18\"}})]},proxy:true}]),model:{value:(_vm.currentPage),callback:function ($$v) {_vm.currentPage=$$v},expression:\"currentPage\"}})],1)],1)],1)],1)],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n \n \n \n \n \n \n {{ $t(\"eachPage\") }}\n \n {{ $t(\"piece\") }} \n \n\n \n \n \n \n \n {{ $t(\"update\") }}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {{ $t(\"showing\") }} {{ dataMeta.from }} {{ $t(\"to\") }}\n {{ dataMeta.to }} {{ $t(\"of\") }} {{ dataMeta.of }}\n {{ $t(\"entries\") }} \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\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!./Prices.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!./Prices.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Prices.vue?vue&type=template&id=1910d9dd&\"\nimport script from \"./Prices.vue?vue&type=script&lang=js&\"\nexport * from \"./Prices.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Prices.vue?vue&type=style&index=0&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 null,\n null\n \n)\n\nexport default component.exports","import { isDate, isObject, isUndefinedOrNull } from './inspect';\nimport { keys } from './object';\nimport { toString } from './string'; // Recursively stringifies the values of an object, space separated, in an\n// SSR safe deterministic way (keys are sorted before stringification)\n//\n// ex:\n// { b: 3, c: { z: 'zzz', d: null, e: 2 }, d: [10, 12, 11], a: 'one' }\n// becomes\n// 'one 3 2 zzz 10 12 11'\n//\n// Strings are returned as-is\n// Numbers get converted to string\n// `null` and `undefined` values are filtered out\n// Dates are converted to their native string format\n\nexport var stringifyObjectValues = function stringifyObjectValues(value) {\n if (isUndefinedOrNull(value)) {\n return '';\n } // Arrays are also object, and keys just returns the array indexes\n // Date objects we convert to strings\n\n\n if (isObject(value) && !isDate(value)) {\n return keys(value).sort() // Sort to prevent SSR issues on pre-rendered sorted tables\n .map(function (k) {\n return stringifyObjectValues(value[k]);\n }).filter(function (v) {\n return !!v;\n }) // Ignore empty strings\n .join(' ');\n }\n\n return toString(value);\n};","import { Vue, mergeData } from '../../vue';\nimport { NAME_FORM } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../constants/props';\nimport { makeProp, makePropsConfigurable } from '../../utils/props'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n id: makeProp(PROP_TYPE_STRING),\n inline: makeProp(PROP_TYPE_BOOLEAN, false),\n novalidate: makeProp(PROP_TYPE_BOOLEAN, false),\n validated: makeProp(PROP_TYPE_BOOLEAN, false)\n}, NAME_FORM); // --- Main component ---\n// @vue/component\n\nexport var BForm = /*#__PURE__*/Vue.extend({\n name: NAME_FORM,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n return h('form', mergeData(data, {\n class: {\n 'form-inline': props.inline,\n 'was-validated': props.validated\n },\n attrs: {\n id: props.id,\n novalidate: props.novalidate\n }\n }), children);\n }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue } from '../../vue';\nimport { NAME_PAGINATION } from '../../constants/components';\nimport { EVENT_NAME_CHANGE, EVENT_NAME_PAGE_CLICK } from '../../constants/events';\nimport { PROP_TYPE_NUMBER_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { BvEvent } from '../../utils/bv-event.class';\nimport { attemptFocus, isVisible } from '../../utils/dom';\nimport { isUndefinedOrNull } from '../../utils/inspect';\nimport { mathCeil, mathMax } from '../../utils/math';\nimport { toInteger } from '../../utils/number';\nimport { sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { MODEL_PROP_NAME, paginationMixin, props as paginationProps } from '../../mixins/pagination'; // --- Constants ---\n\nvar DEFAULT_PER_PAGE = 20;\nvar DEFAULT_TOTAL_ROWS = 0; // --- Helper methods ---\n// Sanitize the provided per page number (converting to a number)\n\nvar sanitizePerPage = function sanitizePerPage(value) {\n return mathMax(toInteger(value) || DEFAULT_PER_PAGE, 1);\n}; // Sanitize the provided total rows number (converting to a number)\n\n\nvar sanitizeTotalRows = function sanitizeTotalRows(value) {\n return mathMax(toInteger(value) || DEFAULT_TOTAL_ROWS, 0);\n}; // --- Props ---\n\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, paginationProps), {}, {\n ariaControls: makeProp(PROP_TYPE_STRING),\n perPage: makeProp(PROP_TYPE_NUMBER_STRING, DEFAULT_PER_PAGE),\n totalRows: makeProp(PROP_TYPE_NUMBER_STRING, DEFAULT_TOTAL_ROWS)\n})), NAME_PAGINATION); // --- Main component ---\n// @vue/component\n\nexport var BPagination = /*#__PURE__*/Vue.extend({\n name: NAME_PAGINATION,\n // The render function is brought in via the `paginationMixin`\n mixins: [paginationMixin],\n props: props,\n computed: {\n numberOfPages: function numberOfPages() {\n var result = mathCeil(sanitizeTotalRows(this.totalRows) / sanitizePerPage(this.perPage));\n return result < 1 ? 1 : result;\n },\n // Used for watching changes to `perPage` and `numberOfPages`\n pageSizeNumberOfPages: function pageSizeNumberOfPages() {\n return {\n perPage: sanitizePerPage(this.perPage),\n totalRows: sanitizeTotalRows(this.totalRows),\n numberOfPages: this.numberOfPages\n };\n }\n },\n watch: {\n pageSizeNumberOfPages: function pageSizeNumberOfPages(newValue, oldValue) {\n if (!isUndefinedOrNull(oldValue)) {\n if (newValue.perPage !== oldValue.perPage && newValue.totalRows === oldValue.totalRows) {\n // If the page size changes, reset to page 1\n this.currentPage = 1;\n } else if (newValue.numberOfPages !== oldValue.numberOfPages && this.currentPage > newValue.numberOfPages) {\n // If `numberOfPages` changes and is less than\n // the `currentPage` number, reset to page 1\n this.currentPage = 1;\n }\n }\n\n this.localNumberOfPages = newValue.numberOfPages;\n }\n },\n created: function created() {\n var _this = this;\n\n // Set the initial page count\n this.localNumberOfPages = this.numberOfPages; // Set the initial page value\n\n var currentPage = toInteger(this[MODEL_PROP_NAME], 0);\n\n if (currentPage > 0) {\n this.currentPage = currentPage;\n } else {\n this.$nextTick(function () {\n // If this value parses to `NaN` or a value less than `1`\n // trigger an initial emit of `null` if no page specified\n _this.currentPage = 0;\n });\n }\n },\n methods: {\n // These methods are used by the render function\n onClick: function onClick(event, pageNumber) {\n var _this2 = this;\n\n // Dont do anything if clicking the current active page\n if (pageNumber === this.currentPage) {\n return;\n }\n\n var target = event.target; // Emit a user-cancelable `page-click` event\n\n var clickEvt = new BvEvent(EVENT_NAME_PAGE_CLICK, {\n cancelable: true,\n vueTarget: this,\n target: target\n });\n this.$emit(clickEvt.type, clickEvt, pageNumber);\n\n if (clickEvt.defaultPrevented) {\n return;\n } // Update the `v-model`\n\n\n this.currentPage = pageNumber; // Emit event triggered by user interaction\n\n this.$emit(EVENT_NAME_CHANGE, this.currentPage); // Keep the current button focused if possible\n\n this.$nextTick(function () {\n if (isVisible(target) && _this2.$el.contains(target)) {\n attemptFocus(target);\n } else {\n _this2.focusCurrent();\n }\n });\n },\n makePage: function makePage(pageNum) {\n return pageNum;\n },\n\n /* istanbul ignore next */\n linkProps: function linkProps() {\n // No props, since we render a plain button\n return {};\n }\n }\n});","import { Vue } from '../../../vue';\nimport { SLOT_NAME_BOTTOM_ROW } from '../../../constants/slots';\nimport { isFunction } from '../../../utils/inspect';\nimport { BTr } from '../tr'; // --- Props ---\n\nexport var props = {}; // --- Mixin ---\n// @vue/component\n\nexport var bottomRowMixin = Vue.extend({\n props: props,\n methods: {\n renderBottomRow: function renderBottomRow() {\n var fields = this.computedFields,\n stacked = this.stacked,\n tbodyTrClass = this.tbodyTrClass,\n tbodyTrAttr = this.tbodyTrAttr;\n var h = this.$createElement; // Static bottom row slot (hidden in visibly stacked mode as we can't control the data-label)\n // If in *always* stacked mode, we don't bother rendering the row\n\n if (!this.hasNormalizedSlot(SLOT_NAME_BOTTOM_ROW) || stacked === true || stacked === '') {\n return h();\n }\n\n return h(BTr, {\n staticClass: 'b-table-bottom-row',\n class: [isFunction(tbodyTrClass) ?\n /* istanbul ignore next */\n tbodyTrClass(null, 'row-bottom') : tbodyTrClass],\n attrs: isFunction(tbodyTrAttr) ?\n /* istanbul ignore next */\n tbodyTrAttr(null, 'row-bottom') : tbodyTrAttr,\n key: 'b-bottom-row'\n }, this.normalizeSlot(SLOT_NAME_BOTTOM_ROW, {\n columns: fields.length,\n fields: fields\n }));\n }\n }\n});","function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue } from '../../../vue';\nimport { MODEL_EVENT_NAME_PREFIX } from '../../../constants/events';\nimport { PROP_TYPE_BOOLEAN } from '../../../constants/props';\nimport { SLOT_NAME_TABLE_BUSY } from '../../../constants/slots';\nimport { stopEvent } from '../../../utils/events';\nimport { isFunction } from '../../../utils/inspect';\nimport { makeProp } from '../../../utils/props';\nimport { BTr } from '../tr';\nimport { BTd } from '../td'; // --- Constants ---\n\nvar MODEL_PROP_NAME_BUSY = 'busy';\nvar MODEL_EVENT_NAME_BUSY = MODEL_EVENT_NAME_PREFIX + MODEL_PROP_NAME_BUSY; // --- Props ---\n\nexport var props = _defineProperty({}, MODEL_PROP_NAME_BUSY, makeProp(PROP_TYPE_BOOLEAN, false)); // --- Mixin ---\n// @vue/component\n\nexport var busyMixin = Vue.extend({\n props: props,\n data: function data() {\n return {\n localBusy: false\n };\n },\n computed: {\n computedBusy: function computedBusy() {\n return this[MODEL_PROP_NAME_BUSY] || this.localBusy;\n }\n },\n watch: {\n localBusy: function localBusy(newValue, oldValue) {\n if (newValue !== oldValue) {\n this.$emit(MODEL_EVENT_NAME_BUSY, newValue);\n }\n }\n },\n methods: {\n // Event handler helper\n stopIfBusy: function stopIfBusy(event) {\n // If table is busy (via provider) then don't propagate\n if (this.computedBusy) {\n stopEvent(event);\n return true;\n }\n\n return false;\n },\n // Render the busy indicator or return `null` if not busy\n renderBusy: function renderBusy() {\n var tbodyTrClass = this.tbodyTrClass,\n tbodyTrAttr = this.tbodyTrAttr;\n var h = this.$createElement; // Return a busy indicator row, or `null` if not busy\n\n if (this.computedBusy && this.hasNormalizedSlot(SLOT_NAME_TABLE_BUSY)) {\n return h(BTr, {\n staticClass: 'b-table-busy-slot',\n class: [isFunction(tbodyTrClass) ?\n /* istanbul ignore next */\n tbodyTrClass(null, SLOT_NAME_TABLE_BUSY) : tbodyTrClass],\n attrs: isFunction(tbodyTrAttr) ?\n /* istanbul ignore next */\n tbodyTrAttr(null, SLOT_NAME_TABLE_BUSY) : tbodyTrAttr,\n key: 'table-busy-slot'\n }, [h(BTd, {\n props: {\n colspan: this.computedFields.length || null\n }\n }, [this.normalizeSlot(SLOT_NAME_TABLE_BUSY)])]);\n } // We return `null` here so that we can determine if we need to\n // render the table items rows or not\n\n\n return null;\n }\n }\n});","import { Vue } from '../../../vue';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../../constants/props';\nimport { SLOT_NAME_EMPTY, SLOT_NAME_EMPTYFILTERED, SLOT_NAME_TABLE_BUSY } from '../../../constants/slots';\nimport { htmlOrText } from '../../../utils/html';\nimport { isFunction } from '../../../utils/inspect';\nimport { makeProp } from '../../../utils/props';\nimport { BTr } from '../tr';\nimport { BTd } from '../td'; // --- Props ---\n\nexport var props = {\n emptyFilteredHtml: makeProp(PROP_TYPE_STRING),\n emptyFilteredText: makeProp(PROP_TYPE_STRING, 'There are no records matching your request'),\n emptyHtml: makeProp(PROP_TYPE_STRING),\n emptyText: makeProp(PROP_TYPE_STRING, 'There are no records to show'),\n showEmpty: makeProp(PROP_TYPE_BOOLEAN, false)\n}; // --- Mixin ---\n// @vue/component\n\nexport var emptyMixin = Vue.extend({\n props: props,\n methods: {\n renderEmpty: function renderEmpty() {\n var items = this.computedItems;\n var h = this.$createElement;\n var $empty = h();\n\n if (this.showEmpty && (!items || items.length === 0) && !(this.computedBusy && this.hasNormalizedSlot(SLOT_NAME_TABLE_BUSY))) {\n var fields = this.computedFields,\n isFiltered = this.isFiltered,\n emptyText = this.emptyText,\n emptyHtml = this.emptyHtml,\n emptyFilteredText = this.emptyFilteredText,\n emptyFilteredHtml = this.emptyFilteredHtml,\n tbodyTrClass = this.tbodyTrClass,\n tbodyTrAttr = this.tbodyTrAttr;\n $empty = this.normalizeSlot(isFiltered ? SLOT_NAME_EMPTYFILTERED : SLOT_NAME_EMPTY, {\n emptyFilteredHtml: emptyFilteredHtml,\n emptyFilteredText: emptyFilteredText,\n emptyHtml: emptyHtml,\n emptyText: emptyText,\n fields: fields,\n // Not sure why this is included, as it will always be an empty array\n items: items\n });\n\n if (!$empty) {\n $empty = h('div', {\n class: ['text-center', 'my-2'],\n domProps: isFiltered ? htmlOrText(emptyFilteredHtml, emptyFilteredText) : htmlOrText(emptyHtml, emptyText)\n });\n }\n\n $empty = h(BTd, {\n props: {\n colspan: fields.length || null\n }\n }, [h('div', {\n attrs: {\n role: 'alert',\n 'aria-live': 'polite'\n }\n }, [$empty])]);\n $empty = h(BTr, {\n staticClass: 'b-table-empty-row',\n class: [isFunction(tbodyTrClass) ?\n /* istanbul ignore next */\n tbodyTrClass(null, 'row-empty') : tbodyTrClass],\n attrs: isFunction(tbodyTrAttr) ?\n /* istanbul ignore next */\n tbodyTrAttr(null, 'row-empty') : tbodyTrAttr,\n key: isFiltered ? 'b-empty-filtered-row' : 'b-empty-row'\n }, [$empty]);\n }\n\n return $empty;\n }\n }\n});","import { arrayIncludes } from '../../../utils/array';\nimport { isArray, isFunction } from '../../../utils/inspect';\nimport { clone, keys, pick } from '../../../utils/object';\nimport { IGNORED_FIELD_KEYS } from './constants'; // Return a copy of a row after all reserved fields have been filtered out\n\nexport var sanitizeRow = function sanitizeRow(row, ignoreFields, includeFields) {\n var fieldsObj = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n // We first need to format the row based on the field configurations\n // This ensures that we add formatted values for keys that may not\n // exist in the row itself\n var formattedRow = keys(fieldsObj).reduce(function (result, key) {\n var field = fieldsObj[key];\n var filterByFormatted = field.filterByFormatted;\n var formatter = isFunction(filterByFormatted) ?\n /* istanbul ignore next */\n filterByFormatted : filterByFormatted ?\n /* istanbul ignore next */\n field.formatter : null;\n\n if (isFunction(formatter)) {\n result[key] = formatter(row[key], key, row);\n }\n\n return result;\n }, clone(row)); // Determine the allowed keys:\n // - Ignore special fields that start with `_`\n // - Ignore fields in the `ignoreFields` array\n // - Include only fields in the `includeFields` array\n\n var allowedKeys = keys(formattedRow).filter(function (key) {\n return !IGNORED_FIELD_KEYS[key] && !(isArray(ignoreFields) && ignoreFields.length > 0 && arrayIncludes(ignoreFields, key)) && !(isArray(includeFields) && includeFields.length > 0 && !arrayIncludes(includeFields, key));\n });\n return pick(formattedRow, allowedKeys);\n};","import { isObject } from '../../../utils/inspect';\nimport { stringifyObjectValues } from '../../../utils/stringify-object-values';\nimport { sanitizeRow } from './sanitize-row'; // Stringifies the values of a record, ignoring any special top level field keys\n// TODO: Add option to stringify `scopedSlot` items\n\nexport var stringifyRecordValues = function stringifyRecordValues(row, ignoreFields, includeFields, fieldsObj) {\n return isObject(row) ? stringifyObjectValues(sanitizeRow(row, ignoreFields, includeFields, fieldsObj)) :\n /* istanbul ignore next */\n '';\n};","function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nimport { Vue } from '../../../vue';\nimport { NAME_TABLE } from '../../../constants/components';\nimport { EVENT_NAME_FILTERED } from '../../../constants/events';\nimport { PROP_TYPE_REG_EXP, PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_FUNCTION, PROP_TYPE_ARRAY, PROP_TYPE_NUMBER_STRING } from '../../../constants/props';\nimport { RX_DIGITS, RX_SPACES } from '../../../constants/regex';\nimport { concat } from '../../../utils/array';\nimport { cloneDeep } from '../../../utils/clone-deep';\nimport { identity } from '../../../utils/identity';\nimport { isFunction, isString, isRegExp } from '../../../utils/inspect';\nimport { looseEqual } from '../../../utils/loose-equal';\nimport { toInteger } from '../../../utils/number';\nimport { hasPropFunction, makeProp } from '../../../utils/props';\nimport { escapeRegExp } from '../../../utils/string';\nimport { warn } from '../../../utils/warn';\nimport { stringifyRecordValues } from './stringify-record-values'; // --- Constants ---\n\nvar DEBOUNCE_DEPRECATED_MSG = 'Prop \"filter-debounce\" is deprecated. Use the debounce feature of \"\" instead.'; // --- Props ---\n\nexport var props = {\n filter: makeProp([].concat(_toConsumableArray(PROP_TYPE_ARRAY_OBJECT_STRING), [PROP_TYPE_REG_EXP])),\n filterDebounce: makeProp(PROP_TYPE_NUMBER_STRING, 0, function (value) {\n return RX_DIGITS.test(String(value));\n }),\n filterFunction: makeProp(PROP_TYPE_FUNCTION),\n filterIgnoredFields: makeProp(PROP_TYPE_ARRAY, []),\n filterIncludedFields: makeProp(PROP_TYPE_ARRAY, [])\n}; // --- Mixin ---\n// @vue/component\n\nexport var filteringMixin = Vue.extend({\n props: props,\n data: function data() {\n return {\n // Flag for displaying which empty slot to show and some event triggering\n isFiltered: false,\n // Where we store the copy of the filter criteria after debouncing\n // We pre-set it with the sanitized filter value\n localFilter: this.filterSanitize(this.filter)\n };\n },\n computed: {\n computedFilterIgnored: function computedFilterIgnored() {\n return concat(this.filterIgnoredFields || []).filter(identity);\n },\n computedFilterIncluded: function computedFilterIncluded() {\n return concat(this.filterIncludedFields || []).filter(identity);\n },\n computedFilterDebounce: function computedFilterDebounce() {\n var ms = toInteger(this.filterDebounce, 0);\n /* istanbul ignore next */\n\n if (ms > 0) {\n warn(DEBOUNCE_DEPRECATED_MSG, NAME_TABLE);\n }\n\n return ms;\n },\n localFiltering: function localFiltering() {\n return this.hasProvider ? !!this.noProviderFiltering : true;\n },\n // For watching changes to `filteredItems` vs `localItems`\n filteredCheck: function filteredCheck() {\n var filteredItems = this.filteredItems,\n localItems = this.localItems,\n localFilter = this.localFilter;\n return {\n filteredItems: filteredItems,\n localItems: localItems,\n localFilter: localFilter\n };\n },\n // Sanitized/normalize filter-function prop\n localFilterFn: function localFilterFn() {\n // Return `null` to signal to use internal filter function\n var filterFunction = this.filterFunction;\n return hasPropFunction(filterFunction) ? filterFunction : null;\n },\n // Returns the records in `localItems` that match the filter criteria\n // Returns the original `localItems` array if not sorting\n filteredItems: function filteredItems() {\n // Note the criteria is debounced and sanitized\n var items = this.localItems,\n criteria = this.localFilter; // Resolve the filtering function, when requested\n // We prefer the provided filtering function and fallback to the internal one\n // When no filtering criteria is specified the filtering factories will return `null`\n\n var filterFn = this.localFiltering ? this.filterFnFactory(this.localFilterFn, criteria) || this.defaultFilterFnFactory(criteria) : null; // We only do local filtering when requested and there are records to filter\n\n return filterFn && items.length > 0 ? items.filter(filterFn) : items;\n }\n },\n watch: {\n // Watch for debounce being set to 0\n computedFilterDebounce: function computedFilterDebounce(newValue) {\n if (!newValue && this.$_filterTimer) {\n this.clearFilterTimer();\n this.localFilter = this.filterSanitize(this.filter);\n }\n },\n // Watch for changes to the filter criteria, and debounce if necessary\n filter: {\n // We need a deep watcher in case the user passes\n // an object when using `filter-function`\n deep: true,\n handler: function handler(newCriteria) {\n var _this = this;\n\n var timeout = this.computedFilterDebounce;\n this.clearFilterTimer();\n\n if (timeout && timeout > 0) {\n // If we have a debounce time, delay the update of `localFilter`\n this.$_filterTimer = setTimeout(function () {\n _this.localFilter = _this.filterSanitize(newCriteria);\n }, timeout);\n } else {\n // Otherwise, immediately update `localFilter` with `newFilter` value\n this.localFilter = this.filterSanitize(newCriteria);\n }\n }\n },\n // Watch for changes to the filter criteria and filtered items vs `localItems`\n // Set visual state and emit events as required\n filteredCheck: function filteredCheck(_ref) {\n var filteredItems = _ref.filteredItems,\n localFilter = _ref.localFilter;\n // Determine if the dataset is filtered or not\n var isFiltered = false;\n\n if (!localFilter) {\n // If filter criteria is falsey\n isFiltered = false;\n } else if (looseEqual(localFilter, []) || looseEqual(localFilter, {})) {\n // If filter criteria is an empty array or object\n isFiltered = false;\n } else if (localFilter) {\n // If filter criteria is truthy\n isFiltered = true;\n }\n\n if (isFiltered) {\n this.$emit(EVENT_NAME_FILTERED, filteredItems, filteredItems.length);\n }\n\n this.isFiltered = isFiltered;\n },\n isFiltered: function isFiltered(newValue, oldValue) {\n if (newValue === false && oldValue === true) {\n // We need to emit a filtered event if `isFiltered` transitions from `true` to\n // `false` so that users can update their pagination controls\n var localItems = this.localItems;\n this.$emit(EVENT_NAME_FILTERED, localItems, localItems.length);\n }\n }\n },\n created: function created() {\n var _this2 = this;\n\n // Create private non-reactive props\n this.$_filterTimer = null; // If filter is \"pre-set\", set the criteria\n // This will trigger any watchers/dependents\n // this.localFilter = this.filterSanitize(this.filter)\n // Set the initial filtered state in a `$nextTick()` so that\n // we trigger a filtered event if needed\n\n this.$nextTick(function () {\n _this2.isFiltered = Boolean(_this2.localFilter);\n });\n },\n beforeDestroy: function beforeDestroy() {\n this.clearFilterTimer();\n },\n methods: {\n clearFilterTimer: function clearFilterTimer() {\n clearTimeout(this.$_filterTimer);\n this.$_filterTimer = null;\n },\n filterSanitize: function filterSanitize(criteria) {\n // Sanitizes filter criteria based on internal or external filtering\n if (this.localFiltering && !this.localFilterFn && !(isString(criteria) || isRegExp(criteria))) {\n // If using internal filter function, which only accepts string or RegExp,\n // return '' to signify no filter\n return '';\n } // Could be a string, object or array, as needed by external filter function\n // We use `cloneDeep` to ensure we have a new copy of an object or array\n // without Vue's reactive observers\n\n\n return cloneDeep(criteria);\n },\n // Filter Function factories\n filterFnFactory: function filterFnFactory(filterFn, criteria) {\n // Wrapper factory for external filter functions\n // Wrap the provided filter-function and return a new function\n // Returns `null` if no filter-function defined or if criteria is falsey\n // Rather than directly grabbing `this.computedLocalFilterFn` or `this.filterFunction`\n // we have it passed, so that the caller computed prop will be reactive to changes\n // in the original filter-function (as this routine is a method)\n if (!filterFn || !isFunction(filterFn) || !criteria || looseEqual(criteria, []) || looseEqual(criteria, {})) {\n return null;\n } // Build the wrapped filter test function, passing the criteria to the provided function\n\n\n var fn = function fn(item) {\n // Generated function returns true if the criteria matches part\n // of the serialized data, otherwise false\n return filterFn(item, criteria);\n }; // Return the wrapped function\n\n\n return fn;\n },\n defaultFilterFnFactory: function defaultFilterFnFactory(criteria) {\n var _this3 = this;\n\n // Generates the default filter function, using the given filter criteria\n // Returns `null` if no criteria or criteria format not supported\n if (!criteria || !(isString(criteria) || isRegExp(criteria))) {\n // Built in filter can only support strings or RegExp criteria (at the moment)\n return null;\n } // Build the RegExp needed for filtering\n\n\n var regExp = criteria;\n\n if (isString(regExp)) {\n // Escape special RegExp characters in the string and convert contiguous\n // whitespace to \\s+ matches\n var pattern = escapeRegExp(criteria).replace(RX_SPACES, '\\\\s+'); // Build the RegExp (no need for global flag, as we only need\n // to find the value once in the string)\n\n regExp = new RegExp(\".*\".concat(pattern, \".*\"), 'i');\n } // Generate the wrapped filter test function to use\n\n\n var fn = function fn(item) {\n // This searches all row values (and sub property values) in the entire (excluding\n // special `_` prefixed keys), because we convert the record to a space-separated\n // string containing all the value properties (recursively), even ones that are\n // not visible (not specified in this.fields)\n // Users can ignore filtering on specific fields, or on only certain fields,\n // and can optionall specify searching results of fields with formatter\n //\n // TODO: Enable searching on scoped slots (optional, as it will be SLOW)\n //\n // Generated function returns true if the criteria matches part of\n // the serialized data, otherwise false\n //\n // We set `lastIndex = 0` on the `RegExp` in case someone specifies the `/g` global flag\n regExp.lastIndex = 0;\n return regExp.test(stringifyRecordValues(item, _this3.computedFilterIgnored, _this3.computedFilterIncluded, _this3.computedFieldsObj));\n }; // Return the generated function\n\n\n return fn;\n }\n }\n});","import { Vue } from '../../../vue';\nimport { PROP_TYPE_NUMBER_STRING } from '../../../constants/props';\nimport { mathMax } from '../../../utils/math';\nimport { toInteger } from '../../../utils/number';\nimport { makeProp } from '../../../utils/props'; // --- Props ---\n\nexport var props = {\n currentPage: makeProp(PROP_TYPE_NUMBER_STRING, 1),\n perPage: makeProp(PROP_TYPE_NUMBER_STRING, 0)\n}; // --- Mixin ---\n// @vue/component\n\nexport var paginationMixin = Vue.extend({\n props: props,\n computed: {\n localPaging: function localPaging() {\n return this.hasProvider ? !!this.noProviderPaging : true;\n },\n paginatedItems: function paginatedItems() {\n var items = this.sortedItems || this.filteredItems || this.localItems || [];\n var currentPage = mathMax(toInteger(this.currentPage, 1), 1);\n var perPage = mathMax(toInteger(this.perPage, 0), 0); // Apply local pagination\n\n if (this.localPaging && perPage) {\n // Grab the current page of data (which may be past filtered items limit)\n items = items.slice((currentPage - 1) * perPage, currentPage * perPage);\n } // Return the items to display in the table\n\n\n return items;\n }\n }\n});","import { Vue } from '../../../vue';\nimport { NAME_TABLE } from '../../../constants/components';\nimport { EVENT_NAME_REFRESH, EVENT_NAME_REFRESHED } from '../../../constants/events';\nimport { PROP_TYPE_ARRAY_FUNCTION, PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../../constants/props';\nimport { getRootActionEventName, getRootEventName } from '../../../utils/events';\nimport { isArray, isFunction, isPromise } from '../../../utils/inspect';\nimport { looseEqual } from '../../../utils/loose-equal';\nimport { clone } from '../../../utils/object';\nimport { makeProp } from '../../../utils/props';\nimport { warn } from '../../../utils/warn';\nimport { listenOnRootMixin } from '../../../mixins/listen-on-root'; // --- Constants ---\n\nvar ROOT_EVENT_NAME_REFRESHED = getRootEventName(NAME_TABLE, EVENT_NAME_REFRESHED);\nvar ROOT_ACTION_EVENT_NAME_REFRESH = getRootActionEventName(NAME_TABLE, EVENT_NAME_REFRESH); // --- Props ---\n\nexport var props = {\n // Passed to the context object\n // Not used by `` directly\n apiUrl: makeProp(PROP_TYPE_STRING),\n // Adds in 'Function' support\n items: makeProp(PROP_TYPE_ARRAY_FUNCTION, []),\n noProviderFiltering: makeProp(PROP_TYPE_BOOLEAN, false),\n noProviderPaging: makeProp(PROP_TYPE_BOOLEAN, false),\n noProviderSorting: makeProp(PROP_TYPE_BOOLEAN, false)\n}; // --- Mixin ---\n// @vue/component\n\nexport var providerMixin = Vue.extend({\n mixins: [listenOnRootMixin],\n props: props,\n computed: {\n hasProvider: function hasProvider() {\n return isFunction(this.items);\n },\n providerTriggerContext: function providerTriggerContext() {\n // Used to trigger the provider function via a watcher. Only the fields that\n // are needed for triggering a provider update are included. Note that the\n // regular this.context is sent to the provider during fetches though, as they\n // may need all the prop info.\n var ctx = {\n apiUrl: this.apiUrl,\n filter: null,\n sortBy: null,\n sortDesc: null,\n perPage: null,\n currentPage: null\n };\n\n if (!this.noProviderFiltering) {\n // Either a string, or could be an object or array.\n ctx.filter = this.localFilter;\n }\n\n if (!this.noProviderSorting) {\n ctx.sortBy = this.localSortBy;\n ctx.sortDesc = this.localSortDesc;\n }\n\n if (!this.noProviderPaging) {\n ctx.perPage = this.perPage;\n ctx.currentPage = this.currentPage;\n }\n\n return clone(ctx);\n }\n },\n watch: {\n // Provider update triggering\n items: function items(newValue) {\n // If a new provider has been specified, trigger an update\n if (this.hasProvider || isFunction(newValue)) {\n this.$nextTick(this._providerUpdate);\n }\n },\n providerTriggerContext: function providerTriggerContext(newValue, oldValue) {\n // Trigger the provider to update as the relevant context values have changed.\n if (!looseEqual(newValue, oldValue)) {\n this.$nextTick(this._providerUpdate);\n }\n }\n },\n mounted: function mounted() {\n var _this = this;\n\n // Call the items provider if necessary\n if (this.hasProvider && (!this.localItems || this.localItems.length === 0)) {\n // Fetch on mount if localItems is empty\n this._providerUpdate();\n } // Listen for global messages to tell us to force refresh the table\n\n\n this.listenOnRoot(ROOT_ACTION_EVENT_NAME_REFRESH, function (id) {\n if (id === _this.id || id === _this) {\n _this.refresh();\n }\n });\n },\n methods: {\n refresh: function refresh() {\n var items = this.items,\n refresh = this.refresh; // Public Method: Force a refresh of the provider function\n\n this.$off(EVENT_NAME_REFRESHED, refresh);\n\n if (this.computedBusy) {\n // Can't force an update when forced busy by user (busy prop === true)\n if (this.localBusy && this.hasProvider) {\n // But if provider running (localBusy), re-schedule refresh once `refreshed` emitted\n this.$on(EVENT_NAME_REFRESHED, refresh);\n }\n } else {\n this.clearSelected();\n\n if (this.hasProvider) {\n this.$nextTick(this._providerUpdate);\n } else {\n /* istanbul ignore next */\n this.localItems = isArray(items) ? items.slice() : [];\n }\n }\n },\n // Provider related methods\n _providerSetLocal: function _providerSetLocal(items) {\n this.localItems = isArray(items) ? items.slice() : [];\n this.localBusy = false;\n this.$emit(EVENT_NAME_REFRESHED); // New root emit\n\n if (this.id) {\n this.emitOnRoot(ROOT_EVENT_NAME_REFRESHED, this.id);\n }\n },\n _providerUpdate: function _providerUpdate() {\n var _this2 = this;\n\n // Refresh the provider function items.\n if (!this.hasProvider) {\n // Do nothing if no provider\n return;\n } // If table is busy, wait until refreshed before calling again\n\n\n if (this.computedBusy) {\n // Schedule a new refresh once `refreshed` is emitted\n this.$nextTick(this.refresh);\n return;\n } // Set internal busy state\n\n\n this.localBusy = true; // Call provider function with context and optional callback after DOM is fully updated\n\n this.$nextTick(function () {\n try {\n // Call provider function passing it the context and optional callback\n var data = _this2.items(_this2.context, _this2._providerSetLocal);\n\n if (isPromise(data)) {\n // Provider returned Promise\n data.then(function (items) {\n // Provider resolved with items\n _this2._providerSetLocal(items);\n });\n } else if (isArray(data)) {\n // Provider returned Array data\n _this2._providerSetLocal(data);\n } else {\n /* istanbul ignore if */\n if (_this2.items.length !== 2) {\n // Check number of arguments provider function requested\n // Provider not using callback (didn't request second argument), so we clear\n // busy state as most likely there was an error in the provider function\n\n /* istanbul ignore next */\n warn(\"Provider function didn't request callback and did not return a promise or data.\", NAME_TABLE);\n _this2.localBusy = false;\n }\n }\n } catch (e)\n /* istanbul ignore next */\n {\n // Provider function borked on us, so we spew out a warning\n // and clear the busy state\n warn(\"Provider function error [\".concat(e.name, \"] \").concat(e.message, \".\"), NAME_TABLE);\n _this2.localBusy = false;\n\n _this2.$off(EVENT_NAME_REFRESHED, _this2.refresh);\n }\n });\n }\n }\n});","function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue } from '../../../vue';\nimport { EVENT_NAME_CONTEXT_CHANGED, EVENT_NAME_FILTERED, EVENT_NAME_ROW_CLICKED, EVENT_NAME_ROW_SELECTED } from '../../../constants/events';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../../constants/props';\nimport { arrayIncludes, createArray } from '../../../utils/array';\nimport { identity } from '../../../utils/identity';\nimport { isArray, isNumber } from '../../../utils/inspect';\nimport { looseEqual } from '../../../utils/loose-equal';\nimport { mathMax, mathMin } from '../../../utils/math';\nimport { makeProp } from '../../../utils/props';\nimport { sanitizeRow } from './sanitize-row'; // --- Constants ---\n\nvar SELECT_MODES = ['range', 'multi', 'single']; // --- Props ---\n\nexport var props = {\n // Disable use of click handlers for row selection\n noSelectOnClick: makeProp(PROP_TYPE_BOOLEAN, false),\n selectMode: makeProp(PROP_TYPE_STRING, 'multi', function (value) {\n return arrayIncludes(SELECT_MODES, value);\n }),\n selectable: makeProp(PROP_TYPE_BOOLEAN, false),\n selectedVariant: makeProp(PROP_TYPE_STRING, 'active')\n}; // --- Mixin ---\n// @vue/component\n\nexport var selectableMixin = Vue.extend({\n props: props,\n data: function data() {\n return {\n selectedRows: [],\n selectedLastRow: -1\n };\n },\n computed: {\n isSelectable: function isSelectable() {\n return this.selectable && this.selectMode;\n },\n hasSelectableRowClick: function hasSelectableRowClick() {\n return this.isSelectable && !this.noSelectOnClick;\n },\n supportsSelectableRows: function supportsSelectableRows() {\n return true;\n },\n selectableHasSelection: function selectableHasSelection() {\n var selectedRows = this.selectedRows;\n return this.isSelectable && selectedRows && selectedRows.length > 0 && selectedRows.some(identity);\n },\n selectableIsMultiSelect: function selectableIsMultiSelect() {\n return this.isSelectable && arrayIncludes(['range', 'multi'], this.selectMode);\n },\n selectableTableClasses: function selectableTableClasses() {\n var _ref;\n\n var isSelectable = this.isSelectable;\n return _ref = {\n 'b-table-selectable': isSelectable\n }, _defineProperty(_ref, \"b-table-select-\".concat(this.selectMode), isSelectable), _defineProperty(_ref, 'b-table-selecting', this.selectableHasSelection), _defineProperty(_ref, 'b-table-selectable-no-click', isSelectable && !this.hasSelectableRowClick), _ref;\n },\n selectableTableAttrs: function selectableTableAttrs() {\n return {\n // TODO:\n // Should this attribute not be included when no-select-on-click is set\n // since this attribute implies keyboard navigation?\n 'aria-multiselectable': !this.isSelectable ? null : this.selectableIsMultiSelect ? 'true' : 'false'\n };\n }\n },\n watch: {\n computedItems: function computedItems(newValue, oldValue) {\n // Reset for selectable\n var equal = false;\n\n if (this.isSelectable && this.selectedRows.length > 0) {\n // Quick check against array length\n equal = isArray(newValue) && isArray(oldValue) && newValue.length === oldValue.length;\n\n for (var i = 0; equal && i < newValue.length; i++) {\n // Look for the first non-loosely equal row, after ignoring reserved fields\n equal = looseEqual(sanitizeRow(newValue[i]), sanitizeRow(oldValue[i]));\n }\n }\n\n if (!equal) {\n this.clearSelected();\n }\n },\n selectable: function selectable(newValue) {\n this.clearSelected();\n this.setSelectionHandlers(newValue);\n },\n selectMode: function selectMode() {\n this.clearSelected();\n },\n hasSelectableRowClick: function hasSelectableRowClick(newValue) {\n this.clearSelected();\n this.setSelectionHandlers(!newValue);\n },\n selectedRows: function selectedRows(_selectedRows, oldValue) {\n var _this = this;\n\n if (this.isSelectable && !looseEqual(_selectedRows, oldValue)) {\n var items = []; // `.forEach()` skips over non-existent indices (on sparse arrays)\n\n _selectedRows.forEach(function (v, idx) {\n if (v) {\n items.push(_this.computedItems[idx]);\n }\n });\n\n this.$emit(EVENT_NAME_ROW_SELECTED, items);\n }\n }\n },\n beforeMount: function beforeMount() {\n // Set up handlers if needed\n if (this.isSelectable) {\n this.setSelectionHandlers(true);\n }\n },\n methods: {\n // Public methods\n selectRow: function selectRow(index) {\n // Select a particular row (indexed based on computedItems)\n if (this.isSelectable && isNumber(index) && index >= 0 && index < this.computedItems.length && !this.isRowSelected(index)) {\n var selectedRows = this.selectableIsMultiSelect ? this.selectedRows.slice() : [];\n selectedRows[index] = true;\n this.selectedLastClicked = -1;\n this.selectedRows = selectedRows;\n }\n },\n unselectRow: function unselectRow(index) {\n // Un-select a particular row (indexed based on `computedItems`)\n if (this.isSelectable && isNumber(index) && this.isRowSelected(index)) {\n var selectedRows = this.selectedRows.slice();\n selectedRows[index] = false;\n this.selectedLastClicked = -1;\n this.selectedRows = selectedRows;\n }\n },\n selectAllRows: function selectAllRows() {\n var length = this.computedItems.length;\n\n if (this.isSelectable && length > 0) {\n this.selectedLastClicked = -1;\n this.selectedRows = this.selectableIsMultiSelect ? createArray(length, true) : [true];\n }\n },\n isRowSelected: function isRowSelected(index) {\n // Determine if a row is selected (indexed based on `computedItems`)\n return !!(isNumber(index) && this.selectedRows[index]);\n },\n clearSelected: function clearSelected() {\n // Clear any active selected row(s)\n this.selectedLastClicked = -1;\n this.selectedRows = [];\n },\n // Internal private methods\n selectableRowClasses: function selectableRowClasses(index) {\n if (this.isSelectable && this.isRowSelected(index)) {\n var variant = this.selectedVariant;\n return _defineProperty({\n 'b-table-row-selected': true\n }, \"\".concat(this.dark ? 'bg' : 'table', \"-\").concat(variant), variant);\n }\n\n return {};\n },\n selectableRowAttrs: function selectableRowAttrs(index) {\n return {\n 'aria-selected': !this.isSelectable ? null : this.isRowSelected(index) ? 'true' : 'false'\n };\n },\n setSelectionHandlers: function setSelectionHandlers(on) {\n var method = on && !this.noSelectOnClick ? '$on' : '$off'; // Handle row-clicked event\n\n this[method](EVENT_NAME_ROW_CLICKED, this.selectionHandler); // Clear selection on filter, pagination, and sort changes\n\n this[method](EVENT_NAME_FILTERED, this.clearSelected);\n this[method](EVENT_NAME_CONTEXT_CHANGED, this.clearSelected);\n },\n selectionHandler: function selectionHandler(item, index, event) {\n /* istanbul ignore if: should never happen */\n if (!this.isSelectable || this.noSelectOnClick) {\n // Don't do anything if table is not in selectable mode\n this.clearSelected();\n return;\n }\n\n var selectMode = this.selectMode,\n selectedLastRow = this.selectedLastRow;\n var selectedRows = this.selectedRows.slice();\n var selected = !selectedRows[index]; // Note 'multi' mode needs no special event handling\n\n if (selectMode === 'single') {\n selectedRows = [];\n } else if (selectMode === 'range') {\n if (selectedLastRow > -1 && event.shiftKey) {\n // range\n for (var idx = mathMin(selectedLastRow, index); idx <= mathMax(selectedLastRow, index); idx++) {\n selectedRows[idx] = true;\n }\n\n selected = true;\n } else {\n if (!(event.ctrlKey || event.metaKey)) {\n // Clear range selection if any\n selectedRows = [];\n selected = true;\n }\n\n this.selectedLastRow = selected ? index : -1;\n }\n }\n\n selectedRows[index] = selected;\n this.selectedRows = selectedRows;\n }\n }\n});","var _props, _watch;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue } from '../../../vue';\nimport { EVENT_NAME_HEAD_CLICKED, EVENT_NAME_SORT_CHANGED, MODEL_EVENT_NAME_PREFIX } from '../../../constants/events';\nimport { PROP_TYPE_ARRAY_STRING, PROP_TYPE_BOOLEAN, PROP_TYPE_FUNCTION, PROP_TYPE_OBJECT, PROP_TYPE_STRING } from '../../../constants/props';\nimport { arrayIncludes } from '../../../utils/array';\nimport { isFunction, isUndefinedOrNull } from '../../../utils/inspect';\nimport { makeProp } from '../../../utils/props';\nimport { stableSort } from '../../../utils/stable-sort';\nimport { trim } from '../../../utils/string';\nimport { defaultSortCompare } from './default-sort-compare'; // --- Constants ---\n\nvar MODEL_PROP_NAME_SORT_BY = 'sortBy';\nvar MODEL_EVENT_NAME_SORT_BY = MODEL_EVENT_NAME_PREFIX + MODEL_PROP_NAME_SORT_BY;\nvar MODEL_PROP_NAME_SORT_DESC = 'sortDesc';\nvar MODEL_EVENT_NAME_SORT_DESC = MODEL_EVENT_NAME_PREFIX + MODEL_PROP_NAME_SORT_DESC;\nvar SORT_DIRECTION_ASC = 'asc';\nvar SORT_DIRECTION_DESC = 'desc';\nvar SORT_DIRECTION_LAST = 'last';\nvar SORT_DIRECTIONS = [SORT_DIRECTION_ASC, SORT_DIRECTION_DESC, SORT_DIRECTION_LAST]; // --- Props ---\n\nexport var props = (_props = {\n labelSortAsc: makeProp(PROP_TYPE_STRING, 'Click to sort Ascending'),\n labelSortClear: makeProp(PROP_TYPE_STRING, 'Click to clear sorting'),\n labelSortDesc: makeProp(PROP_TYPE_STRING, 'Click to sort Descending'),\n noFooterSorting: makeProp(PROP_TYPE_BOOLEAN, false),\n noLocalSorting: makeProp(PROP_TYPE_BOOLEAN, false),\n // Another prop that should have had a better name\n // It should be `noSortClear` (on non-sortable headers)\n // We will need to make sure the documentation is clear on what\n // this prop does (as well as in the code for future reference)\n noSortReset: makeProp(PROP_TYPE_BOOLEAN, false)\n}, _defineProperty(_props, MODEL_PROP_NAME_SORT_BY, makeProp(PROP_TYPE_STRING)), _defineProperty(_props, \"sortCompare\", makeProp(PROP_TYPE_FUNCTION)), _defineProperty(_props, \"sortCompareLocale\", makeProp(PROP_TYPE_ARRAY_STRING)), _defineProperty(_props, \"sortCompareOptions\", makeProp(PROP_TYPE_OBJECT, {\n numeric: true\n})), _defineProperty(_props, MODEL_PROP_NAME_SORT_DESC, makeProp(PROP_TYPE_BOOLEAN, false)), _defineProperty(_props, \"sortDirection\", makeProp(PROP_TYPE_STRING, SORT_DIRECTION_ASC, function (value) {\n return arrayIncludes(SORT_DIRECTIONS, value);\n})), _defineProperty(_props, \"sortIconLeft\", makeProp(PROP_TYPE_BOOLEAN, false)), _defineProperty(_props, \"sortNullLast\", makeProp(PROP_TYPE_BOOLEAN, false)), _props); // --- Mixin ---\n// @vue/component\n\nexport var sortingMixin = Vue.extend({\n props: props,\n data: function data() {\n return {\n localSortBy: this[MODEL_PROP_NAME_SORT_BY] || '',\n localSortDesc: this[MODEL_PROP_NAME_SORT_DESC] || false\n };\n },\n computed: {\n localSorting: function localSorting() {\n return this.hasProvider ? !!this.noProviderSorting : !this.noLocalSorting;\n },\n isSortable: function isSortable() {\n return this.computedFields.some(function (f) {\n return f.sortable;\n });\n },\n // Sorts the filtered items and returns a new array of the sorted items\n // When not sorted, the original items array will be returned\n sortedItems: function sortedItems() {\n var sortBy = this.localSortBy,\n sortDesc = this.localSortDesc,\n locale = this.sortCompareLocale,\n nullLast = this.sortNullLast,\n sortCompare = this.sortCompare,\n localSorting = this.localSorting;\n var items = (this.filteredItems || this.localItems || []).slice();\n\n var localeOptions = _objectSpread(_objectSpread({}, this.sortCompareOptions), {}, {\n usage: 'sort'\n });\n\n if (sortBy && localSorting) {\n var field = this.computedFieldsObj[sortBy] || {};\n var sortByFormatted = field.sortByFormatted;\n var formatter = isFunction(sortByFormatted) ?\n /* istanbul ignore next */\n sortByFormatted : sortByFormatted ? this.getFieldFormatter(sortBy) : undefined; // `stableSort` returns a new array, and leaves the original array intact\n\n return stableSort(items, function (a, b) {\n var result = null; // Call user provided `sortCompare` routine first\n\n if (isFunction(sortCompare)) {\n // TODO:\n // Change the `sortCompare` signature to the one of `defaultSortCompare`\n // with the next major version bump\n result = sortCompare(a, b, sortBy, sortDesc, formatter, localeOptions, locale);\n } // Fallback to built-in `defaultSortCompare` if `sortCompare`\n // is not defined or returns `null`/`false`\n\n\n if (isUndefinedOrNull(result) || result === false) {\n result = defaultSortCompare(a, b, {\n sortBy: sortBy,\n formatter: formatter,\n locale: locale,\n localeOptions: localeOptions,\n nullLast: nullLast\n });\n } // Negate result if sorting in descending order\n\n\n return (result || 0) * (sortDesc ? -1 : 1);\n });\n }\n\n return items;\n }\n },\n watch: (_watch = {\n /* istanbul ignore next: pain in the butt to test */\n isSortable: function isSortable(newValue) {\n if (newValue) {\n if (this.isSortable) {\n this.$on(EVENT_NAME_HEAD_CLICKED, this.handleSort);\n }\n } else {\n this.$off(EVENT_NAME_HEAD_CLICKED, this.handleSort);\n }\n }\n }, _defineProperty(_watch, MODEL_PROP_NAME_SORT_DESC, function (newValue) {\n /* istanbul ignore next */\n if (newValue === this.localSortDesc) {\n return;\n }\n\n this.localSortDesc = newValue || false;\n }), _defineProperty(_watch, MODEL_PROP_NAME_SORT_BY, function (newValue) {\n /* istanbul ignore next */\n if (newValue === this.localSortBy) {\n return;\n }\n\n this.localSortBy = newValue || '';\n }), _defineProperty(_watch, \"localSortDesc\", function localSortDesc(newValue, oldValue) {\n // Emit update to sort-desc.sync\n if (newValue !== oldValue) {\n this.$emit(MODEL_EVENT_NAME_SORT_DESC, newValue);\n }\n }), _defineProperty(_watch, \"localSortBy\", function localSortBy(newValue, oldValue) {\n if (newValue !== oldValue) {\n this.$emit(MODEL_EVENT_NAME_SORT_BY, newValue);\n }\n }), _watch),\n created: function created() {\n if (this.isSortable) {\n this.$on(EVENT_NAME_HEAD_CLICKED, this.handleSort);\n }\n },\n methods: {\n // Handlers\n // Need to move from thead-mixin\n handleSort: function handleSort(key, field, event, isFoot) {\n var _this = this;\n\n if (!this.isSortable) {\n /* istanbul ignore next */\n return;\n }\n\n if (isFoot && this.noFooterSorting) {\n return;\n } // TODO: make this tri-state sorting\n // cycle desc => asc => none => desc => ...\n\n\n var sortChanged = false;\n\n var toggleLocalSortDesc = function toggleLocalSortDesc() {\n var sortDirection = field.sortDirection || _this.sortDirection;\n\n if (sortDirection === SORT_DIRECTION_ASC) {\n _this.localSortDesc = false;\n } else if (sortDirection === SORT_DIRECTION_DESC) {\n _this.localSortDesc = true;\n } else {// sortDirection === 'last'\n // Leave at last sort direction from previous column\n }\n };\n\n if (field.sortable) {\n var sortKey = !this.localSorting && field.sortKey ? field.sortKey : key;\n\n if (this.localSortBy === sortKey) {\n // Change sorting direction on current column\n this.localSortDesc = !this.localSortDesc;\n } else {\n // Start sorting this column ascending\n this.localSortBy = sortKey; // this.localSortDesc = false\n\n toggleLocalSortDesc();\n }\n\n sortChanged = true;\n } else if (this.localSortBy && !this.noSortReset) {\n this.localSortBy = '';\n toggleLocalSortDesc();\n sortChanged = true;\n }\n\n if (sortChanged) {\n // Sorting parameters changed\n this.$emit(EVENT_NAME_SORT_CHANGED, this.context);\n }\n },\n // methods to compute classes and attrs for thead>th cells\n sortTheadThClasses: function sortTheadThClasses(key, field, isFoot) {\n return {\n // If sortable and sortIconLeft are true, then place sort icon on the left\n 'b-table-sort-icon-left': field.sortable && this.sortIconLeft && !(isFoot && this.noFooterSorting)\n };\n },\n sortTheadThAttrs: function sortTheadThAttrs(key, field, isFoot) {\n if (!this.isSortable || isFoot && this.noFooterSorting) {\n // No attributes if not a sortable table\n return {};\n }\n\n var sortable = field.sortable; // Assemble the aria-sort attribute value\n\n var ariaSort = sortable && this.localSortBy === key ? this.localSortDesc ? 'descending' : 'ascending' : sortable ? 'none' : null; // Return the attribute\n\n return {\n 'aria-sort': ariaSort\n };\n },\n sortTheadThLabel: function sortTheadThLabel(key, field, isFoot) {\n // A label to be placed in an `.sr-only` element in the header cell\n if (!this.isSortable || isFoot && this.noFooterSorting) {\n // No label if not a sortable table\n return null;\n }\n\n var sortable = field.sortable; // The correctness of these labels is very important for screen-reader users.\n\n var labelSorting = '';\n\n if (sortable) {\n if (this.localSortBy === key) {\n // currently sorted sortable column.\n labelSorting = this.localSortDesc ? this.labelSortAsc : this.labelSortDesc;\n } else {\n // Not currently sorted sortable column.\n // Not using nested ternary's here for clarity/readability\n // Default for ariaLabel\n labelSorting = this.localSortDesc ? this.labelSortDesc : this.labelSortAsc; // Handle sortDirection setting\n\n var sortDirection = this.sortDirection || field.sortDirection;\n\n if (sortDirection === SORT_DIRECTION_ASC) {\n labelSorting = this.labelSortAsc;\n } else if (sortDirection === SORT_DIRECTION_DESC) {\n labelSorting = this.labelSortDesc;\n }\n }\n } else if (!this.noSortReset) {\n // Non sortable column\n labelSorting = this.localSortBy ? this.labelSortClear : '';\n } // Return the sr-only sort label or null if no label\n\n\n return trim(labelSorting) || null;\n }\n }\n});","import { get } from '../../../utils/get';\nimport { isDate, isFunction, isNumber, isNumeric, isUndefinedOrNull } from '../../../utils/inspect';\nimport { toFloat } from '../../../utils/number';\nimport { stringifyObjectValues } from '../../../utils/stringify-object-values';\n\nvar normalizeValue = function normalizeValue(value) {\n if (isUndefinedOrNull(value)) {\n return '';\n }\n\n if (isNumeric(value)) {\n return toFloat(value, value);\n }\n\n return value;\n}; // Default sort compare routine\n//\n// TODO:\n// Add option to sort by multiple columns (tri-state per column,\n// plus order of columns in sort) where `sortBy` could be an array\n// of objects `[ {key: 'foo', sortDir: 'asc'}, {key:'bar', sortDir: 'desc'} ...]`\n// or an array of arrays `[ ['foo','asc'], ['bar','desc'] ]`\n// Multisort will most likely be handled in `mixin-sort.js` by\n// calling this method for each sortBy\n\n\nexport var defaultSortCompare = function defaultSortCompare(a, b) {\n var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},\n _ref$sortBy = _ref.sortBy,\n sortBy = _ref$sortBy === void 0 ? null : _ref$sortBy,\n _ref$formatter = _ref.formatter,\n formatter = _ref$formatter === void 0 ? null : _ref$formatter,\n _ref$locale = _ref.locale,\n locale = _ref$locale === void 0 ? undefined : _ref$locale,\n _ref$localeOptions = _ref.localeOptions,\n localeOptions = _ref$localeOptions === void 0 ? {} : _ref$localeOptions,\n _ref$nullLast = _ref.nullLast,\n nullLast = _ref$nullLast === void 0 ? false : _ref$nullLast;\n\n // Get the value by `sortBy`\n var aa = get(a, sortBy, null);\n var bb = get(b, sortBy, null); // Apply user-provided formatter\n\n if (isFunction(formatter)) {\n aa = formatter(aa, sortBy, a);\n bb = formatter(bb, sortBy, b);\n } // Internally normalize value\n // `null` / `undefined` => ''\n // `'0'` => `0`\n\n\n aa = normalizeValue(aa);\n bb = normalizeValue(bb);\n\n if (isDate(aa) && isDate(bb) || isNumber(aa) && isNumber(bb)) {\n // Special case for comparing dates and numbers\n // Internally dates are compared via their epoch number values\n return aa < bb ? -1 : aa > bb ? 1 : 0;\n } else if (nullLast && aa === '' && bb !== '') {\n // Special case when sorting `null` / `undefined` / '' last\n return 1;\n } else if (nullLast && aa !== '' && bb === '') {\n // Special case when sorting `null` / `undefined` / '' last\n return -1;\n } // Do localized string comparison\n\n\n return stringifyObjectValues(aa).localeCompare(stringifyObjectValues(bb), locale, localeOptions);\n};","import { Vue } from '../../../vue';\nimport { SLOT_NAME_TOP_ROW } from '../../../constants/slots';\nimport { isFunction } from '../../../utils/inspect';\nimport { BTr } from '../tr'; // --- Props ---\n\nexport var props = {}; // --- Mixin ---\n// @vue/component\n\nexport var topRowMixin = Vue.extend({\n methods: {\n renderTopRow: function renderTopRow() {\n var fields = this.computedFields,\n stacked = this.stacked,\n tbodyTrClass = this.tbodyTrClass,\n tbodyTrAttr = this.tbodyTrAttr;\n var h = this.$createElement; // Add static Top Row slot (hidden in visibly stacked mode as we can't control the data-label)\n // If in *always* stacked mode, we don't bother rendering the row\n\n if (!this.hasNormalizedSlot(SLOT_NAME_TOP_ROW) || stacked === true || stacked === '') {\n return h();\n }\n\n return h(BTr, {\n staticClass: 'b-table-top-row',\n class: [isFunction(tbodyTrClass) ? tbodyTrClass(null, 'row-top') : tbodyTrClass],\n attrs: isFunction(tbodyTrAttr) ? tbodyTrAttr(null, 'row-top') : tbodyTrAttr,\n key: 'b-top-row'\n }, [this.normalizeSlot(SLOT_NAME_TOP_ROW, {\n columns: fields.length,\n fields: fields\n })]);\n }\n }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue } from '../../vue';\nimport { NAME_TABLE } from '../../constants/components';\nimport { sortKeys } from '../../utils/object';\nimport { makePropsConfigurable } from '../../utils/props';\nimport { attrsMixin } from '../../mixins/attrs';\nimport { hasListenerMixin } from '../../mixins/has-listener';\nimport { idMixin, props as idProps } from '../../mixins/id';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { bottomRowMixin, props as bottomRowProps } from './helpers/mixin-bottom-row';\nimport { busyMixin, props as busyProps } from './helpers/mixin-busy';\nimport { captionMixin, props as captionProps } from './helpers/mixin-caption';\nimport { colgroupMixin, props as colgroupProps } from './helpers/mixin-colgroup';\nimport { emptyMixin, props as emptyProps } from './helpers/mixin-empty';\nimport { filteringMixin, props as filteringProps } from './helpers/mixin-filtering';\nimport { itemsMixin, props as itemsProps } from './helpers/mixin-items';\nimport { paginationMixin, props as paginationProps } from './helpers/mixin-pagination';\nimport { providerMixin, props as providerProps } from './helpers/mixin-provider';\nimport { selectableMixin, props as selectableProps } from './helpers/mixin-selectable';\nimport { sortingMixin, props as sortingProps } from './helpers/mixin-sorting';\nimport { stackedMixin, props as stackedProps } from './helpers/mixin-stacked';\nimport { tableRendererMixin, props as tableRendererProps } from './helpers/mixin-table-renderer';\nimport { tbodyMixin, props as tbodyProps } from './helpers/mixin-tbody';\nimport { tfootMixin, props as tfootProps } from './helpers/mixin-tfoot';\nimport { theadMixin, props as theadProps } from './helpers/mixin-thead';\nimport { topRowMixin, props as topRowProps } from './helpers/mixin-top-row'; // --- Props ---\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, idProps), bottomRowProps), busyProps), captionProps), colgroupProps), emptyProps), filteringProps), itemsProps), paginationProps), providerProps), selectableProps), sortingProps), stackedProps), tableRendererProps), tbodyProps), tfootProps), theadProps), topRowProps)), NAME_TABLE); // --- Main component ---\n// @vue/component\n\nexport var BTable = /*#__PURE__*/Vue.extend({\n name: NAME_TABLE,\n // Order of mixins is important!\n // They are merged from first to last, followed by this component\n mixins: [// General mixins\n attrsMixin, hasListenerMixin, idMixin, normalizeSlotMixin, // Required table mixins\n itemsMixin, tableRendererMixin, stackedMixin, theadMixin, tfootMixin, tbodyMixin, // Table features mixins\n stackedMixin, filteringMixin, sortingMixin, paginationMixin, captionMixin, colgroupMixin, selectableMixin, emptyMixin, topRowMixin, bottomRowMixin, busyMixin, providerMixin],\n props: props // Render function is provided by `tableRendererMixin`\n\n});","/*\n * Consistent and stable sort function across JavaScript platforms\n *\n * Inconsistent sorts can cause SSR problems between client and server\n * such as in if sortBy is applied to the data on server side render.\n * Chrome and V8 native sorts are inconsistent/unstable\n *\n * This function uses native sort with fallback to index compare when the a and b\n * compare returns 0\n *\n * Algorithm based on:\n * https://stackoverflow.com/questions/1427608/fast-stable-sorting-algorithm-implementation-in-javascript/45422645#45422645\n *\n * @param {array} array to sort\n * @param {function} sort compare function\n * @return {array}\n */\nexport var stableSort = function stableSort(array, compareFn) {\n // Using `.bind(compareFn)` on the wrapped anonymous function improves\n // performance by avoiding the function call setup. We don't use an arrow\n // function here as it binds `this` to the `stableSort` context rather than\n // the `compareFn` context, which wouldn't give us the performance increase.\n return array.map(function (a, index) {\n return [index, a];\n }).sort(function (a, b) {\n return this(a[1], b[1]) || a[0] - b[0];\n }.bind(compareFn)).map(function (e) {\n return e[1];\n });\n};","var _watch;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue } from '../vue';\nimport { NAME_PAGINATION } from '../constants/components';\nimport { CODE_DOWN, CODE_LEFT, CODE_RIGHT, CODE_SPACE, CODE_UP } from '../constants/key-codes';\nimport { PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_BOOLEAN, PROP_TYPE_BOOLEAN_NUMBER_STRING, PROP_TYPE_FUNCTION_STRING, PROP_TYPE_NUMBER_STRING, PROP_TYPE_STRING } from '../constants/props';\nimport { SLOT_NAME_ELLIPSIS_TEXT, SLOT_NAME_FIRST_TEXT, SLOT_NAME_LAST_TEXT, SLOT_NAME_NEXT_TEXT, SLOT_NAME_PAGE, SLOT_NAME_PREV_TEXT } from '../constants/slots';\nimport { createArray } from '../utils/array';\nimport { attemptFocus, getActiveElement, getAttr, isDisabled, isVisible, selectAll } from '../utils/dom';\nimport { stopEvent } from '../utils/events';\nimport { isFunction, isNull } from '../utils/inspect';\nimport { mathFloor, mathMax, mathMin } from '../utils/math';\nimport { makeModelMixin } from '../utils/model';\nimport { toInteger } from '../utils/number';\nimport { sortKeys } from '../utils/object';\nimport { hasPropFunction, makeProp, makePropsConfigurable } from '../utils/props';\nimport { toString } from '../utils/string';\nimport { warn } from '../utils/warn';\nimport { normalizeSlotMixin } from '../mixins/normalize-slot';\nimport { BLink } from '../components/link/link'; // Common props, computed, data, render function, and methods\n// for `` and ``\n// --- Constants ---\n\nvar _makeModelMixin = makeModelMixin('value', {\n type: PROP_TYPE_BOOLEAN_NUMBER_STRING,\n defaultValue: null,\n\n /* istanbul ignore next */\n validator: function validator(value) {\n if (!isNull(value) && toInteger(value, 0) < 1) {\n warn('\"v-model\" value must be a number greater than \"0\"', NAME_PAGINATION);\n return false;\n }\n\n return true;\n }\n}),\n modelMixin = _makeModelMixin.mixin,\n modelProps = _makeModelMixin.props,\n MODEL_PROP_NAME = _makeModelMixin.prop,\n MODEL_EVENT_NAME = _makeModelMixin.event;\n\nexport { MODEL_PROP_NAME, MODEL_EVENT_NAME }; // Threshold of limit size when we start/stop showing ellipsis\n\nvar ELLIPSIS_THRESHOLD = 3; // Default # of buttons limit\n\nvar DEFAULT_LIMIT = 5; // --- Helper methods ---\n// Make an array of N to N+X\n\nvar makePageArray = function makePageArray(startNumber, numberOfPages) {\n return createArray(numberOfPages, function (_, i) {\n return {\n number: startNumber + i,\n classes: null\n };\n });\n}; // Sanitize the provided limit value (converting to a number)\n\n\nvar sanitizeLimit = function sanitizeLimit(value) {\n var limit = toInteger(value) || 1;\n return limit < 1 ? DEFAULT_LIMIT : limit;\n}; // Sanitize the provided current page number (converting to a number)\n\n\nvar sanitizeCurrentPage = function sanitizeCurrentPage(val, numberOfPages) {\n var page = toInteger(val) || 1;\n return page > numberOfPages ? numberOfPages : page < 1 ? 1 : page;\n}; // Links don't normally respond to SPACE, so we add that\n// functionality via this handler\n\n\nvar onSpaceKey = function onSpaceKey(event) {\n if (event.keyCode === CODE_SPACE) {\n // Stop page from scrolling\n stopEvent(event, {\n immediatePropagation: true\n }); // Trigger the click event on the link\n\n event.currentTarget.click();\n return false;\n }\n}; // --- Props ---\n\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, modelProps), {}, {\n align: makeProp(PROP_TYPE_STRING, 'left'),\n ariaLabel: makeProp(PROP_TYPE_STRING, 'Pagination'),\n disabled: makeProp(PROP_TYPE_BOOLEAN, false),\n ellipsisClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n ellipsisText: makeProp(PROP_TYPE_STRING, \"\\u2026\"),\n // '…'\n firstClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n firstNumber: makeProp(PROP_TYPE_BOOLEAN, false),\n firstText: makeProp(PROP_TYPE_STRING, \"\\xAB\"),\n // '«'\n hideEllipsis: makeProp(PROP_TYPE_BOOLEAN, false),\n hideGotoEndButtons: makeProp(PROP_TYPE_BOOLEAN, false),\n labelFirstPage: makeProp(PROP_TYPE_STRING, 'Go to first page'),\n labelLastPage: makeProp(PROP_TYPE_STRING, 'Go to last page'),\n labelNextPage: makeProp(PROP_TYPE_STRING, 'Go to next page'),\n labelPage: makeProp(PROP_TYPE_FUNCTION_STRING, 'Go to page'),\n labelPrevPage: makeProp(PROP_TYPE_STRING, 'Go to previous page'),\n lastClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n lastNumber: makeProp(PROP_TYPE_BOOLEAN, false),\n lastText: makeProp(PROP_TYPE_STRING, \"\\xBB\"),\n // '»'\n limit: makeProp(PROP_TYPE_NUMBER_STRING, DEFAULT_LIMIT,\n /* istanbul ignore next */\n function (value) {\n if (toInteger(value, 0) < 1) {\n warn('Prop \"limit\" must be a number greater than \"0\"', NAME_PAGINATION);\n return false;\n }\n\n return true;\n }),\n nextClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n nextText: makeProp(PROP_TYPE_STRING, \"\\u203A\"),\n // '›'\n pageClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n pills: makeProp(PROP_TYPE_BOOLEAN, false),\n prevClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n prevText: makeProp(PROP_TYPE_STRING, \"\\u2039\"),\n // '‹'\n size: makeProp(PROP_TYPE_STRING)\n})), 'pagination'); // --- Mixin ---\n// @vue/component\n\nexport var paginationMixin = Vue.extend({\n mixins: [modelMixin, normalizeSlotMixin],\n props: props,\n data: function data() {\n // `-1` signifies no page initially selected\n var currentPage = toInteger(this[MODEL_PROP_NAME], 0);\n currentPage = currentPage > 0 ? currentPage : -1;\n return {\n currentPage: currentPage,\n localNumberOfPages: 1,\n localLimit: DEFAULT_LIMIT\n };\n },\n computed: {\n btnSize: function btnSize() {\n var size = this.size;\n return size ? \"pagination-\".concat(size) : '';\n },\n alignment: function alignment() {\n var align = this.align;\n\n if (align === 'center') {\n return 'justify-content-center';\n } else if (align === 'end' || align === 'right') {\n return 'justify-content-end';\n } else if (align === 'fill') {\n // The page-items will also have 'flex-fill' added\n // We add text centering to make the button appearance better in fill mode\n return 'text-center';\n }\n\n return '';\n },\n styleClass: function styleClass() {\n return this.pills ? 'b-pagination-pills' : '';\n },\n computedCurrentPage: function computedCurrentPage() {\n return sanitizeCurrentPage(this.currentPage, this.localNumberOfPages);\n },\n paginationParams: function paginationParams() {\n // Determine if we should show the the ellipsis\n var limit = this.localLimit,\n numberOfPages = this.localNumberOfPages,\n currentPage = this.computedCurrentPage,\n hideEllipsis = this.hideEllipsis,\n firstNumber = this.firstNumber,\n lastNumber = this.lastNumber;\n var showFirstDots = false;\n var showLastDots = false;\n var numberOfLinks = limit;\n var startNumber = 1;\n\n if (numberOfPages <= limit) {\n // Special case: Less pages available than the limit of displayed pages\n numberOfLinks = numberOfPages;\n } else if (currentPage < limit - 1 && limit > ELLIPSIS_THRESHOLD) {\n if (!hideEllipsis || lastNumber) {\n showLastDots = true;\n numberOfLinks = limit - (firstNumber ? 0 : 1);\n }\n\n numberOfLinks = mathMin(numberOfLinks, limit);\n } else if (numberOfPages - currentPage + 2 < limit && limit > ELLIPSIS_THRESHOLD) {\n if (!hideEllipsis || firstNumber) {\n showFirstDots = true;\n numberOfLinks = limit - (lastNumber ? 0 : 1);\n }\n\n startNumber = numberOfPages - numberOfLinks + 1;\n } else {\n // We are somewhere in the middle of the page list\n if (limit > ELLIPSIS_THRESHOLD) {\n numberOfLinks = limit - (hideEllipsis ? 0 : 2);\n showFirstDots = !!(!hideEllipsis || firstNumber);\n showLastDots = !!(!hideEllipsis || lastNumber);\n }\n\n startNumber = currentPage - mathFloor(numberOfLinks / 2);\n } // Sanity checks\n\n /* istanbul ignore if */\n\n\n if (startNumber < 1) {\n startNumber = 1;\n showFirstDots = false;\n } else if (startNumber > numberOfPages - numberOfLinks) {\n startNumber = numberOfPages - numberOfLinks + 1;\n showLastDots = false;\n }\n\n if (showFirstDots && firstNumber && startNumber < 4) {\n numberOfLinks = numberOfLinks + 2;\n startNumber = 1;\n showFirstDots = false;\n }\n\n var lastPageNumber = startNumber + numberOfLinks - 1;\n\n if (showLastDots && lastNumber && lastPageNumber > numberOfPages - 3) {\n numberOfLinks = numberOfLinks + (lastPageNumber === numberOfPages - 2 ? 2 : 3);\n showLastDots = false;\n } // Special handling for lower limits (where ellipsis are never shown)\n\n\n if (limit <= ELLIPSIS_THRESHOLD) {\n if (firstNumber && startNumber === 1) {\n numberOfLinks = mathMin(numberOfLinks + 1, numberOfPages, limit + 1);\n } else if (lastNumber && numberOfPages === startNumber + numberOfLinks - 1) {\n startNumber = mathMax(startNumber - 1, 1);\n numberOfLinks = mathMin(numberOfPages - startNumber + 1, numberOfPages, limit + 1);\n }\n }\n\n numberOfLinks = mathMin(numberOfLinks, numberOfPages - startNumber + 1);\n return {\n showFirstDots: showFirstDots,\n showLastDots: showLastDots,\n numberOfLinks: numberOfLinks,\n startNumber: startNumber\n };\n },\n pageList: function pageList() {\n // Generates the pageList array\n var _this$paginationParam = this.paginationParams,\n numberOfLinks = _this$paginationParam.numberOfLinks,\n startNumber = _this$paginationParam.startNumber;\n var currentPage = this.computedCurrentPage; // Generate list of page numbers\n\n var pages = makePageArray(startNumber, numberOfLinks); // We limit to a total of 3 page buttons on XS screens\n // So add classes to page links to hide them for XS breakpoint\n // Note: Ellipsis will also be hidden on XS screens\n // TODO: Make this visual limit configurable based on breakpoint(s)\n\n if (pages.length > 3) {\n var idx = currentPage - startNumber; // THe following is a bootstrap-vue custom utility class\n\n var classes = 'bv-d-xs-down-none';\n\n if (idx === 0) {\n // Keep leftmost 3 buttons visible when current page is first page\n for (var i = 3; i < pages.length; i++) {\n pages[i].classes = classes;\n }\n } else if (idx === pages.length - 1) {\n // Keep rightmost 3 buttons visible when current page is last page\n for (var _i = 0; _i < pages.length - 3; _i++) {\n pages[_i].classes = classes;\n }\n } else {\n // Hide all except current page, current page - 1 and current page + 1\n for (var _i2 = 0; _i2 < idx - 1; _i2++) {\n // hide some left button(s)\n pages[_i2].classes = classes;\n }\n\n for (var _i3 = pages.length - 1; _i3 > idx + 1; _i3--) {\n // hide some right button(s)\n pages[_i3].classes = classes;\n }\n }\n }\n\n return pages;\n }\n },\n watch: (_watch = {}, _defineProperty(_watch, MODEL_PROP_NAME, function (newValue, oldValue) {\n if (newValue !== oldValue) {\n this.currentPage = sanitizeCurrentPage(newValue, this.localNumberOfPages);\n }\n }), _defineProperty(_watch, \"currentPage\", function currentPage(newValue, oldValue) {\n if (newValue !== oldValue) {\n // Emit `null` if no page selected\n this.$emit(MODEL_EVENT_NAME, newValue > 0 ? newValue : null);\n }\n }), _defineProperty(_watch, \"limit\", function limit(newValue, oldValue) {\n if (newValue !== oldValue) {\n this.localLimit = sanitizeLimit(newValue);\n }\n }), _watch),\n created: function created() {\n var _this = this;\n\n // Set our default values in data\n this.localLimit = sanitizeLimit(this.limit);\n this.$nextTick(function () {\n // Sanity check\n _this.currentPage = _this.currentPage > _this.localNumberOfPages ? _this.localNumberOfPages : _this.currentPage;\n });\n },\n methods: {\n handleKeyNav: function handleKeyNav(event) {\n var keyCode = event.keyCode,\n shiftKey = event.shiftKey;\n /* istanbul ignore if */\n\n if (this.isNav) {\n // We disable left/right keyboard navigation in ``\n return;\n }\n\n if (keyCode === CODE_LEFT || keyCode === CODE_UP) {\n stopEvent(event, {\n propagation: false\n });\n shiftKey ? this.focusFirst() : this.focusPrev();\n } else if (keyCode === CODE_RIGHT || keyCode === CODE_DOWN) {\n stopEvent(event, {\n propagation: false\n });\n shiftKey ? this.focusLast() : this.focusNext();\n }\n },\n getButtons: function getButtons() {\n // Return only buttons that are visible\n return selectAll('button.page-link, a.page-link', this.$el).filter(function (btn) {\n return isVisible(btn);\n });\n },\n focusCurrent: function focusCurrent() {\n var _this2 = this;\n\n // We do this in `$nextTick()` to ensure buttons have finished rendering\n this.$nextTick(function () {\n var btn = _this2.getButtons().find(function (el) {\n return toInteger(getAttr(el, 'aria-posinset'), 0) === _this2.computedCurrentPage;\n });\n\n if (!attemptFocus(btn)) {\n // Fallback if current page is not in button list\n _this2.focusFirst();\n }\n });\n },\n focusFirst: function focusFirst() {\n var _this3 = this;\n\n // We do this in `$nextTick()` to ensure buttons have finished rendering\n this.$nextTick(function () {\n var btn = _this3.getButtons().find(function (el) {\n return !isDisabled(el);\n });\n\n attemptFocus(btn);\n });\n },\n focusLast: function focusLast() {\n var _this4 = this;\n\n // We do this in `$nextTick()` to ensure buttons have finished rendering\n this.$nextTick(function () {\n var btn = _this4.getButtons().reverse().find(function (el) {\n return !isDisabled(el);\n });\n\n attemptFocus(btn);\n });\n },\n focusPrev: function focusPrev() {\n var _this5 = this;\n\n // We do this in `$nextTick()` to ensure buttons have finished rendering\n this.$nextTick(function () {\n var buttons = _this5.getButtons();\n\n var index = buttons.indexOf(getActiveElement());\n\n if (index > 0 && !isDisabled(buttons[index - 1])) {\n attemptFocus(buttons[index - 1]);\n }\n });\n },\n focusNext: function focusNext() {\n var _this6 = this;\n\n // We do this in `$nextTick()` to ensure buttons have finished rendering\n this.$nextTick(function () {\n var buttons = _this6.getButtons();\n\n var index = buttons.indexOf(getActiveElement());\n\n if (index < buttons.length - 1 && !isDisabled(buttons[index + 1])) {\n attemptFocus(buttons[index + 1]);\n }\n });\n }\n },\n render: function render(h) {\n var _this7 = this;\n\n var disabled = this.disabled,\n labelPage = this.labelPage,\n ariaLabel = this.ariaLabel,\n isNav = this.isNav,\n numberOfPages = this.localNumberOfPages,\n currentPage = this.computedCurrentPage;\n var pageNumbers = this.pageList.map(function (p) {\n return p.number;\n });\n var _this$paginationParam2 = this.paginationParams,\n showFirstDots = _this$paginationParam2.showFirstDots,\n showLastDots = _this$paginationParam2.showLastDots;\n var fill = this.align === 'fill';\n var $buttons = []; // Helper function and flag\n\n var isActivePage = function isActivePage(pageNumber) {\n return pageNumber === currentPage;\n };\n\n var noCurrentPage = this.currentPage < 1; // Factory function for prev/next/first/last buttons\n\n var makeEndBtn = function makeEndBtn(linkTo, ariaLabel, btnSlot, btnText, btnClass, pageTest, key) {\n var isDisabled = disabled || isActivePage(pageTest) || noCurrentPage || linkTo < 1 || linkTo > numberOfPages;\n var pageNumber = linkTo < 1 ? 1 : linkTo > numberOfPages ? numberOfPages : linkTo;\n var scope = {\n disabled: isDisabled,\n page: pageNumber,\n index: pageNumber - 1\n };\n var $btnContent = _this7.normalizeSlot(btnSlot, scope) || toString(btnText) || h();\n var $inner = h(isDisabled ? 'span' : isNav ? BLink : 'button', {\n staticClass: 'page-link',\n class: {\n 'flex-grow-1': !isNav && !isDisabled && fill\n },\n props: isDisabled || !isNav ? {} : _this7.linkProps(linkTo),\n attrs: {\n role: isNav ? null : 'menuitem',\n type: isNav || isDisabled ? null : 'button',\n tabindex: isDisabled || isNav ? null : '-1',\n 'aria-label': ariaLabel,\n 'aria-controls': _this7.ariaControls || null,\n 'aria-disabled': isDisabled ? 'true' : null\n },\n on: isDisabled ? {} : {\n '!click': function click(event) {\n _this7.onClick(event, linkTo);\n },\n keydown: onSpaceKey\n }\n }, [$btnContent]);\n return h('li', {\n key: key,\n staticClass: 'page-item',\n class: [{\n disabled: isDisabled,\n 'flex-fill': fill,\n 'd-flex': fill && !isNav && !isDisabled\n }, btnClass],\n attrs: {\n role: isNav ? null : 'presentation',\n 'aria-hidden': isDisabled ? 'true' : null\n }\n }, [$inner]);\n }; // Ellipsis factory\n\n\n var makeEllipsis = function makeEllipsis(isLast) {\n return h('li', {\n staticClass: 'page-item',\n class: ['disabled', 'bv-d-xs-down-none', fill ? 'flex-fill' : '', _this7.ellipsisClass],\n attrs: {\n role: 'separator'\n },\n key: \"ellipsis-\".concat(isLast ? 'last' : 'first')\n }, [h('span', {\n staticClass: 'page-link'\n }, [_this7.normalizeSlot(SLOT_NAME_ELLIPSIS_TEXT) || toString(_this7.ellipsisText) || h()])]);\n }; // Page button factory\n\n\n var makePageButton = function makePageButton(page, idx) {\n var pageNumber = page.number;\n var active = isActivePage(pageNumber) && !noCurrentPage; // Active page will have tabindex of 0, or if no current page and first page button\n\n var tabIndex = disabled ? null : active || noCurrentPage && idx === 0 ? '0' : '-1';\n var attrs = {\n role: isNav ? null : 'menuitemradio',\n type: isNav || disabled ? null : 'button',\n 'aria-disabled': disabled ? 'true' : null,\n 'aria-controls': _this7.ariaControls || null,\n 'aria-label': hasPropFunction(labelPage) ?\n /* istanbul ignore next */\n labelPage(pageNumber) : \"\".concat(isFunction(labelPage) ? labelPage() : labelPage, \" \").concat(pageNumber),\n 'aria-checked': isNav ? null : active ? 'true' : 'false',\n 'aria-current': isNav && active ? 'page' : null,\n 'aria-posinset': isNav ? null : pageNumber,\n 'aria-setsize': isNav ? null : numberOfPages,\n // ARIA \"roving tabindex\" method (except in `isNav` mode)\n tabindex: isNav ? null : tabIndex\n };\n var btnContent = toString(_this7.makePage(pageNumber));\n var scope = {\n page: pageNumber,\n index: pageNumber - 1,\n content: btnContent,\n active: active,\n disabled: disabled\n };\n var $inner = h(disabled ? 'span' : isNav ? BLink : 'button', {\n props: disabled || !isNav ? {} : _this7.linkProps(pageNumber),\n staticClass: 'page-link',\n class: {\n 'flex-grow-1': !isNav && !disabled && fill\n },\n attrs: attrs,\n on: disabled ? {} : {\n '!click': function click(event) {\n _this7.onClick(event, pageNumber);\n },\n keydown: onSpaceKey\n }\n }, [_this7.normalizeSlot(SLOT_NAME_PAGE, scope) || btnContent]);\n return h('li', {\n staticClass: 'page-item',\n class: [{\n disabled: disabled,\n active: active,\n 'flex-fill': fill,\n 'd-flex': fill && !isNav && !disabled\n }, page.classes, _this7.pageClass],\n attrs: {\n role: isNav ? null : 'presentation'\n },\n key: \"page-\".concat(pageNumber)\n }, [$inner]);\n }; // Goto first page button\n // Don't render button when `hideGotoEndButtons` or `firstNumber` is set\n\n\n var $firstPageBtn = h();\n\n if (!this.firstNumber && !this.hideGotoEndButtons) {\n $firstPageBtn = makeEndBtn(1, this.labelFirstPage, SLOT_NAME_FIRST_TEXT, this.firstText, this.firstClass, 1, 'pagination-goto-first');\n }\n\n $buttons.push($firstPageBtn); // Goto previous page button\n\n $buttons.push(makeEndBtn(currentPage - 1, this.labelPrevPage, SLOT_NAME_PREV_TEXT, this.prevText, this.prevClass, 1, 'pagination-goto-prev')); // Show first (1) button?\n\n $buttons.push(this.firstNumber && pageNumbers[0] !== 1 ? makePageButton({\n number: 1\n }, 0) : h()); // First ellipsis\n\n $buttons.push(showFirstDots ? makeEllipsis(false) : h()); // Individual page links\n\n this.pageList.forEach(function (page, idx) {\n var offset = showFirstDots && _this7.firstNumber && pageNumbers[0] !== 1 ? 1 : 0;\n $buttons.push(makePageButton(page, idx + offset));\n }); // Last ellipsis\n\n $buttons.push(showLastDots ? makeEllipsis(true) : h()); // Show last page button?\n\n $buttons.push(this.lastNumber && pageNumbers[pageNumbers.length - 1] !== numberOfPages ? makePageButton({\n number: numberOfPages\n }, -1) : h()); // Goto next page button\n\n $buttons.push(makeEndBtn(currentPage + 1, this.labelNextPage, SLOT_NAME_NEXT_TEXT, this.nextText, this.nextClass, numberOfPages, 'pagination-goto-next')); // Goto last page button\n // Don't render button when `hideGotoEndButtons` or `lastNumber` is set\n\n var $lastPageBtn = h();\n\n if (!this.lastNumber && !this.hideGotoEndButtons) {\n $lastPageBtn = makeEndBtn(numberOfPages, this.labelLastPage, SLOT_NAME_LAST_TEXT, this.lastText, this.lastClass, numberOfPages, 'pagination-goto-last');\n }\n\n $buttons.push($lastPageBtn); // Assemble the pagination buttons\n\n var $pagination = h('ul', {\n staticClass: 'pagination',\n class: ['b-pagination', this.btnSize, this.alignment, this.styleClass],\n attrs: {\n role: isNav ? null : 'menubar',\n 'aria-disabled': disabled ? 'true' : 'false',\n 'aria-label': isNav ? null : ariaLabel || null\n },\n // We disable keyboard left/right nav when ``\n on: isNav ? {} : {\n keydown: this.handleKeyNav\n },\n ref: 'ul'\n }, $buttons); // If we are ``, wrap in `` wrapper\n\n if (isNav) {\n return h('nav', {\n attrs: {\n 'aria-disabled': disabled ? 'true' : null,\n 'aria-hidden': disabled ? 'true' : 'false',\n 'aria-label': isNav ? ariaLabel || null : null\n }\n }, [$pagination]);\n }\n\n return $pagination;\n }\n});","'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 const heightTransition = {\n /*\n\n HowTo:\n 1. Add dynamic style to element and set style as `trHeight`\n 2. Set transition speed using `transition: 0.35s height;` <= you can use appropriate value;\n 3. Optionally you can set `overflow: hidden;` to hide element overflow while height is animated.\n 4. Set initial height using `trSetHeight` before any operation. [mounted hook is recommended - You can use `ref` for dynamic contents]\n 5. Toggle height using height operations 🍻\n 6. Toggle usage of $nextTick for height operations is any issue occur [experimental] 🔬\n\n */\n\n data() {\n return {\n trHeight: null,\n };\n },\n methods: {\n trAddHeight(val) {\n // Add height to existing height\n // Usage: Where new element is append or more height is added (e.g. list append)\n\n /* Assumes:\n - Height is assigned and is `String`\n - Incoming value is valid number in `Number` or `String`\n */\n const heightValue = Number(\n this.trHeight.substring(0, this.trHeight.length - 2)\n );\n this.trHeight = `${heightValue + Number(val)}px`;\n },\n trTrimHeight(val) {\n // Remove height from existing height\n // Usage: Where new element is removed or height is remove (e.g. list pop/ele remove)\n\n /* Assumes:\n - Height is assigned and is `String`\n - Incoming value is valid number in `Number` or `String`\n */\n const heightValue = Number(\n this.trHeight.substring(0, this.trHeight.length - 2)\n );\n this.trHeight = `${heightValue - Number(val)}px`;\n },\n trSetHeight(val) {\n // Set height\n // Usage: Mostly for assigning initial value from mounted hook\n\n /* Assumes:\n - Height is not assigned and what to assign for add/remove operation\n - What to set height at something for odd usage\n - Incoming value is valid number in `Number` or `String`\n */\n if (val === null) this.trHeight = \"auto\";\n else this.trHeight = `${Number(val)}px`;\n },\n },\n};\n\n// Ignore below for now. We will remove it when we add more transition in future.\nexport const _ = null;\n","var Ripple = {\n bind: function(el, binding){\n\n // Default values.\n var props = {\n event: 'mousedown',\n transition: 600\n };\n\n setProps(Object.keys(binding.modifiers),props);\n\n el.addEventListener(props.event, function(event) {\n rippler(event, el, binding.value);\n });\n\n var bg = binding.value || Ripple.color || 'rgba(0, 0, 0, 0.35)';\n var zIndex = Ripple.zIndex || '9999';\n\n function rippler(event, el) {\n var target = el;\n // Get border to avoid offsetting on ripple container position\n var targetBorder = parseInt((getComputedStyle(target).borderWidth).replace('px', ''));\n\n // Get necessary variables\n var rect = target.getBoundingClientRect(),\n left = rect.left,\n top = rect.top,\n width = target.offsetWidth,\n height = target.offsetHeight,\n dx = event.clientX - left,\n dy = event.clientY - top,\n maxX = Math.max(dx, width - dx),\n maxY = Math.max(dy, height - dy),\n style = window.getComputedStyle(target),\n radius = Math.sqrt((maxX * maxX) + (maxY * maxY)),\n border = (targetBorder > 0 ) ? targetBorder : 0;\n\n // Create the ripple and its container\n var ripple = document.createElement(\"div\"),\n rippleContainer = document.createElement(\"div\");\n rippleContainer.className = 'ripple-container';\n ripple.className = 'ripple';\n\n //Styles for ripple\n ripple.style.marginTop= '0px';\n ripple.style.marginLeft= '0px';\n ripple.style.width= '1px';\n ripple.style.height= '1px';\n ripple.style.transition= 'all ' + props.transition + 'ms cubic-bezier(0.4, 0, 0.2, 1)';\n ripple.style.borderRadius= '50%';\n ripple.style.pointerEvents= 'none';\n ripple.style.position= 'relative';\n ripple.style.zIndex= zIndex;\n ripple.style.backgroundColor = bg;\n\n //Styles for rippleContainer\n rippleContainer.style.position= 'absolute';\n rippleContainer.style.left = 0 - border + 'px';\n rippleContainer.style.top = 0 - border + 'px';\n rippleContainer.style.height = '0';\n rippleContainer.style.width = '0';\n rippleContainer.style.pointerEvents = 'none';\n rippleContainer.style.overflow = 'hidden';\n\n // Store target position to change it after\n var storedTargetPosition = ((target.style.position).length > 0) ? target.style.position : getComputedStyle(target).position;\n // Change target position to relative to guarantee ripples correct positioning\n if (storedTargetPosition !== 'relative') {\n target.style.position = 'relative';\n }\n\n rippleContainer.appendChild(ripple);\n target.appendChild(rippleContainer);\n\n ripple.style.marginLeft = dx + \"px\";\n ripple.style.marginTop = dy + \"px\";\n\n // No need to set positioning because ripple should be child of target and to it's relative position.\n // rippleContainer.style.left = left + (((window.pageXOffset || document.scrollLeft) - (document.clientLeft || 0)) || 0) + \"px\";\n // rippleContainer.style.top = top + (((window.pageYOffset || document.scrollTop) - (document.clientTop || 0)) || 0) + \"px\";\n rippleContainer.style.width = width + \"px\";\n rippleContainer.style.height = height + \"px\";\n rippleContainer.style.borderTopLeftRadius = style.borderTopLeftRadius;\n rippleContainer.style.borderTopRightRadius = style.borderTopRightRadius;\n rippleContainer.style.borderBottomLeftRadius = style.borderBottomLeftRadius;\n rippleContainer.style.borderBottomRightRadius = style.borderBottomRightRadius;\n\n rippleContainer.style.direction = 'ltr';\n\n setTimeout(function() {\n ripple.style.width = radius * 2 + \"px\";\n ripple.style.height = radius * 2 + \"px\";\n ripple.style.marginLeft = dx - radius + \"px\";\n ripple.style.marginTop = dy - radius + \"px\";\n }, 0);\n\n function clearRipple() {\n setTimeout(function() {\n ripple.style.backgroundColor = \"rgba(0, 0, 0, 0)\";\n }, 250);\n\n // Timeout set to get a smooth removal of the ripple\n setTimeout(function() {\n rippleContainer.parentNode.removeChild(rippleContainer);\n }, 850);\n\n el.removeEventListener('mouseup', clearRipple, false);\n\n // After removing event set position to target to it's original one\n // Timeout it's needed to avoid jerky effect of ripple jumping out parent target\n setTimeout(function () {\n\n var clearPosition = true;\n for(var i = 0; i < target.childNodes.length; i++) {\n if(target.childNodes[i].className === 'ripple-container') {\n clearPosition = false;\n }\n }\n\n if(clearPosition) {\n if(storedTargetPosition !== 'static') {\n target.style.position = storedTargetPosition;\n } else {\n target.style.position = '';\n }\n }\n\n }, props.transition + 250)\n }\n\n if(event.type === 'mousedown') {\n el.addEventListener('mouseup', clearRipple, false);\n } else {\n clearRipple();\n }\n }\n }\n};\n\nfunction setProps(modifiers,props) {\n modifiers.forEach(function(item) {\n if(isNaN(Number(item)))\n props.event = item;\n else\n props.transition = item;\n });\n}\n\nexport default Ripple;","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!./Prices.vue?vue&type=style&index=0&lang=css&\""],"sourceRoot":""}