{"version":3,"sources":["webpack:///./node_modules/bootstrap-vue/esm/components/spinner/spinner.js","webpack:///./node_modules/bootstrap-vue/esm/components/card/card-img.js","webpack:///./node_modules/bootstrap-vue/esm/components/card/card.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/tfoot.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/utils/stringify-object-values.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/sanitize-row.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/stringify-record-values.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-filtering.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-pagination.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-provider.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-selectable.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-sorting.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/default-sort-compare.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-top-row.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/table.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-tbody-row.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-tbody.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-caption.js","webpack:///./node_modules/bootstrap-vue/esm/components/image/img.js","webpack:///./node_modules/bootstrap-vue/esm/components/card/card-title.js","webpack:///./node_modules/bootstrap-vue/esm/components/collapse/collapse.js","webpack:///./node_modules/bootstrap-vue/esm/constants/classes.js","webpack:///./node_modules/bootstrap-vue/esm/components/collapse/helpers/bv-collapse.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/normalize-fields.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-items.js","webpack:///./node_modules/bootstrap-vue/esm/components/card/card-body.js","webpack:///./node_modules/bootstrap-vue/esm/components/card/card-footer.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/constants.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-tfoot.js","webpack:///./node_modules/bootstrap-vue/esm/utils/stable-sort.js","webpack:///./node_modules/bootstrap-vue/esm/components/overlay/overlay.js","webpack:///./node_modules/bootstrap-vue/esm/components/layout/row.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/filter-event.js","webpack:///./node_modules/bootstrap-vue/esm/components/layout/col.js","webpack:///./src/@core/components/b-card-actions/BCardActions.vue?1584","webpack:///./node_modules/bootstrap-vue/esm/components/card/card-header.js","webpack:///./node_modules/bootstrap-vue/esm/components/card/card-sub-title.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-thead.js","webpack:///./src/views/card/card-action/CardAction.vue?2a5d","webpack:///./src/@core/components/b-card-actions/BCardActions.vue?dd15","webpack:///./src/@core/components/b-card-actions/BCardActionsContainer.vue?0aca","webpack:///src/@core/components/b-card-actions/BCardActionsContainer.vue","webpack:///./src/@core/components/b-card-actions/BCardActionsContainer.vue?784d","webpack:///./src/@core/components/b-card-actions/BCardActionsContainer.vue","webpack:///src/@core/components/b-card-actions/BCardActions.vue","webpack:///./src/@core/components/b-card-actions/BCardActions.vue?791a","webpack:///./src/@core/components/b-card-actions/BCardActions.vue","webpack:///src/views/card/card-action/CardAction.vue","webpack:///./src/views/card/card-action/CardAction.vue?3497","webpack:///./src/views/card/card-action/CardAction.vue","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/text-selection-active.js","webpack:///./node_modules/bootstrap-vue/esm/mixins/card.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-colgroup.js","webpack:///./node_modules/bootstrap-vue/esm/components/card/card-text.js","webpack:///./node_modules/bootstrap-vue/esm/utils/noop.js"],"names":["_defineProperty","obj","key","value","Object","defineProperty","enumerable","configurable","writable","props","label","role","small","tag","type","variant","BSpinner","extend","name","functional","render","h","_ref","_class","data","slots","scopedSlots","$slots","$scopedSlots","$label","staticClass","attrs","class","concat","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","push","apply","_objectSpread","target","i","arguments","length","source","forEach","getOwnPropertyDescriptors","defineProperties","bottom","end","start","top","BCardImg","src","alt","width","height","baseClass","right","left","cardImgProps","bind","imgSrc","required","card","align","noBody","BCard","imgLeft","imgRight","imgStart","imgEnd","imgBottom","header","headerHtml","footer","footerHtml","textVariant","bgVariant","borderVariant","slotScope","$imgFirst","$imgLast","$img","$header","hasHeaderSlot","domProps","html","$content","overlay","$footer","hasFooterSlot","footVariant","BTfoot","mixins","provide","bvTableRowGroup","this","inject","bvTable","default","inheritAttrs","computed","isTfoot","isDark","dark","isStacked","isResponsive","isStickyHeader","hasStickyHeader","stickyHeader","tableVariant","tfootClasses","tfootAttrs","bvAttrs","on","bvListeners","normalizeSlot","bottomRowMixin","methods","renderBottomRow","fields","computedFields","stacked","tbodyTrClass","tbodyTrAttr","$createElement","hasNormalizedSlot","columns","MODEL_PROP_NAME_BUSY","MODEL_EVENT_NAME_BUSY","busyMixin","localBusy","computedBusy","watch","newValue","oldValue","$emit","stopIfBusy","event","renderBusy","colspan","emptyFilteredHtml","emptyFilteredText","emptyHtml","emptyText","showEmpty","emptyMixin","renderEmpty","items","computedItems","$empty","isFiltered","stringifyObjectValues","sort","map","k","v","join","row","ignoreFields","includeFields","fieldsObj","undefined","formattedRow","reduce","result","field","filterByFormatted","formatter","allowedKeys","array","_toConsumableArray","arr","_arrayWithoutHoles","_iterableToArray","_unsupportedIterableToArray","_nonIterableSpread","TypeError","o","minLen","_arrayLikeToArray","n","prototype","toString","call","slice","constructor","Array","from","test","iter","Symbol","iterator","isArray","len","arr2","DEBOUNCE_DEPRECATED_MSG","filterDebounce","String","filterFunction","filterIgnoredFields","filterIncludedFields","filteringMixin","localFilter","filterSanitize","computedFilterIgnored","identity","computedFilterIncluded","computedFilterDebounce","ms","warn","localFiltering","hasProvider","noProviderFiltering","filteredCheck","filteredItems","localItems","localFilterFn","criteria","filterFn","filterFnFactory","defaultFilterFnFactory","$_filterTimer","clearFilterTimer","deep","handler","newCriteria","_this","timeout","setTimeout","created","_this2","$nextTick","Boolean","beforeDestroy","clearTimeout","fn","item","_this3","regExp","pattern","replace","RegExp","lastIndex","computedFieldsObj","currentPage","perPage","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","id","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","index","isRowSelected","selectedLastClicked","unselectRow","selectAllRows","selectableRowClasses","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","BTable","detailsTdClass","tbodyRowMixin","getTdValues","tdValue","defaultValue","$parent","getThValues","thValue","getFormattedValue","toggleDetailsFactory","hasDetailsSlot","$set","rowHovered","tbodyRowEvtStopped","emitTbodyRowEvent","rowUnhovered","renderTbodyRowCell","colIndex","rowIndex","isRowHeader","formatted","stickyColumn","cellTag","cellVariant","tdClass","thAttr","tdAttr","stackedHeading","scope","unformatted","toggleDetails","detailsShowing","rowSelected","slotName","$_bodyFieldSlotNameCache","$childNodes","renderTbodyRow","striped","primaryKey","rowShowDetails","hasRowClickHandler","$listeners","$rows","detailsId","safeId","$tds","ariaRowIndex","primaryKeyValue","rowKey","rowId","selectableClasses","selectableAttrs","userTrClasses","userTrAttrs","tabindex","mouseenter","mouseleave","ref","refInFor","detailsScope","$details","userDetailsTrClasses","userDetailsTrAttrs","getCellSlotName","tbodyClass","tbodyMixin","getTbodyTrs","$refs","tbody","$el","trs","tr","children","getTbodyTrIndex","el","tagName","indexOf","hasListener","onTbodyRowKeydown","keyCode","tabIndex","onTBodyRowClicked","shift","onTbodyRowMiddleMouseRowClicked","which","onTbodyRowContextmenu","onTbodyRowDblClicked","renderTbody","$busy","cache","defaultSlotName","lowercaseSlotName","toLowerCase","handlers","auxclick","contextmenu","dblclick","click","keydown","$tbody","$props","caption","captionHtml","captionMixin","captionId","renderCaption","$caption","hasCaptionSlot","BLANK_TEMPLATE","makeBlankImgSrc","color","encodeURIComponent","blank","blankColor","block","center","fluid","fluidGrow","rounded","sizes","srcset","thumbnail","BImg","title","titleTag","BCardTitle","CLASS_NAME_SHOW","scrollHeight","TRANSITION_PROPS","css","enterClass","enterActiveClass","enterToClass","leaveClass","leaveActiveClass","leaveToClass","TRANSITION_HANDLERS","enter","afterEnter","leave","afterLeave","BVCollapse","appear","ROOT_ACTION_EVENT_NAME_TOGGLE","ROOT_ACTION_EVENT_NAME_REQUEST_STATE","ROOT_EVENT_NAME_ACCORDION","ROOT_EVENT_NAME_STATE","ROOT_EVENT_NAME_SYNC_STATE","_makeModelMixin","modelMixin","mixin","modelProps","MODEL_PROP_NAME","prop","MODEL_EVENT_NAME","accordion","isNav","BCollapse","show","transitioning","classObject","collapse","visible","close","emitState","handleToggleEvt","handleAccordionEvt","setWindowEvents","handleResize","emitSync","updated","deactivated","activated","window","toggle","onEnter","onAfterEnter","onLeave","onAfterLeave","checkDisplayBlock","restore","isBlock","display","clickHandler","openedId","openAccordion","isThis","directives","origFields","sample","memo","itemsMixin","bodyClass","BCardBody","_ref2","bodyBgVariant","bodyBorderVariant","bodyTextVariant","$title","$subTitle","subTitle","bodyTag","footerClass","BCardFooter","footerBgVariant","footerBorderVariant","footerTextVariant","footerTag","FIELD_KEY_CELL_VARIANT","FIELD_KEY_ROW_VARIANT","FIELD_KEY_SHOW_DETAILS","IGNORED_FIELD_KEYS","EVENT_FILTER","footClone","footRowVariant","tfootClass","tfootTrClass","tfootMixin","renderTFootCustom","headVariant","renderTfoot","renderThead","stableSort","compareFn","POSITION_COVER","bgColor","blur","fixed","noCenter","noFade","noWrap","opacity","number","overlayTag","spinnerSmall","spinnerType","spinnerVariant","wrapTag","zIndex","BOverlay","computedRounded","computedVariant","defaultOverlayFn","$overlay","$background","style","backgroundColor","backdropFilter","transform","COMMON_ALIGNMENT","computeRowColsClass","breakpoint","cols","computeRowColsBreakpoint","rowColsPropList","generateProps","rowColsProps","alignContent","alignH","alignV","noGutters","BRow","_classList$push","classList","c","TABLE_TAG_NAMES","filterEvent","disabled","labelFor","input","ALIGN_SELF_VALUES","computeBreakpoint","className","computeBreakpointClass","breakpointPropMap","breakpoints","breakpointCol","breakpointOffset","breakpointOrder","col","offset","order","alignSelf","BCol","_keys","hasColClasses","headerClass","BCardHeader","headerBgVariant","headerBorderVariant","headerTextVariant","headerTag","subTitleTag","subTitleTextVariant","BCardSubTitle","getHeadSlotName","getFootSlotName","headRowVariant","theadClass","theadTrClass","theadMixin","fieldClasses","thClass","headClicked","isStackedAlways","hasHeadClickListener","makeCell","labelHtml","ariaLabel","trim","headerTitle","sortAttrs","sortClass","sortLabel","thStyle","abbr","headerAbbr","slotNames","column","$srLabel","$cells","$trs","_vm","_h","_c","_self","$event","refreshStop","_u","_v","staticRenderFns","cardClosed","_e","showLoading","_g","_b","cardStyles","content_visible","parentID","cardAttrs","showHeader","_s","$attrs","showActions","availableActions","triggerCollapse","triggerRefresh","triggerClose","model","callback","$$v","expression","_t","includes","rotate","isCollapsed","requried","component","components","BCardActionsContainer","collapsed","noActions","actionCollapse","actionRefresh","actionClose","allFalse","actions","Math","floor","random","removeCard","BCardActions","BCardText","textSelectionActive","document","sel","containsNode","colgroupMixin","renderColgroup","$colgroup","textTag","noop"],"mappings":"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","file":"js/chunk-1aa3e739.572196f5.js","sourcesContent":["function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue, mergeData } from '../../vue';\nimport { NAME_SPINNER } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../constants/props';\nimport { SLOT_NAME_LABEL } from '../../constants/slots';\nimport { normalizeSlot } from '../../utils/normalize-slot';\nimport { makeProp, makePropsConfigurable } from '../../utils/props'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n label: makeProp(PROP_TYPE_STRING),\n role: makeProp(PROP_TYPE_STRING, 'status'),\n small: makeProp(PROP_TYPE_BOOLEAN, false),\n tag: makeProp(PROP_TYPE_STRING, 'span'),\n type: makeProp(PROP_TYPE_STRING, 'border'),\n variant: makeProp(PROP_TYPE_STRING)\n}, NAME_SPINNER); // --- Main component ---\n// @vue/component\n\nexport var BSpinner = /*#__PURE__*/Vue.extend({\n name: NAME_SPINNER,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var _class;\n\n var props = _ref.props,\n data = _ref.data,\n slots = _ref.slots,\n scopedSlots = _ref.scopedSlots;\n var $slots = slots();\n var $scopedSlots = scopedSlots || {};\n var $label = normalizeSlot(SLOT_NAME_LABEL, {}, $scopedSlots, $slots) || props.label;\n\n if ($label) {\n $label = h('span', {\n staticClass: 'sr-only'\n }, $label);\n }\n\n return h(props.tag, mergeData(data, {\n attrs: {\n role: $label ? props.role || 'status' : null,\n 'aria-hidden': $label ? null : 'true'\n },\n class: (_class = {}, _defineProperty(_class, \"spinner-\".concat(props.type), props.type), _defineProperty(_class, \"spinner-\".concat(props.type, \"-sm\"), props.small), _defineProperty(_class, \"text-\".concat(props.variant), props.variant), _class)\n }), [$label || h()]);\n }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue, mergeData } from '../../vue';\nimport { NAME_CARD_IMG } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN } from '../../constants/props';\nimport { pick, sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { props as BImgProps } from '../image/img'; // --- Props ---\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, pick(BImgProps, ['src', 'alt', 'width', 'height', 'left', 'right'])), {}, {\n bottom: makeProp(PROP_TYPE_BOOLEAN, false),\n end: makeProp(PROP_TYPE_BOOLEAN, false),\n start: makeProp(PROP_TYPE_BOOLEAN, false),\n top: makeProp(PROP_TYPE_BOOLEAN, false)\n})), NAME_CARD_IMG); // --- Main component ---\n// @vue/component\n\nexport var BCardImg = /*#__PURE__*/Vue.extend({\n name: NAME_CARD_IMG,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data;\n var src = props.src,\n alt = props.alt,\n width = props.width,\n height = props.height;\n var baseClass = 'card-img';\n\n if (props.top) {\n baseClass += '-top';\n } else if (props.right || props.end) {\n baseClass += '-right';\n } else if (props.bottom) {\n baseClass += '-bottom';\n } else if (props.left || props.start) {\n baseClass += '-left';\n }\n\n return h('img', mergeData(data, {\n class: baseClass,\n attrs: {\n src: src,\n alt: alt,\n width: width,\n height: height\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, mergeData } from '../../vue';\nimport { NAME_CARD } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../constants/props';\nimport { SLOT_NAME_DEFAULT, SLOT_NAME_FOOTER, SLOT_NAME_HEADER } from '../../constants/slots';\nimport { htmlOrText } from '../../utils/html';\nimport { hasNormalizedSlot, normalizeSlot } from '../../utils/normalize-slot';\nimport { sortKeys } from '../../utils/object';\nimport { copyProps, makeProp, makePropsConfigurable, pluckProps, prefixPropName, unprefixPropName } from '../../utils/props';\nimport { props as cardProps } from '../../mixins/card';\nimport { BCardBody, props as BCardBodyProps } from './card-body';\nimport { BCardHeader, props as BCardHeaderProps } from './card-header';\nimport { BCardFooter, props as BCardFooterProps } from './card-footer';\nimport { BCardImg, props as BCardImgProps } from './card-img'; // --- Props ---\n\nvar cardImgProps = copyProps(BCardImgProps, prefixPropName.bind(null, 'img'));\ncardImgProps.imgSrc.required = false;\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, BCardBodyProps), BCardHeaderProps), BCardFooterProps), cardImgProps), cardProps), {}, {\n align: makeProp(PROP_TYPE_STRING),\n noBody: makeProp(PROP_TYPE_BOOLEAN, false)\n})), NAME_CARD); // --- Main component ---\n// @vue/component\n\nexport var BCard = /*#__PURE__*/Vue.extend({\n name: NAME_CARD,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var _class;\n\n var props = _ref.props,\n data = _ref.data,\n slots = _ref.slots,\n scopedSlots = _ref.scopedSlots;\n var imgSrc = props.imgSrc,\n imgLeft = props.imgLeft,\n imgRight = props.imgRight,\n imgStart = props.imgStart,\n imgEnd = props.imgEnd,\n imgBottom = props.imgBottom,\n header = props.header,\n headerHtml = props.headerHtml,\n footer = props.footer,\n footerHtml = props.footerHtml,\n align = props.align,\n textVariant = props.textVariant,\n bgVariant = props.bgVariant,\n borderVariant = props.borderVariant;\n var $scopedSlots = scopedSlots || {};\n var $slots = slots();\n var slotScope = {};\n var $imgFirst = h();\n var $imgLast = h();\n\n if (imgSrc) {\n var $img = h(BCardImg, {\n props: pluckProps(cardImgProps, props, unprefixPropName.bind(null, 'img'))\n });\n\n if (imgBottom) {\n $imgLast = $img;\n } else {\n $imgFirst = $img;\n }\n }\n\n var $header = h();\n var hasHeaderSlot = hasNormalizedSlot(SLOT_NAME_HEADER, $scopedSlots, $slots);\n\n if (hasHeaderSlot || header || headerHtml) {\n $header = h(BCardHeader, {\n props: pluckProps(BCardHeaderProps, props),\n domProps: hasHeaderSlot ? {} : htmlOrText(headerHtml, header)\n }, normalizeSlot(SLOT_NAME_HEADER, slotScope, $scopedSlots, $slots));\n }\n\n var $content = normalizeSlot(SLOT_NAME_DEFAULT, slotScope, $scopedSlots, $slots); // Wrap content in `` when `noBody` prop set\n\n if (!props.noBody) {\n $content = h(BCardBody, {\n props: pluckProps(BCardBodyProps, props)\n }, $content); // When the `overlap` prop is set we need to wrap the `` and ``\n // into a relative positioned wrapper to don't distract a potential header or footer\n\n if (props.overlay && imgSrc) {\n $content = h('div', {\n staticClass: 'position-relative'\n }, [$imgFirst, $content, $imgLast]); // Reset image variables since they are already in the wrapper\n\n $imgFirst = h();\n $imgLast = h();\n }\n }\n\n var $footer = h();\n var hasFooterSlot = hasNormalizedSlot(SLOT_NAME_FOOTER, $scopedSlots, $slots);\n\n if (hasFooterSlot || footer || footerHtml) {\n $footer = h(BCardFooter, {\n props: pluckProps(BCardFooterProps, props),\n domProps: hasHeaderSlot ? {} : htmlOrText(footerHtml, footer)\n }, normalizeSlot(SLOT_NAME_FOOTER, slotScope, $scopedSlots, $slots));\n }\n\n return h(props.tag, mergeData(data, {\n staticClass: 'card',\n class: (_class = {\n 'flex-row': imgLeft || imgStart,\n 'flex-row-reverse': (imgRight || imgEnd) && !(imgLeft || imgStart)\n }, _defineProperty(_class, \"text-\".concat(align), align), _defineProperty(_class, \"bg-\".concat(bgVariant), bgVariant), _defineProperty(_class, \"border-\".concat(borderVariant), borderVariant), _defineProperty(_class, \"text-\".concat(textVariant), textVariant), _class)\n }), [$imgFirst, $header, $content, $footer, $imgLast]);\n }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue } from '../../vue';\nimport { NAME_TFOOT } from '../../constants/components';\nimport { PROP_TYPE_STRING } from '../../constants/props';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { attrsMixin } from '../../mixins/attrs';\nimport { listenersMixin } from '../../mixins/listeners';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n // Supported values: 'lite', 'dark', or null\n footVariant: makeProp(PROP_TYPE_STRING)\n}, NAME_TFOOT); // --- Main component ---\n// TODO:\n// In Bootstrap v5, we won't need \"sniffing\" as table element variants properly inherit\n// to the child elements, so this can be converted to a functional component\n// @vue/component\n\nexport var BTfoot = /*#__PURE__*/Vue.extend({\n name: NAME_TFOOT,\n mixins: [attrsMixin, listenersMixin, normalizeSlotMixin],\n provide: function provide() {\n return {\n bvTableRowGroup: this\n };\n },\n inject: {\n // Sniffed by `` / `` / ``\n bvTable: {\n default:\n /* istanbul ignore next */\n function _default() {\n return {};\n }\n }\n },\n inheritAttrs: false,\n props: props,\n computed: {\n // Sniffed by `` / `` / ``\n isTfoot: function isTfoot() {\n return true;\n },\n // Sniffed by `` / `` / ``\n isDark: function isDark() {\n return this.bvTable.dark;\n },\n // Sniffed by `` / `` / ``\n isStacked: function isStacked() {\n return this.bvTable.isStacked;\n },\n // Sniffed by `` / `` / ``\n isResponsive: function isResponsive() {\n return this.bvTable.isResponsive;\n },\n // Sniffed by `` / `` / ``\n // Sticky headers are only supported in thead\n isStickyHeader: function isStickyHeader() {\n return false;\n },\n // Sniffed by `` / `` / ``\n // Needed to handle header background classes, due to lack of\n // background color inheritance with Bootstrap v4 table CSS\n hasStickyHeader: function hasStickyHeader() {\n return !this.isStacked && this.bvTable.stickyHeader;\n },\n // Sniffed by `` / `` / ``\n tableVariant: function tableVariant() {\n return this.bvTable.tableVariant;\n },\n tfootClasses: function tfootClasses() {\n return [this.footVariant ? \"thead-\".concat(this.footVariant) : null];\n },\n tfootAttrs: function tfootAttrs() {\n return _objectSpread(_objectSpread({}, this.bvAttrs), {}, {\n role: 'rowgroup'\n });\n }\n },\n render: function render(h) {\n return h('tfoot', {\n class: this.tfootClasses,\n attrs: this.tfootAttrs,\n // Pass down any native listeners\n on: this.bvListeners\n }, this.normalizeSlot());\n }\n});","import { Vue } from '../../../vue';\nimport { 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 { 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 { 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});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nimport { Vue } from '../../../vue';\nimport { EVENT_NAME_ROW_CLICKED, EVENT_NAME_ROW_HOVERED, EVENT_NAME_ROW_UNHOVERED } from '../../../constants/events';\nimport { PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_FUNCTION, PROP_TYPE_OBJECT_FUNCTION } from '../../../constants/props';\nimport { SLOT_NAME_ROW_DETAILS } from '../../../constants/slots';\nimport { get } from '../../../utils/get';\nimport { isFunction, isString, isUndefinedOrNull } from '../../../utils/inspect';\nimport { makeProp } from '../../../utils/props';\nimport { toString } from '../../../utils/string';\nimport { BTr } from '../tr';\nimport { BTd } from '../td';\nimport { BTh } from '../th';\nimport { FIELD_KEY_CELL_VARIANT, FIELD_KEY_ROW_VARIANT, FIELD_KEY_SHOW_DETAILS } from './constants'; // --- Props ---\n\nexport var props = {\n detailsTdClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n tbodyTrAttr: makeProp(PROP_TYPE_OBJECT_FUNCTION),\n tbodyTrClass: makeProp([].concat(_toConsumableArray(PROP_TYPE_ARRAY_OBJECT_STRING), [PROP_TYPE_FUNCTION]))\n}; // --- Mixin ---\n// @vue/component\n\nexport var tbodyRowMixin = Vue.extend({\n props: props,\n methods: {\n // Methods for computing classes, attributes and styles for table cells\n getTdValues: function getTdValues(item, key, tdValue, defaultValue) {\n var $parent = this.$parent;\n\n if (tdValue) {\n var value = get(item, key, '');\n\n if (isFunction(tdValue)) {\n return tdValue(value, key, item);\n } else if (isString(tdValue) && isFunction($parent[tdValue])) {\n return $parent[tdValue](value, key, item);\n }\n\n return tdValue;\n }\n\n return defaultValue;\n },\n getThValues: function getThValues(item, key, thValue, type, defaultValue) {\n var $parent = this.$parent;\n\n if (thValue) {\n var value = get(item, key, '');\n\n if (isFunction(thValue)) {\n return thValue(value, key, item, type);\n } else if (isString(thValue) && isFunction($parent[thValue])) {\n return $parent[thValue](value, key, item, type);\n }\n\n return thValue;\n }\n\n return defaultValue;\n },\n // Method to get the value for a field\n getFormattedValue: function getFormattedValue(item, field) {\n var key = field.key;\n var formatter = this.getFieldFormatter(key);\n var value = get(item, key, null);\n\n if (isFunction(formatter)) {\n value = formatter(value, key, item);\n }\n\n return isUndefinedOrNull(value) ? '' : value;\n },\n // Factory function methods\n toggleDetailsFactory: function toggleDetailsFactory(hasDetailsSlot, item) {\n var _this = this;\n\n // Returns a function to toggle a row's details slot\n return function () {\n if (hasDetailsSlot) {\n _this.$set(item, FIELD_KEY_SHOW_DETAILS, !item[FIELD_KEY_SHOW_DETAILS]);\n }\n };\n },\n // Row event handlers\n rowHovered: function rowHovered(event) {\n // `mouseenter` handler (non-bubbling)\n // `this.tbodyRowEvtStopped` from tbody mixin\n if (!this.tbodyRowEvtStopped(event)) {\n // `this.emitTbodyRowEvent` from tbody mixin\n this.emitTbodyRowEvent(EVENT_NAME_ROW_HOVERED, event);\n }\n },\n rowUnhovered: function rowUnhovered(event) {\n // `mouseleave` handler (non-bubbling)\n // `this.tbodyRowEvtStopped` from tbody mixin\n if (!this.tbodyRowEvtStopped(event)) {\n // `this.emitTbodyRowEvent` from tbody mixin\n this.emitTbodyRowEvent(EVENT_NAME_ROW_UNHOVERED, event);\n }\n },\n // Renders a TD or TH for a row's field\n renderTbodyRowCell: function renderTbodyRowCell(field, colIndex, item, rowIndex) {\n var _this2 = this;\n\n var isStacked = this.isStacked;\n var key = field.key,\n label = field.label,\n isRowHeader = field.isRowHeader;\n var h = this.$createElement;\n var hasDetailsSlot = this.hasNormalizedSlot(SLOT_NAME_ROW_DETAILS);\n var formatted = this.getFormattedValue(item, field);\n var stickyColumn = !isStacked && (this.isResponsive || this.stickyHeader) && field.stickyColumn; // We only uses the helper components for sticky columns to\n // improve performance of BTable/BTableLite by reducing the\n // total number of vue instances created during render\n\n var cellTag = stickyColumn ? isRowHeader ? BTh : BTd : isRowHeader ? 'th' : 'td';\n var cellVariant = item[FIELD_KEY_CELL_VARIANT] && item[FIELD_KEY_CELL_VARIANT][key] ? item[FIELD_KEY_CELL_VARIANT][key] : field.variant || null;\n var data = {\n // For the Vue key, we concatenate the column index and\n // field key (as field keys could be duplicated)\n // TODO: Although we do prevent duplicate field keys...\n // So we could change this to: `row-${rowIndex}-cell-${key}`\n class: [field.class ? field.class : '', this.getTdValues(item, key, field.tdClass, '')],\n props: {},\n attrs: _objectSpread({\n 'aria-colindex': String(colIndex + 1)\n }, isRowHeader ? this.getThValues(item, key, field.thAttr, 'row', {}) : this.getTdValues(item, key, field.tdAttr, {})),\n key: \"row-\".concat(rowIndex, \"-cell-\").concat(colIndex, \"-\").concat(key)\n };\n\n if (stickyColumn) {\n // We are using the helper BTd or BTh\n data.props = {\n stackedHeading: isStacked ? label : null,\n stickyColumn: true,\n variant: cellVariant\n };\n } else {\n // Using native TD or TH element, so we need to\n // add in the attributes and variant class\n data.attrs['data-label'] = isStacked && !isUndefinedOrNull(label) ? toString(label) : null;\n data.attrs.role = isRowHeader ? 'rowheader' : 'cell';\n data.attrs.scope = isRowHeader ? 'row' : null; // Add in the variant class\n\n if (cellVariant) {\n data.class.push(\"\".concat(this.dark ? 'bg' : 'table', \"-\").concat(cellVariant));\n }\n }\n\n var slotScope = {\n item: item,\n index: rowIndex,\n field: field,\n unformatted: get(item, key, ''),\n value: formatted,\n toggleDetails: this.toggleDetailsFactory(hasDetailsSlot, item),\n detailsShowing: Boolean(item[FIELD_KEY_SHOW_DETAILS])\n }; // If table supports selectable mode, then add in the following scope\n // this.supportsSelectableRows will be undefined if mixin isn't loaded\n\n if (this.supportsSelectableRows) {\n slotScope.rowSelected = this.isRowSelected(rowIndex);\n\n slotScope.selectRow = function () {\n return _this2.selectRow(rowIndex);\n };\n\n slotScope.unselectRow = function () {\n return _this2.unselectRow(rowIndex);\n };\n } // The new `v-slot` syntax doesn't like a slot name starting with\n // a square bracket and if using in-document HTML templates, the\n // v-slot attributes are lower-cased by the browser.\n // Switched to round bracket syntax to prevent confusion with\n // dynamic slot name syntax.\n // We look for slots in this order: `cell(${key})`, `cell(${key.toLowerCase()})`, 'cell()'\n // Slot names are now cached by mixin tbody in `this.$_bodyFieldSlotNameCache`\n // Will be `null` if no slot (or fallback slot) exists\n\n\n var slotName = this.$_bodyFieldSlotNameCache[key];\n var $childNodes = slotName ? this.normalizeSlot(slotName, slotScope) : toString(formatted);\n\n if (this.isStacked) {\n // We wrap in a DIV to ensure rendered as a single cell when visually stacked!\n $childNodes = [h('div', [$childNodes])];\n } // Render either a td or th cell\n\n\n return h(cellTag, data, [$childNodes]);\n },\n // Renders an item's row (or rows if details supported)\n renderTbodyRow: function renderTbodyRow(item, rowIndex) {\n var _this3 = this;\n\n var fields = this.computedFields,\n striped = this.striped,\n primaryKey = this.primaryKey,\n currentPage = this.currentPage,\n perPage = this.perPage,\n tbodyTrClass = this.tbodyTrClass,\n tbodyTrAttr = this.tbodyTrAttr;\n var h = this.$createElement;\n var hasDetailsSlot = this.hasNormalizedSlot(SLOT_NAME_ROW_DETAILS);\n var rowShowDetails = item[FIELD_KEY_SHOW_DETAILS] && hasDetailsSlot;\n var hasRowClickHandler = this.$listeners[EVENT_NAME_ROW_CLICKED] || this.hasSelectableRowClick; // We can return more than one TR if rowDetails enabled\n\n var $rows = []; // Details ID needed for `aria-details` when details showing\n // We set it to `null` when not showing so that attribute\n // does not appear on the element\n\n var detailsId = rowShowDetails ? this.safeId(\"_details_\".concat(rowIndex, \"_\")) : null; // For each item data field in row\n\n var $tds = fields.map(function (field, colIndex) {\n return _this3.renderTbodyRowCell(field, colIndex, item, rowIndex);\n }); // Calculate the row number in the dataset (indexed from 1)\n\n var ariaRowIndex = null;\n\n if (currentPage && perPage && perPage > 0) {\n ariaRowIndex = String((currentPage - 1) * perPage + rowIndex + 1);\n } // Create a unique :key to help ensure that sub components are re-rendered rather than\n // re-used, which can cause issues. If a primary key is not provided we use the rendered\n // rows index within the tbody.\n // See: https://github.com/bootstrap-vue/bootstrap-vue/issues/2410\n\n\n var primaryKeyValue = toString(get(item, primaryKey)) || null;\n var rowKey = primaryKeyValue || toString(rowIndex); // If primary key is provided, use it to generate a unique ID on each tbody > tr\n // In the format of '{tableId}__row_{primaryKeyValue}'\n\n var rowId = primaryKeyValue ? this.safeId(\"_row_\".concat(primaryKeyValue)) : null; // Selectable classes and attributes\n\n var selectableClasses = this.selectableRowClasses ? this.selectableRowClasses(rowIndex) : {};\n var selectableAttrs = this.selectableRowAttrs ? this.selectableRowAttrs(rowIndex) : {}; // Additional classes and attributes\n\n var userTrClasses = isFunction(tbodyTrClass) ? tbodyTrClass(item, 'row') : tbodyTrClass;\n var userTrAttrs = isFunction(tbodyTrAttr) ?\n /* istanbul ignore next */\n tbodyTrAttr(item, 'row') : tbodyTrAttr; // Add the item row\n\n $rows.push(h(BTr, {\n class: [userTrClasses, selectableClasses, rowShowDetails ? 'b-table-has-details' : ''],\n props: {\n variant: item[FIELD_KEY_ROW_VARIANT] || null\n },\n attrs: _objectSpread(_objectSpread({\n id: rowId\n }, userTrAttrs), {}, {\n // Users cannot override the following attributes\n tabindex: hasRowClickHandler ? '0' : null,\n 'data-pk': primaryKeyValue || null,\n 'aria-details': detailsId,\n 'aria-owns': detailsId,\n 'aria-rowindex': ariaRowIndex\n }, selectableAttrs),\n on: {\n // Note: These events are not A11Y friendly!\n mouseenter: this.rowHovered,\n mouseleave: this.rowUnhovered\n },\n key: \"__b-table-row-\".concat(rowKey, \"__\"),\n ref: 'item-rows',\n refInFor: true\n }, $tds)); // Row Details slot\n\n if (rowShowDetails) {\n var detailsScope = {\n item: item,\n index: rowIndex,\n fields: fields,\n toggleDetails: this.toggleDetailsFactory(hasDetailsSlot, item)\n }; // If table supports selectable mode, then add in the following scope\n // this.supportsSelectableRows will be undefined if mixin isn't loaded\n\n if (this.supportsSelectableRows) {\n detailsScope.rowSelected = this.isRowSelected(rowIndex);\n\n detailsScope.selectRow = function () {\n return _this3.selectRow(rowIndex);\n };\n\n detailsScope.unselectRow = function () {\n return _this3.unselectRow(rowIndex);\n };\n } // Render the details slot in a TD\n\n\n var $details = h(BTd, {\n props: {\n colspan: fields.length\n },\n class: this.detailsTdClass\n }, [this.normalizeSlot(SLOT_NAME_ROW_DETAILS, detailsScope)]); // Add a hidden row to keep table row striping consistent when details showing\n // Only added if the table is striped\n\n if (striped) {\n $rows.push( // We don't use `BTr` here as we don't need the extra functionality\n h('tr', {\n staticClass: 'd-none',\n attrs: {\n 'aria-hidden': 'true',\n role: 'presentation'\n },\n key: \"__b-table-details-stripe__\".concat(rowKey)\n }));\n } // Add the actual details row\n\n\n var userDetailsTrClasses = isFunction(this.tbodyTrClass) ?\n /* istanbul ignore next */\n this.tbodyTrClass(item, SLOT_NAME_ROW_DETAILS) : this.tbodyTrClass;\n var userDetailsTrAttrs = isFunction(this.tbodyTrAttr) ?\n /* istanbul ignore next */\n this.tbodyTrAttr(item, SLOT_NAME_ROW_DETAILS) : this.tbodyTrAttr;\n $rows.push(h(BTr, {\n staticClass: 'b-table-details',\n class: [userDetailsTrClasses],\n props: {\n variant: item[FIELD_KEY_ROW_VARIANT] || null\n },\n attrs: _objectSpread(_objectSpread({}, userDetailsTrAttrs), {}, {\n // Users cannot override the following attributes\n id: detailsId,\n tabindex: '-1'\n }),\n key: \"__b-table-details__\".concat(rowKey)\n }, [$details]));\n } else if (hasDetailsSlot) {\n // Only add the placeholder if a the table has a row-details slot defined (but not shown)\n $rows.push(h());\n\n if (striped) {\n // Add extra placeholder if table is striped\n $rows.push(h());\n }\n } // Return the row(s)\n\n\n return $rows;\n }\n }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue } from '../../../vue';\nimport { EVENT_NAME_ROW_CLICKED, EVENT_NAME_ROW_CONTEXTMENU, EVENT_NAME_ROW_DBLCLICKED, EVENT_NAME_ROW_MIDDLE_CLICKED } from '../../../constants/events';\nimport { CODE_DOWN, CODE_END, CODE_ENTER, CODE_HOME, CODE_SPACE, CODE_UP } from '../../../constants/key-codes';\nimport { PROP_TYPE_ARRAY_OBJECT_STRING } from '../../../constants/props';\nimport { arrayIncludes, from as arrayFrom } from '../../../utils/array';\nimport { attemptFocus, closest, isActiveElement, isElement } from '../../../utils/dom';\nimport { stopEvent } from '../../../utils/events';\nimport { sortKeys } from '../../../utils/object';\nimport { makeProp, pluckProps } from '../../../utils/props';\nimport { BTbody, props as BTbodyProps } from '../tbody';\nimport { filterEvent } from './filter-event';\nimport { textSelectionActive } from './text-selection-active';\nimport { tbodyRowMixin, props as tbodyRowProps } from './mixin-tbody-row'; // --- Helper methods ---\n\nvar getCellSlotName = function getCellSlotName(value) {\n return \"cell(\".concat(value || '', \")\");\n}; // --- Props ---\n\n\nexport var props = sortKeys(_objectSpread(_objectSpread(_objectSpread({}, BTbodyProps), tbodyRowProps), {}, {\n tbodyClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING)\n})); // --- Mixin ---\n// @vue/component\n\nexport var tbodyMixin = Vue.extend({\n mixins: [tbodyRowMixin],\n props: props,\n beforeDestroy: function beforeDestroy() {\n this.$_bodyFieldSlotNameCache = null;\n },\n methods: {\n // Returns all the item TR elements (excludes detail and spacer rows)\n // `this.$refs['item-rows']` is an array of item TR components/elements\n // Rows should all be `` components, but we map to TR elements\n // Also note that `this.$refs['item-rows']` may not always be in document order\n getTbodyTrs: function getTbodyTrs() {\n var $refs = this.$refs;\n var tbody = $refs.tbody ? $refs.tbody.$el || $refs.tbody : null;\n var trs = ($refs['item-rows'] || []).map(function (tr) {\n return tr.$el || tr;\n });\n return tbody && tbody.children && tbody.children.length > 0 && trs && trs.length > 0 ? arrayFrom(tbody.children).filter(function (tr) {\n return arrayIncludes(trs, tr);\n }) :\n /* istanbul ignore next */\n [];\n },\n // Returns index of a particular TBODY item TR\n // We set `true` on closest to include self in result\n getTbodyTrIndex: function getTbodyTrIndex(el) {\n /* istanbul ignore next: should not normally happen */\n if (!isElement(el)) {\n return -1;\n }\n\n var tr = el.tagName === 'TR' ? el : closest('tr', el, true);\n return tr ? this.getTbodyTrs().indexOf(tr) : -1;\n },\n // Emits a row event, with the item object, row index and original event\n emitTbodyRowEvent: function emitTbodyRowEvent(type, event) {\n if (type && this.hasListener(type) && event && event.target) {\n var rowIndex = this.getTbodyTrIndex(event.target);\n\n if (rowIndex > -1) {\n // The array of TRs correlate to the `computedItems` array\n var item = this.computedItems[rowIndex];\n this.$emit(type, item, rowIndex, event);\n }\n }\n },\n tbodyRowEvtStopped: function tbodyRowEvtStopped(event) {\n return this.stopIfBusy && this.stopIfBusy(event);\n },\n // Delegated row event handlers\n onTbodyRowKeydown: function onTbodyRowKeydown(event) {\n // Keyboard navigation and row click emulation\n var target = event.target,\n keyCode = event.keyCode;\n\n if (this.tbodyRowEvtStopped(event) || target.tagName !== 'TR' || !isActiveElement(target) || target.tabIndex !== 0) {\n // Early exit if not an item row TR\n return;\n }\n\n if (arrayIncludes([CODE_ENTER, CODE_SPACE], keyCode)) {\n // Emulated click for keyboard users, transfer to click handler\n stopEvent(event);\n this.onTBodyRowClicked(event);\n } else if (arrayIncludes([CODE_UP, CODE_DOWN, CODE_HOME, CODE_END], keyCode)) {\n // Keyboard navigation\n var rowIndex = this.getTbodyTrIndex(target);\n\n if (rowIndex > -1) {\n stopEvent(event);\n var trs = this.getTbodyTrs();\n var shift = event.shiftKey;\n\n if (keyCode === CODE_HOME || shift && keyCode === CODE_UP) {\n // Focus first row\n attemptFocus(trs[0]);\n } else if (keyCode === CODE_END || shift && keyCode === CODE_DOWN) {\n // Focus last row\n attemptFocus(trs[trs.length - 1]);\n } else if (keyCode === CODE_UP && rowIndex > 0) {\n // Focus previous row\n attemptFocus(trs[rowIndex - 1]);\n } else if (keyCode === CODE_DOWN && rowIndex < trs.length - 1) {\n // Focus next row\n attemptFocus(trs[rowIndex + 1]);\n }\n }\n }\n },\n onTBodyRowClicked: function onTBodyRowClicked(event) {\n // Don't emit event when the table is busy, the user clicked\n // on a non-disabled control or is selecting text\n if (this.tbodyRowEvtStopped(event) || filterEvent(event) || textSelectionActive(this.$el)) {\n return;\n }\n\n this.emitTbodyRowEvent(EVENT_NAME_ROW_CLICKED, event);\n },\n onTbodyRowMiddleMouseRowClicked: function onTbodyRowMiddleMouseRowClicked(event) {\n if (!this.tbodyRowEvtStopped(event) && event.which === 2) {\n this.emitTbodyRowEvent(EVENT_NAME_ROW_MIDDLE_CLICKED, event);\n }\n },\n onTbodyRowContextmenu: function onTbodyRowContextmenu(event) {\n if (!this.tbodyRowEvtStopped(event)) {\n this.emitTbodyRowEvent(EVENT_NAME_ROW_CONTEXTMENU, event);\n }\n },\n onTbodyRowDblClicked: function onTbodyRowDblClicked(event) {\n if (!this.tbodyRowEvtStopped(event) && !filterEvent(event)) {\n this.emitTbodyRowEvent(EVENT_NAME_ROW_DBLCLICKED, event);\n }\n },\n // Render the tbody element and children\n // Note:\n // Row hover handlers are handled by the tbody-row mixin\n // As mouseenter/mouseleave events do not bubble\n renderTbody: function renderTbody() {\n var _this = this;\n\n var items = this.computedItems,\n renderBusy = this.renderBusy,\n renderTopRow = this.renderTopRow,\n renderEmpty = this.renderEmpty,\n renderBottomRow = this.renderBottomRow;\n var h = this.$createElement;\n var hasRowClickHandler = this.hasListener(EVENT_NAME_ROW_CLICKED) || this.hasSelectableRowClick; // Prepare the tbody rows\n\n var $rows = []; // Add the item data rows or the busy slot\n\n var $busy = renderBusy ? renderBusy() : null;\n\n if ($busy) {\n // If table is busy and a busy slot, then return only the busy \"row\" indicator\n $rows.push($busy);\n } else {\n // Table isn't busy, or we don't have a busy slot\n // Create a slot cache for improved performance when looking up cell slot names\n // Values will be keyed by the field's `key` and will store the slot's name\n // Slots could be dynamic (i.e. `v-if`), so we must compute on each render\n // Used by tbody-row mixin render helper\n var cache = {};\n var defaultSlotName = getCellSlotName();\n defaultSlotName = this.hasNormalizedSlot(defaultSlotName) ? defaultSlotName : null;\n this.computedFields.forEach(function (field) {\n var key = field.key;\n var slotName = getCellSlotName(key);\n var lowercaseSlotName = getCellSlotName(key.toLowerCase());\n cache[key] = _this.hasNormalizedSlot(slotName) ? slotName : _this.hasNormalizedSlot(lowercaseSlotName) ?\n /* istanbul ignore next */\n lowercaseSlotName : defaultSlotName;\n }); // Created as a non-reactive property so to not trigger component updates\n // Must be a fresh object each render\n\n this.$_bodyFieldSlotNameCache = cache; // Add static top row slot (hidden in visibly stacked mode\n // as we can't control `data-label` attr)\n\n $rows.push(renderTopRow ? renderTopRow() : h()); // Render the rows\n\n items.forEach(function (item, rowIndex) {\n // Render the individual item row (rows if details slot)\n $rows.push(_this.renderTbodyRow(item, rowIndex));\n }); // Empty items / empty filtered row slot (only shows if `items.length < 1`)\n\n $rows.push(renderEmpty ? renderEmpty() : h()); // Static bottom row slot (hidden in visibly stacked mode\n // as we can't control `data-label` attr)\n\n $rows.push(renderBottomRow ? renderBottomRow() : h());\n } // Note: these events will only emit if a listener is registered\n\n\n var handlers = {\n auxclick: this.onTbodyRowMiddleMouseRowClicked,\n // TODO:\n // Perhaps we do want to automatically prevent the\n // default context menu from showing if there is a\n // `row-contextmenu` listener registered\n contextmenu: this.onTbodyRowContextmenu,\n // The following event(s) is not considered A11Y friendly\n dblclick: this.onTbodyRowDblClicked // Hover events (`mouseenter`/`mouseleave`) are handled by `tbody-row` mixin\n\n }; // Add in click/keydown listeners if needed\n\n if (hasRowClickHandler) {\n handlers.click = this.onTBodyRowClicked;\n handlers.keydown = this.onTbodyRowKeydown;\n } // Assemble rows into the tbody\n\n\n var $tbody = h(BTbody, {\n class: this.tbodyClass || null,\n props: pluckProps(BTbodyProps, this.$props),\n // BTbody transfers all native event listeners to the root element\n // TODO: Only set the handlers if the table is not busy\n on: handlers,\n ref: 'tbody'\n }, $rows); // Return the assembled tbody\n\n return $tbody;\n }\n }\n});","import { Vue } from '../../../vue';\nimport { PROP_TYPE_STRING } from '../../../constants/props';\nimport { SLOT_NAME_TABLE_CAPTION } from '../../../constants/slots';\nimport { htmlOrText } from '../../../utils/html';\nimport { makeProp } from '../../../utils/props'; // --- Props ---\n\nexport var props = {\n caption: makeProp(PROP_TYPE_STRING),\n captionHtml: makeProp(PROP_TYPE_STRING) // `caption-top` is part of table-render mixin (styling)\n // captionTop: makeProp(PROP_TYPE_BOOLEAN, false)\n\n}; // --- Mixin ---\n// @vue/component\n\nexport var captionMixin = Vue.extend({\n props: props,\n computed: {\n captionId: function captionId() {\n // Even though `this.safeId` looks like a method, it is a computed prop\n // that returns a new function if the underlying ID changes\n return this.isStacked ? this.safeId('_caption_') : null;\n }\n },\n methods: {\n renderCaption: function renderCaption() {\n var caption = this.caption,\n captionHtml = this.captionHtml;\n var h = this.$createElement;\n var $caption = h();\n var hasCaptionSlot = this.hasNormalizedSlot(SLOT_NAME_TABLE_CAPTION);\n\n if (hasCaptionSlot || caption || captionHtml) {\n $caption = h('caption', {\n attrs: {\n id: this.captionId\n },\n domProps: hasCaptionSlot ? {} : htmlOrText(captionHtml, caption),\n key: 'caption'\n }, this.normalizeSlot(SLOT_NAME_TABLE_CAPTION));\n }\n\n return $caption;\n }\n }\n});","function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue, mergeData } from '../../vue';\nimport { NAME_IMG } from '../../constants/components';\nimport { PROP_TYPE_ARRAY_STRING, PROP_TYPE_BOOLEAN, PROP_TYPE_BOOLEAN_STRING, PROP_TYPE_NUMBER_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { concat } from '../../utils/array';\nimport { identity } from '../../utils/identity';\nimport { isString } from '../../utils/inspect';\nimport { toInteger } from '../../utils/number';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { toString } from '../../utils/string'; // --- Constants --\n// Blank image with fill template\n\nvar BLANK_TEMPLATE = '' + '' + ''; // --- Helper methods ---\n\nvar makeBlankImgSrc = function makeBlankImgSrc(width, height, color) {\n var src = encodeURIComponent(BLANK_TEMPLATE.replace('%{w}', toString(width)).replace('%{h}', toString(height)).replace('%{f}', color));\n return \"data:image/svg+xml;charset=UTF-8,\".concat(src);\n}; // --- Props ---\n\n\nexport var props = makePropsConfigurable({\n alt: makeProp(PROP_TYPE_STRING),\n blank: makeProp(PROP_TYPE_BOOLEAN, false),\n blankColor: makeProp(PROP_TYPE_STRING, 'transparent'),\n block: makeProp(PROP_TYPE_BOOLEAN, false),\n center: makeProp(PROP_TYPE_BOOLEAN, false),\n fluid: makeProp(PROP_TYPE_BOOLEAN, false),\n // Gives fluid images class `w-100` to make them grow to fit container\n fluidGrow: makeProp(PROP_TYPE_BOOLEAN, false),\n height: makeProp(PROP_TYPE_NUMBER_STRING),\n left: makeProp(PROP_TYPE_BOOLEAN, false),\n right: makeProp(PROP_TYPE_BOOLEAN, false),\n // Possible values:\n // `false`: no rounding of corners\n // `true`: slightly rounded corners\n // 'top': top corners rounded\n // 'right': right corners rounded\n // 'bottom': bottom corners rounded\n // 'left': left corners rounded\n // 'circle': circle/oval\n // '0': force rounding off\n rounded: makeProp(PROP_TYPE_BOOLEAN_STRING, false),\n sizes: makeProp(PROP_TYPE_ARRAY_STRING),\n src: makeProp(PROP_TYPE_STRING),\n srcset: makeProp(PROP_TYPE_ARRAY_STRING),\n thumbnail: makeProp(PROP_TYPE_BOOLEAN, false),\n width: makeProp(PROP_TYPE_NUMBER_STRING)\n}, NAME_IMG); // --- Main component ---\n// @vue/component\n\nexport var BImg = /*#__PURE__*/Vue.extend({\n name: NAME_IMG,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var _class;\n\n var props = _ref.props,\n data = _ref.data;\n var alt = props.alt,\n src = props.src,\n block = props.block,\n fluidGrow = props.fluidGrow,\n rounded = props.rounded;\n var width = toInteger(props.width) || null;\n var height = toInteger(props.height) || null;\n var align = null;\n var srcset = concat(props.srcset).filter(identity).join(',');\n var sizes = concat(props.sizes).filter(identity).join(',');\n\n if (props.blank) {\n if (!height && width) {\n height = width;\n } else if (!width && height) {\n width = height;\n }\n\n if (!width && !height) {\n width = 1;\n height = 1;\n } // Make a blank SVG image\n\n\n src = makeBlankImgSrc(width, height, props.blankColor || 'transparent'); // Disable srcset and sizes\n\n srcset = null;\n sizes = null;\n }\n\n if (props.left) {\n align = 'float-left';\n } else if (props.right) {\n align = 'float-right';\n } else if (props.center) {\n align = 'mx-auto';\n block = true;\n }\n\n return h('img', mergeData(data, {\n attrs: {\n src: src,\n alt: alt,\n width: width ? toString(width) : null,\n height: height ? toString(height) : null,\n srcset: srcset || null,\n sizes: sizes || null\n },\n class: (_class = {\n 'img-thumbnail': props.thumbnail,\n 'img-fluid': props.fluid || fluidGrow,\n 'w-100': fluidGrow,\n rounded: rounded === '' || rounded === true\n }, _defineProperty(_class, \"rounded-\".concat(rounded), isString(rounded) && rounded !== ''), _defineProperty(_class, align, align), _defineProperty(_class, 'd-block', block), _class)\n }));\n }\n});","import { Vue, mergeData } from '../../vue';\nimport { NAME_CARD_TITLE } from '../../constants/components';\nimport { PROP_TYPE_STRING } from '../../constants/props';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { toString } from '../../utils/string'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n title: makeProp(PROP_TYPE_STRING),\n titleTag: makeProp(PROP_TYPE_STRING, 'h4')\n}, NAME_CARD_TITLE); // --- Main component ---\n// @vue/component\n\nexport var BCardTitle = /*#__PURE__*/Vue.extend({\n name: NAME_CARD_TITLE,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n return h(props.titleTag, mergeData(data, {\n staticClass: 'card-title'\n }), children || toString(props.title));\n }\n});","var _watch;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue } from '../../vue';\nimport { NAME_COLLAPSE } from '../../constants/components';\nimport { CLASS_NAME_SHOW } from '../../constants/classes';\nimport { IS_BROWSER } from '../../constants/env';\nimport { EVENT_NAME_HIDDEN, EVENT_NAME_HIDE, EVENT_NAME_SHOW, EVENT_NAME_SHOWN, EVENT_OPTIONS_NO_CAPTURE } from '../../constants/events';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../constants/props';\nimport { SLOT_NAME_DEFAULT } from '../../constants/slots';\nimport { addClass, hasClass, removeClass, closest, matches, getCS } from '../../utils/dom';\nimport { getRootActionEventName, getRootEventName, eventOnOff } from '../../utils/events';\nimport { makeModelMixin } from '../../utils/model';\nimport { sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { idMixin, props as idProps } from '../../mixins/id';\nimport { listenOnRootMixin } from '../../mixins/listen-on-root';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { BVCollapse } from './helpers/bv-collapse'; // --- Constants ---\n\nvar ROOT_ACTION_EVENT_NAME_TOGGLE = getRootActionEventName(NAME_COLLAPSE, 'toggle');\nvar ROOT_ACTION_EVENT_NAME_REQUEST_STATE = getRootActionEventName(NAME_COLLAPSE, 'request-state');\nvar ROOT_EVENT_NAME_ACCORDION = getRootEventName(NAME_COLLAPSE, 'accordion');\nvar ROOT_EVENT_NAME_STATE = getRootEventName(NAME_COLLAPSE, 'state');\nvar ROOT_EVENT_NAME_SYNC_STATE = getRootEventName(NAME_COLLAPSE, 'sync-state');\n\nvar _makeModelMixin = makeModelMixin('visible', {\n type: PROP_TYPE_BOOLEAN,\n defaultValue: false\n}),\n modelMixin = _makeModelMixin.mixin,\n modelProps = _makeModelMixin.props,\n MODEL_PROP_NAME = _makeModelMixin.prop,\n MODEL_EVENT_NAME = _makeModelMixin.event; // --- Props ---\n\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread(_objectSpread({}, idProps), modelProps), {}, {\n // If `true` (and `visible` is `true` on mount), animate initially visible\n accordion: makeProp(PROP_TYPE_STRING),\n appear: makeProp(PROP_TYPE_BOOLEAN, false),\n isNav: makeProp(PROP_TYPE_BOOLEAN, false),\n tag: makeProp(PROP_TYPE_STRING, 'div')\n})), NAME_COLLAPSE); // --- Main component ---\n// @vue/component\n\nexport var BCollapse = /*#__PURE__*/Vue.extend({\n name: NAME_COLLAPSE,\n mixins: [idMixin, modelMixin, normalizeSlotMixin, listenOnRootMixin],\n props: props,\n data: function data() {\n return {\n show: this[MODEL_PROP_NAME],\n transitioning: false\n };\n },\n computed: {\n classObject: function classObject() {\n var transitioning = this.transitioning;\n return {\n 'navbar-collapse': this.isNav,\n collapse: !transitioning,\n show: this.show && !transitioning\n };\n },\n slotScope: function slotScope() {\n var _this = this;\n\n return {\n visible: this.show,\n close: function close() {\n _this.show = false;\n }\n };\n }\n },\n watch: (_watch = {}, _defineProperty(_watch, MODEL_PROP_NAME, function (newValue) {\n if (newValue !== this.show) {\n this.show = newValue;\n }\n }), _defineProperty(_watch, \"show\", function show(newValue, oldValue) {\n if (newValue !== oldValue) {\n this.emitState();\n }\n }), _watch),\n created: function created() {\n this.show = this[MODEL_PROP_NAME];\n },\n mounted: function mounted() {\n var _this2 = this;\n\n this.show = this[MODEL_PROP_NAME]; // Listen for toggle events to open/close us\n\n this.listenOnRoot(ROOT_ACTION_EVENT_NAME_TOGGLE, this.handleToggleEvt); // Listen to other collapses for accordion events\n\n this.listenOnRoot(ROOT_EVENT_NAME_ACCORDION, this.handleAccordionEvt);\n\n if (this.isNav) {\n // Set up handlers\n this.setWindowEvents(true);\n this.handleResize();\n }\n\n this.$nextTick(function () {\n _this2.emitState();\n }); // Listen for \"Sync state\" requests from `v-b-toggle`\n\n this.listenOnRoot(ROOT_ACTION_EVENT_NAME_REQUEST_STATE, function (id) {\n if (id === _this2.safeId()) {\n _this2.$nextTick(_this2.emitSync);\n }\n });\n },\n updated: function updated() {\n // Emit a private event every time this component updates to ensure\n // the toggle button is in sync with the collapse's state\n // It is emitted regardless if the visible state changes\n this.emitSync();\n },\n\n /* istanbul ignore next */\n deactivated: function deactivated() {\n if (this.isNav) {\n this.setWindowEvents(false);\n }\n },\n\n /* istanbul ignore next */\n activated: function activated() {\n if (this.isNav) {\n this.setWindowEvents(true);\n }\n\n this.emitSync();\n },\n beforeDestroy: function beforeDestroy() {\n // Trigger state emit if needed\n this.show = false;\n\n if (this.isNav && IS_BROWSER) {\n this.setWindowEvents(false);\n }\n },\n methods: {\n setWindowEvents: function setWindowEvents(on) {\n eventOnOff(on, window, 'resize', this.handleResize, EVENT_OPTIONS_NO_CAPTURE);\n eventOnOff(on, window, 'orientationchange', this.handleResize, EVENT_OPTIONS_NO_CAPTURE);\n },\n toggle: function toggle() {\n this.show = !this.show;\n },\n onEnter: function onEnter() {\n this.transitioning = true; // This should be moved out so we can add cancellable events\n\n this.$emit(EVENT_NAME_SHOW);\n },\n onAfterEnter: function onAfterEnter() {\n this.transitioning = false;\n this.$emit(EVENT_NAME_SHOWN);\n },\n onLeave: function onLeave() {\n this.transitioning = true; // This should be moved out so we can add cancellable events\n\n this.$emit(EVENT_NAME_HIDE);\n },\n onAfterLeave: function onAfterLeave() {\n this.transitioning = false;\n this.$emit(EVENT_NAME_HIDDEN);\n },\n emitState: function emitState() {\n var show = this.show,\n accordion = this.accordion;\n var id = this.safeId();\n this.$emit(MODEL_EVENT_NAME, show); // Let `v-b-toggle` know the state of this collapse\n\n this.emitOnRoot(ROOT_EVENT_NAME_STATE, id, show);\n\n if (accordion && show) {\n // Tell the other collapses in this accordion to close\n this.emitOnRoot(ROOT_EVENT_NAME_ACCORDION, id, accordion);\n }\n },\n emitSync: function emitSync() {\n // Emit a private event every time this component updates to ensure\n // the toggle button is in sync with the collapse's state\n // It is emitted regardless if the visible state changes\n this.emitOnRoot(ROOT_EVENT_NAME_SYNC_STATE, this.safeId(), this.show);\n },\n checkDisplayBlock: function checkDisplayBlock() {\n // Check to see if the collapse has `display: block !important` set\n // We can't set `display: none` directly on `this.$el`, as it would\n // trigger a new transition to start (or cancel a current one)\n var $el = this.$el;\n var restore = hasClass($el, CLASS_NAME_SHOW);\n removeClass($el, CLASS_NAME_SHOW);\n var isBlock = getCS($el).display === 'block';\n\n if (restore) {\n addClass($el, CLASS_NAME_SHOW);\n }\n\n return isBlock;\n },\n clickHandler: function clickHandler(event) {\n var el = event.target; // If we are in a nav/navbar, close the collapse when non-disabled link clicked\n\n /* istanbul ignore next: can't test `getComputedStyle()` in JSDOM */\n\n if (!this.isNav || !el || getCS(this.$el).display !== 'block') {\n return;\n } // Only close the collapse if it is not forced to be `display: block !important`\n\n\n if ((matches(el, '.nav-link,.dropdown-item') || closest('.nav-link,.dropdown-item', el)) && !this.checkDisplayBlock()) {\n this.show = false;\n }\n },\n handleToggleEvt: function handleToggleEvt(id) {\n if (id === this.safeId()) {\n this.toggle();\n }\n },\n handleAccordionEvt: function handleAccordionEvt(openedId, openAccordion) {\n var accordion = this.accordion,\n show = this.show;\n\n if (!accordion || accordion !== openAccordion) {\n return;\n }\n\n var isThis = openedId === this.safeId(); // Open this collapse if not shown or\n // close this collapse if shown\n\n if (isThis && !show || !isThis && show) {\n this.toggle();\n }\n },\n handleResize: function handleResize() {\n // Handler for orientation/resize to set collapsed state in nav/navbar\n this.show = getCS(this.$el).display === 'block';\n }\n },\n render: function render(h) {\n var appear = this.appear;\n var $content = h(this.tag, {\n class: this.classObject,\n directives: [{\n name: 'show',\n value: this.show\n }],\n attrs: {\n id: this.safeId()\n },\n on: {\n click: this.clickHandler\n }\n }, this.normalizeSlot(SLOT_NAME_DEFAULT, this.slotScope));\n return h(BVCollapse, {\n props: {\n appear: appear\n },\n on: {\n enter: this.onEnter,\n afterEnter: this.onAfterEnter,\n leave: this.onLeave,\n afterLeave: this.onAfterLeave\n }\n }, [$content]);\n }\n});","export var CLASS_NAME_SHOW = 'show';\nexport var CLASS_NAME_FADE = 'fade';","// Generic collapse transion helper component\n//\n// Note:\n// Applies the classes `collapse`, `show` and `collapsing`\n// during the enter/leave transition phases only\n// Although it appears that Vue may be leaving the classes\n// in-place after the transition completes\nimport { Vue, mergeData } from '../../../vue';\nimport { NAME_COLLAPSE_HELPER } from '../../../constants/components';\nimport { getBCR, reflow, removeStyle, requestAF, setStyle } from '../../../utils/dom'; // --- Helper methods ---\n// Transition event handler helpers\n\nvar onEnter = function onEnter(el) {\n setStyle(el, 'height', 0); // In a `requestAF()` for `appear` to work\n\n requestAF(function () {\n reflow(el);\n setStyle(el, 'height', \"\".concat(el.scrollHeight, \"px\"));\n });\n};\n\nvar onAfterEnter = function onAfterEnter(el) {\n removeStyle(el, 'height');\n};\n\nvar onLeave = function onLeave(el) {\n setStyle(el, 'height', 'auto');\n setStyle(el, 'display', 'block');\n setStyle(el, 'height', \"\".concat(getBCR(el).height, \"px\"));\n reflow(el);\n setStyle(el, 'height', 0);\n};\n\nvar onAfterLeave = function onAfterLeave(el) {\n removeStyle(el, 'height');\n}; // --- Constants ---\n// Default transition props\n// `appear` will use the enter classes\n\n\nvar TRANSITION_PROPS = {\n css: true,\n enterClass: '',\n enterActiveClass: 'collapsing',\n enterToClass: 'collapse show',\n leaveClass: 'collapse show',\n leaveActiveClass: 'collapsing',\n leaveToClass: 'collapse'\n}; // Default transition handlers\n// `appear` will use the enter handlers\n\nvar TRANSITION_HANDLERS = {\n enter: onEnter,\n afterEnter: onAfterEnter,\n leave: onLeave,\n afterLeave: onAfterLeave\n}; // --- Main component ---\n// @vue/component\n\nexport var BVCollapse = /*#__PURE__*/Vue.extend({\n name: NAME_COLLAPSE_HELPER,\n functional: true,\n props: {\n appear: {\n // If `true` (and `visible` is `true` on mount), animate initially visible\n type: Boolean,\n default: false\n }\n },\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n return h('transition', // We merge in the `appear` prop last\n mergeData(data, {\n props: TRANSITION_PROPS,\n on: TRANSITION_HANDLERS\n }, {\n props: props\n }), // Note: `` supports a single root element only\n children);\n }\n});","import { identity } from '../../../utils/identity';\nimport { isArray, isFunction, isObject, isString } from '../../../utils/inspect';\nimport { clone, keys } from '../../../utils/object';\nimport { startCase } from '../../../utils/string';\nimport { IGNORED_FIELD_KEYS } from './constants'; // Private function to massage field entry into common object format\n\nvar processField = function processField(key, value) {\n var field = null;\n\n if (isString(value)) {\n // Label shortcut\n field = {\n key: key,\n label: value\n };\n } else if (isFunction(value)) {\n // Formatter shortcut\n field = {\n key: key,\n formatter: value\n };\n } else if (isObject(value)) {\n field = clone(value);\n field.key = field.key || key;\n } else if (value !== false) {\n // Fallback to just key\n\n /* istanbul ignore next */\n field = {\n key: key\n };\n }\n\n return field;\n}; // We normalize fields into an array of objects\n// [ { key:..., label:..., ...}, {...}, ..., {..}]\n\n\nexport var normalizeFields = function normalizeFields(origFields, items) {\n var fields = [];\n\n if (isArray(origFields)) {\n // Normalize array Form\n origFields.filter(identity).forEach(function (f) {\n if (isString(f)) {\n fields.push({\n key: f,\n label: startCase(f)\n });\n } else if (isObject(f) && f.key && isString(f.key)) {\n // Full object definition. We use assign so that we don't mutate the original\n fields.push(clone(f));\n } else if (isObject(f) && keys(f).length === 1) {\n // Shortcut object (i.e. { 'foo_bar': 'This is Foo Bar' }\n var key = keys(f)[0];\n var field = processField(key, f[key]);\n\n if (field) {\n fields.push(field);\n }\n }\n });\n } // If no field provided, take a sample from first record (if exits)\n\n\n if (fields.length === 0 && isArray(items) && items.length > 0) {\n var sample = items[0];\n keys(sample).forEach(function (k) {\n if (!IGNORED_FIELD_KEYS[k]) {\n fields.push({\n key: k,\n label: startCase(k)\n });\n }\n });\n } // Ensure we have a unique array of fields and that they have String labels\n\n\n var memo = {};\n return fields.filter(function (f) {\n if (!memo[f.key]) {\n memo[f.key] = true;\n f.label = isString(f.label) ? f.label : startCase(f.key);\n return true;\n }\n\n return false;\n });\n};","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue } from '../../../vue';\nimport { EVENT_NAME_CONTEXT_CHANGED } from '../../../constants/events';\nimport { PROP_TYPE_ARRAY, PROP_TYPE_STRING } from '../../../constants/props';\nimport { isArray, isFunction, isString } from '../../../utils/inspect';\nimport { looseEqual } from '../../../utils/loose-equal';\nimport { mathMax } from '../../../utils/math';\nimport { makeModelMixin } from '../../../utils/model';\nimport { toInteger } from '../../../utils/number';\nimport { clone, sortKeys } from '../../../utils/object';\nimport { makeProp } from '../../../utils/props';\nimport { normalizeFields } from './normalize-fields'; // --- Constants ---\n\nvar _makeModelMixin = makeModelMixin('value', {\n type: PROP_TYPE_ARRAY,\n defaultValue: []\n}),\n modelMixin = _makeModelMixin.mixin,\n modelProps = _makeModelMixin.props,\n MODEL_PROP_NAME = _makeModelMixin.prop,\n MODEL_EVENT_NAME = _makeModelMixin.event;\n\nexport { MODEL_PROP_NAME, MODEL_EVENT_NAME }; // --- Props ---\n\nexport var props = sortKeys(_objectSpread(_objectSpread({}, modelProps), {}, _defineProperty({\n fields: makeProp(PROP_TYPE_ARRAY, null),\n // Provider mixin adds in `Function` type\n items: makeProp(PROP_TYPE_ARRAY, []),\n // Primary key for record\n // If provided the value in each row must be unique!\n primaryKey: makeProp(PROP_TYPE_STRING)\n}, MODEL_PROP_NAME, makeProp(PROP_TYPE_ARRAY, [])))); // --- Mixin ---\n// @vue/component\n\nexport var itemsMixin = Vue.extend({\n mixins: [modelMixin],\n props: props,\n data: function data() {\n var items = this.items;\n return {\n // Our local copy of the items\n // Must be an array\n localItems: isArray(items) ? items.slice() : []\n };\n },\n computed: {\n computedFields: function computedFields() {\n // We normalize fields into an array of objects\n // `[ { key:..., label:..., ...}, {...}, ..., {..}]`\n return normalizeFields(this.fields, this.localItems);\n },\n computedFieldsObj: function computedFieldsObj() {\n // Fields as a simple lookup hash object\n // Mainly for formatter lookup and use in `scopedSlots` for convenience\n // If the field has a formatter, it normalizes formatter to a\n // function ref or `undefined` if no formatter\n var $parent = this.$parent;\n return this.computedFields.reduce(function (obj, f) {\n // We use object spread here so we don't mutate the original field object\n obj[f.key] = clone(f);\n\n if (f.formatter) {\n // Normalize formatter to a function ref or `undefined`\n var formatter = f.formatter;\n\n if (isString(formatter) && isFunction($parent[formatter])) {\n formatter = $parent[formatter];\n } else if (!isFunction(formatter)) {\n /* istanbul ignore next */\n formatter = undefined;\n } // Return formatter function or `undefined` if none\n\n\n obj[f.key].formatter = formatter;\n }\n\n return obj;\n }, {});\n },\n computedItems: function computedItems() {\n // Fallback if various mixins not provided\n return (this.paginatedItems || this.sortedItems || this.filteredItems || this.localItems ||\n /* istanbul ignore next */\n []).slice();\n },\n context: function context() {\n // Current state of sorting, filtering and pagination props/values\n return {\n filter: this.localFilter,\n sortBy: this.localSortBy,\n sortDesc: this.localSortDesc,\n perPage: mathMax(toInteger(this.perPage, 0), 0),\n currentPage: mathMax(toInteger(this.currentPage, 0), 1),\n apiUrl: this.apiUrl\n };\n }\n },\n watch: {\n items: function items(newValue) {\n // Set `localItems`/`filteredItems` to a copy of the provided array\n this.localItems = isArray(newValue) ? newValue.slice() : [];\n },\n // Watch for changes on `computedItems` and update the `v-model`\n computedItems: function computedItems(newValue, oldValue) {\n if (!looseEqual(newValue, oldValue)) {\n this.$emit(MODEL_EVENT_NAME, newValue);\n }\n },\n // Watch for context changes\n context: function context(newValue, oldValue) {\n // Emit context information for external paging/filtering/sorting handling\n if (!looseEqual(newValue, oldValue)) {\n this.$emit(EVENT_NAME_CONTEXT_CHANGED, newValue);\n }\n }\n },\n mounted: function mounted() {\n // Initially update the `v-model` of displayed items\n this.$emit(MODEL_EVENT_NAME, this.computedItems);\n },\n methods: {\n // Method to get the formatter method for a given field key\n getFieldFormatter: function getFieldFormatter(key) {\n var field = this.computedFieldsObj[key]; // `this.computedFieldsObj` has pre-normalized the formatter to a\n // function ref if present, otherwise `undefined`\n\n return field ? field.formatter : undefined;\n }\n }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue, mergeData } from '../../vue';\nimport { NAME_CARD_BODY } from '../../constants/components';\nimport { PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_BOOLEAN } from '../../constants/props';\nimport { sortKeys } from '../../utils/object';\nimport { copyProps, makeProp, makePropsConfigurable, pluckProps, prefixPropName } from '../../utils/props';\nimport { props as cardProps } from '../../mixins/card';\nimport { BCardTitle, props as titleProps } from './card-title';\nimport { BCardSubTitle, props as subTitleProps } from './card-sub-title'; // --- Props ---\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, titleProps), subTitleProps), copyProps(cardProps, prefixPropName.bind(null, 'body'))), {}, {\n bodyClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n overlay: makeProp(PROP_TYPE_BOOLEAN, false)\n})), NAME_CARD_BODY); // --- Main component ---\n// @vue/component\n\nexport var BCardBody = /*#__PURE__*/Vue.extend({\n name: NAME_CARD_BODY,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var _ref2;\n\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var bodyBgVariant = props.bodyBgVariant,\n bodyBorderVariant = props.bodyBorderVariant,\n bodyTextVariant = props.bodyTextVariant;\n var $title = h();\n\n if (props.title) {\n $title = h(BCardTitle, {\n props: pluckProps(titleProps, props)\n });\n }\n\n var $subTitle = h();\n\n if (props.subTitle) {\n $subTitle = h(BCardSubTitle, {\n props: pluckProps(subTitleProps, props),\n class: ['mb-2']\n });\n }\n\n return h(props.bodyTag, mergeData(data, {\n staticClass: 'card-body',\n class: [(_ref2 = {\n 'card-img-overlay': props.overlay\n }, _defineProperty(_ref2, \"bg-\".concat(bodyBgVariant), bodyBgVariant), _defineProperty(_ref2, \"border-\".concat(bodyBorderVariant), bodyBorderVariant), _defineProperty(_ref2, \"text-\".concat(bodyTextVariant), bodyTextVariant), _ref2), props.bodyClass]\n }), [$title, $subTitle, children]);\n }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue, mergeData } from '../../vue';\nimport { NAME_CARD_FOOTER } from '../../constants/components';\nimport { PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { htmlOrText } from '../../utils/html';\nimport { sortKeys } from '../../utils/object';\nimport { copyProps, makeProp, makePropsConfigurable, prefixPropName } from '../../utils/props';\nimport { props as BCardProps } from '../../mixins/card'; // --- Props ---\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, copyProps(BCardProps, prefixPropName.bind(null, 'footer'))), {}, {\n footer: makeProp(PROP_TYPE_STRING),\n footerClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n footerHtml: makeProp(PROP_TYPE_STRING)\n})), NAME_CARD_FOOTER); // --- Main component ---\n// @vue/component\n\nexport var BCardFooter = /*#__PURE__*/Vue.extend({\n name: NAME_CARD_FOOTER,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var _ref2;\n\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var footerBgVariant = props.footerBgVariant,\n footerBorderVariant = props.footerBorderVariant,\n footerTextVariant = props.footerTextVariant;\n return h(props.footerTag, mergeData(data, {\n staticClass: 'card-footer',\n class: [props.footerClass, (_ref2 = {}, _defineProperty(_ref2, \"bg-\".concat(footerBgVariant), footerBgVariant), _defineProperty(_ref2, \"border-\".concat(footerBorderVariant), footerBorderVariant), _defineProperty(_ref2, \"text-\".concat(footerTextVariant), footerTextVariant), _ref2)],\n domProps: children ? {} : htmlOrText(props.footerHtml, props.footer)\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\n// Constants used by table helpers\nexport var FIELD_KEY_CELL_VARIANT = '_cellVariants';\nexport var FIELD_KEY_ROW_VARIANT = '_rowVariant';\nexport var FIELD_KEY_SHOW_DETAILS = '_showDetails'; // Object of item keys that should be ignored for headers and\n// stringification and filter events\n\nexport var IGNORED_FIELD_KEYS = [FIELD_KEY_CELL_VARIANT, FIELD_KEY_ROW_VARIANT, FIELD_KEY_SHOW_DETAILS].reduce(function (result, key) {\n return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, key, true));\n}, {}); // Filter CSS selector for click/dblclick/etc. events\n// If any of these selectors match the clicked element, we ignore the event\n\nexport var EVENT_FILTER = ['a', 'a *', // Include content inside links\n'button', 'button *', // Include content inside buttons\n'input:not(.disabled):not([disabled])', 'select:not(.disabled):not([disabled])', 'textarea:not(.disabled):not([disabled])', '[role=\"link\"]', '[role=\"link\"] *', '[role=\"button\"]', '[role=\"button\"] *', '[tabindex]:not(.disabled):not([disabled])'].join(',');","import { Vue } from '../../../vue';\nimport { PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../../constants/props';\nimport { SLOT_NAME_CUSTOM_FOOT } from '../../../constants/slots';\nimport { makeProp } from '../../../utils/props';\nimport { BTfoot } from '../tfoot'; // --- Props ---\n\nexport var props = {\n footClone: makeProp(PROP_TYPE_BOOLEAN, false),\n // Any Bootstrap theme variant (or custom)\n // Falls back to `headRowVariant`\n footRowVariant: makeProp(PROP_TYPE_STRING),\n // 'dark', 'light', or `null` (or custom)\n footVariant: makeProp(PROP_TYPE_STRING),\n tfootClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n tfootTrClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING)\n}; // --- Mixin ---\n// @vue/component\n\nexport var tfootMixin = Vue.extend({\n props: props,\n methods: {\n renderTFootCustom: function renderTFootCustom() {\n var h = this.$createElement;\n\n if (this.hasNormalizedSlot(SLOT_NAME_CUSTOM_FOOT)) {\n return h(BTfoot, {\n class: this.tfootClass || null,\n props: {\n footVariant: this.footVariant || this.headVariant || null\n },\n key: 'bv-tfoot-custom'\n }, this.normalizeSlot(SLOT_NAME_CUSTOM_FOOT, {\n items: this.computedItems.slice(),\n fields: this.computedFields.slice(),\n columns: this.computedFields.length\n }));\n }\n\n return h();\n },\n renderTfoot: function renderTfoot() {\n // Passing true to renderThead will make it render a tfoot\n return this.footClone ? this.renderThead(true) : this.renderTFootCustom();\n }\n }\n});","/*\n * Consistent and stable sort function across JavaScript platforms\n *\n * Inconsistent sorts can cause SSR problems between client and server\n * such as in if sortBy is applied to the data on server side render.\n * Chrome and V8 native sorts are inconsistent/unstable\n *\n * This function uses native sort with fallback to index compare when the a and b\n * compare returns 0\n *\n * Algorithm based on:\n * https://stackoverflow.com/questions/1427608/fast-stable-sorting-algorithm-implementation-in-javascript/45422645#45422645\n *\n * @param {array} array to sort\n * @param {function} sort compare function\n * @return {array}\n */\nexport var stableSort = function stableSort(array, compareFn) {\n // Using `.bind(compareFn)` on the wrapped anonymous function improves\n // performance by avoiding the function call setup. We don't use an arrow\n // function here as it binds `this` to the `stableSort` context rather than\n // the `compareFn` context, which wouldn't give us the performance increase.\n return array.map(function (a, index) {\n return [index, a];\n }).sort(function (a, b) {\n return this(a[1], b[1]) || a[0] - b[0];\n }.bind(compareFn)).map(function (e) {\n return e[1];\n });\n};","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue } from '../../vue';\nimport { NAME_OVERLAY } from '../../constants/components';\nimport { EVENT_NAME_CLICK, EVENT_NAME_HIDDEN, EVENT_NAME_SHOWN } from '../../constants/events';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_BOOLEAN_STRING, PROP_TYPE_NUMBER_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { SLOT_NAME_OVERLAY } from '../../constants/slots';\nimport { toFloat } from '../../utils/number';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { BSpinner } from '../spinner/spinner';\nimport { BVTransition } from '../transition/bv-transition'; // --- Constants ---\n\nvar POSITION_COVER = {\n top: 0,\n left: 0,\n bottom: 0,\n right: 0\n}; // --- Props ---\n\nexport var props = makePropsConfigurable({\n // Alternative to variant, allowing a specific\n // CSS color to be applied to the overlay\n bgColor: makeProp(PROP_TYPE_STRING),\n blur: makeProp(PROP_TYPE_STRING, '2px'),\n fixed: makeProp(PROP_TYPE_BOOLEAN, false),\n noCenter: makeProp(PROP_TYPE_BOOLEAN, false),\n noFade: makeProp(PROP_TYPE_BOOLEAN, false),\n // If `true, does not render the default slot\n // and switches to absolute positioning\n noWrap: makeProp(PROP_TYPE_BOOLEAN, false),\n opacity: makeProp(PROP_TYPE_NUMBER_STRING, 0.85, function (value) {\n var number = toFloat(value, 0);\n return number >= 0 && number <= 1;\n }),\n overlayTag: makeProp(PROP_TYPE_STRING, 'div'),\n rounded: makeProp(PROP_TYPE_BOOLEAN_STRING, false),\n show: makeProp(PROP_TYPE_BOOLEAN, false),\n spinnerSmall: makeProp(PROP_TYPE_BOOLEAN, false),\n spinnerType: makeProp(PROP_TYPE_STRING, 'border'),\n spinnerVariant: makeProp(PROP_TYPE_STRING),\n variant: makeProp(PROP_TYPE_STRING, 'light'),\n wrapTag: makeProp(PROP_TYPE_STRING, 'div'),\n zIndex: makeProp(PROP_TYPE_NUMBER_STRING, 10)\n}, NAME_OVERLAY); // --- Main component ---\n// @vue/component\n\nexport var BOverlay = /*#__PURE__*/Vue.extend({\n name: NAME_OVERLAY,\n mixins: [normalizeSlotMixin],\n props: props,\n computed: {\n computedRounded: function computedRounded() {\n var rounded = this.rounded;\n return rounded === true || rounded === '' ? 'rounded' : !rounded ? '' : \"rounded-\".concat(rounded);\n },\n computedVariant: function computedVariant() {\n var variant = this.variant;\n return variant && !this.bgColor ? \"bg-\".concat(variant) : '';\n },\n slotScope: function slotScope() {\n return {\n spinnerType: this.spinnerType || null,\n spinnerVariant: this.spinnerVariant || null,\n spinnerSmall: this.spinnerSmall\n };\n }\n },\n methods: {\n defaultOverlayFn: function defaultOverlayFn(_ref) {\n var spinnerType = _ref.spinnerType,\n spinnerVariant = _ref.spinnerVariant,\n spinnerSmall = _ref.spinnerSmall;\n return this.$createElement(BSpinner, {\n props: {\n type: spinnerType,\n variant: spinnerVariant,\n small: spinnerSmall\n }\n });\n }\n },\n render: function render(h) {\n var _this = this;\n\n var show = this.show,\n fixed = this.fixed,\n noFade = this.noFade,\n noWrap = this.noWrap,\n slotScope = this.slotScope;\n var $overlay = h();\n\n if (show) {\n var $background = h('div', {\n staticClass: 'position-absolute',\n class: [this.computedVariant, this.computedRounded],\n style: _objectSpread(_objectSpread({}, POSITION_COVER), {}, {\n opacity: this.opacity,\n backgroundColor: this.bgColor || null,\n backdropFilter: this.blur ? \"blur(\".concat(this.blur, \")\") : null\n })\n });\n var $content = h('div', {\n staticClass: 'position-absolute',\n style: this.noCenter ?\n /* istanbul ignore next */\n _objectSpread({}, POSITION_COVER) : {\n top: '50%',\n left: '50%',\n transform: 'translateX(-50%) translateY(-50%)'\n }\n }, [this.normalizeSlot(SLOT_NAME_OVERLAY, slotScope) || this.defaultOverlayFn(slotScope)]);\n $overlay = h(this.overlayTag, {\n staticClass: 'b-overlay',\n class: {\n 'position-absolute': !noWrap || noWrap && !fixed,\n 'position-fixed': noWrap && fixed\n },\n style: _objectSpread(_objectSpread({}, POSITION_COVER), {}, {\n zIndex: this.zIndex || 10\n }),\n on: {\n click: function click(event) {\n return _this.$emit(EVENT_NAME_CLICK, event);\n }\n },\n key: 'overlay'\n }, [$background, $content]);\n } // Wrap in a fade transition\n\n\n $overlay = h(BVTransition, {\n props: {\n noFade: noFade,\n appear: true\n },\n on: {\n 'after-enter': function afterEnter() {\n return _this.$emit(EVENT_NAME_SHOWN);\n },\n 'after-leave': function afterLeave() {\n return _this.$emit(EVENT_NAME_HIDDEN);\n }\n }\n }, [$overlay]);\n\n if (noWrap) {\n return $overlay;\n }\n\n return h(this.wrapTag, {\n staticClass: 'b-overlay-wrap position-relative',\n attrs: {\n 'aria-busy': show ? 'true' : null\n }\n }, noWrap ? [$overlay] : [this.normalizeSlot(), $overlay]);\n }\n});","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 { mergeData } from '../../vue';\nimport { NAME_ROW } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_NUMBER_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { arrayIncludes, concat } from '../../utils/array';\nimport { getBreakpointsUpCached } from '../../utils/config';\nimport { identity } from '../../utils/identity';\nimport { memoize } from '../../utils/memoize';\nimport { create, keys, sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable, suffixPropName } from '../../utils/props';\nimport { lowerCase, toString, trim } from '../../utils/string'; // --- Constants ---\n\nvar COMMON_ALIGNMENT = ['start', 'end', 'center']; // --- Helper methods ---\n// Compute a `row-cols-{breakpoint}-{cols}` class name\n// Memoized function for better performance on generating class names\n\nvar computeRowColsClass = memoize(function (breakpoint, cols) {\n cols = trim(toString(cols));\n return cols ? lowerCase(['row-cols', breakpoint, cols].filter(identity).join('-')) : null;\n}); // Get the breakpoint name from the `rowCols` prop name\n// Memoized function for better performance on extracting breakpoint names\n\nvar computeRowColsBreakpoint = memoize(function (prop) {\n return lowerCase(prop.replace('cols', ''));\n}); // Cached copy of the `row-cols` breakpoint prop names\n// Will be populated when the props are generated\n\nvar rowColsPropList = []; // --- Props ---\n// Prop generator for lazy generation of props\n\nexport var generateProps = function generateProps() {\n // i.e. 'row-cols-2', 'row-cols-md-4', 'row-cols-xl-6', ...\n var rowColsProps = getBreakpointsUpCached().reduce(function (props, breakpoint) {\n props[suffixPropName(breakpoint, 'cols')] = makeProp(PROP_TYPE_NUMBER_STRING);\n return props;\n }, create(null)); // Cache the row-cols prop names\n\n rowColsPropList = keys(rowColsProps); // Return the generated props\n\n return makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, rowColsProps), {}, {\n alignContent: makeProp(PROP_TYPE_STRING, null, function (value) {\n return arrayIncludes(concat(COMMON_ALIGNMENT, 'between', 'around', 'stretch'), value);\n }),\n alignH: makeProp(PROP_TYPE_STRING, null, function (value) {\n return arrayIncludes(concat(COMMON_ALIGNMENT, 'between', 'around'), value);\n }),\n alignV: makeProp(PROP_TYPE_STRING, null, function (value) {\n return arrayIncludes(concat(COMMON_ALIGNMENT, 'baseline', 'stretch'), value);\n }),\n noGutters: makeProp(PROP_TYPE_BOOLEAN, false),\n tag: makeProp(PROP_TYPE_STRING, 'div')\n })), NAME_ROW);\n}; // --- Main component ---\n// We do not use `Vue.extend()` here as that would evaluate the props\n// immediately, which we do not want to happen\n// @vue/component\n\nexport var BRow = {\n name: NAME_ROW,\n functional: true,\n\n get props() {\n // Allow props to be lazy evaled on first access and\n // then they become a non-getter afterwards\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/get#Smart_self-overwriting_lazy_getters\n delete this.props;\n this.props = generateProps();\n return this.props;\n },\n\n render: function render(h, _ref) {\n var _classList$push;\n\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var alignV = props.alignV,\n alignH = props.alignH,\n alignContent = props.alignContent; // Loop through row-cols breakpoint props and generate the classes\n\n var classList = [];\n rowColsPropList.forEach(function (prop) {\n var c = computeRowColsClass(computeRowColsBreakpoint(prop), props[prop]); // If a class is returned, push it onto the array\n\n if (c) {\n classList.push(c);\n }\n });\n classList.push((_classList$push = {\n 'no-gutters': props.noGutters\n }, _defineProperty(_classList$push, \"align-items-\".concat(alignV), alignV), _defineProperty(_classList$push, \"justify-content-\".concat(alignH), alignH), _defineProperty(_classList$push, \"align-content-\".concat(alignContent), alignContent), _classList$push));\n return h(props.tag, mergeData(data, {\n staticClass: 'row',\n class: classList\n }), children);\n }\n};","import { closest, getAttr, getById, matches, select } from '../../../utils/dom';\nimport { EVENT_FILTER } from './constants';\nvar TABLE_TAG_NAMES = ['TD', 'TH', 'TR']; // Returns `true` if we should ignore the click/double-click/keypress event\n// Avoids having the user need to use `@click.stop` on the form control\n\nexport var filterEvent = function filterEvent(event) {\n // Exit early when we don't have a target element\n if (!event || !event.target) {\n /* istanbul ignore next */\n return false;\n }\n\n var el = event.target; // Exit early when element is disabled or a table element\n\n if (el.disabled || TABLE_TAG_NAMES.indexOf(el.tagName) !== -1) {\n return false;\n } // Ignore the click when it was inside a dropdown menu\n\n\n if (closest('.dropdown-menu', el)) {\n return true;\n }\n\n var label = el.tagName === 'LABEL' ? el : closest('label', el); // If the label's form control is not disabled then we don't propagate event\n // Modern browsers have `label.control` that references the associated input, but IE 11\n // does not have this property on the label element, so we resort to DOM lookups\n\n if (label) {\n var labelFor = getAttr(label, 'for');\n var input = labelFor ? getById(labelFor) : select('input, select, textarea', label);\n\n if (input && !input.disabled) {\n return true;\n }\n } // Otherwise check if the event target matches one of the selectors in the\n // event filter (i.e. anchors, non disabled inputs, etc.)\n // Return `true` if we should ignore the event\n\n\n return matches(el, EVENT_FILTER);\n};","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 { mergeData } from '../../vue';\nimport { NAME_COL } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_BOOLEAN_NUMBER_STRING, PROP_TYPE_NUMBER_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { RX_COL_CLASS } from '../../constants/regex';\nimport { arrayIncludes } from '../../utils/array';\nimport { getBreakpointsUpCached } from '../../utils/config';\nimport { identity } from '../../utils/identity';\nimport { isUndefinedOrNull } from '../../utils/inspect';\nimport { memoize } from '../../utils/memoize';\nimport { assign, create, keys, sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable, suffixPropName } from '../../utils/props';\nimport { lowerCase } from '../../utils/string'; // --- Constants ---\n\nvar ALIGN_SELF_VALUES = ['auto', 'start', 'end', 'center', 'baseline', 'stretch']; // --- Helper methods ---\n// Compute a breakpoint class name\n\nvar computeBreakpoint = function computeBreakpoint(type, breakpoint, value) {\n var className = type;\n\n if (isUndefinedOrNull(value) || value === false) {\n return undefined;\n }\n\n if (breakpoint) {\n className += \"-\".concat(breakpoint);\n } // Handling the boolean style prop when accepting `[Boolean, String, Number]`\n // means Vue will not convert `` to `sm: true` for us\n // Since the default is `false`, '' indicates the prop's presence\n\n\n if (type === 'col' && (value === '' || value === true)) {\n // .col-md\n return lowerCase(className);\n } // .order-md-6\n\n\n className += \"-\".concat(value);\n return lowerCase(className);\n}; // Memoized function for better performance on generating class names\n\n\nvar computeBreakpointClass = memoize(computeBreakpoint); // Cached copy of the breakpoint prop names\n\nvar breakpointPropMap = create(null); // --- Props ---\n// Prop generator for lazy generation of props\n\nexport var generateProps = function generateProps() {\n // Grab the breakpoints from the cached config (exclude the '' (xs) breakpoint)\n var breakpoints = getBreakpointsUpCached().filter(identity); // i.e. 'col-sm', 'col-md-6', 'col-lg-auto', ...\n\n var breakpointCol = breakpoints.reduce(function (props, breakpoint) {\n props[breakpoint] = makeProp(PROP_TYPE_BOOLEAN_NUMBER_STRING);\n return props;\n }, create(null)); // i.e. 'offset-md-1', 'offset-lg-12', ...\n\n var breakpointOffset = breakpoints.reduce(function (props, breakpoint) {\n props[suffixPropName(breakpoint, 'offset')] = makeProp(PROP_TYPE_NUMBER_STRING);\n return props;\n }, create(null)); // i.e. 'order-md-1', 'order-lg-12', ...\n\n var breakpointOrder = breakpoints.reduce(function (props, breakpoint) {\n props[suffixPropName(breakpoint, 'order')] = makeProp(PROP_TYPE_NUMBER_STRING);\n return props;\n }, create(null)); // For loop doesn't need to check `.hasOwnProperty()`\n // when using an object created from `null`\n\n breakpointPropMap = assign(create(null), {\n col: keys(breakpointCol),\n offset: keys(breakpointOffset),\n order: keys(breakpointOrder)\n }); // Return the generated props\n\n return makePropsConfigurable(sortKeys(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, breakpointCol), breakpointOffset), breakpointOrder), {}, {\n // Flex alignment\n alignSelf: makeProp(PROP_TYPE_STRING, null, function (value) {\n return arrayIncludes(ALIGN_SELF_VALUES, value);\n }),\n // Generic flexbox 'col' (xs)\n col: makeProp(PROP_TYPE_BOOLEAN, false),\n // i.e. 'col-1', 'col-2', 'col-auto', ...\n cols: makeProp(PROP_TYPE_NUMBER_STRING),\n offset: makeProp(PROP_TYPE_NUMBER_STRING),\n order: makeProp(PROP_TYPE_NUMBER_STRING),\n tag: makeProp(PROP_TYPE_STRING, 'div')\n })), NAME_COL);\n}; // --- Main component ---\n// We do not use Vue.extend here as that would evaluate the props\n// immediately, which we do not want to happen\n// @vue/component\n\nexport var BCol = {\n name: NAME_COL,\n functional: true,\n\n get props() {\n // Allow props to be lazy evaled on first access and\n // then they become a non-getter afterwards.\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/get#Smart_self-overwriting_lazy_getters\n delete this.props; // eslint-disable-next-line no-return-assign\n\n return this.props = generateProps();\n },\n\n render: function render(h, _ref) {\n var _classList$push;\n\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var cols = props.cols,\n offset = props.offset,\n order = props.order,\n alignSelf = props.alignSelf;\n var classList = []; // Loop through `col`, `offset`, `order` breakpoint props\n\n for (var type in breakpointPropMap) {\n // Returns colSm, offset, offsetSm, orderMd, etc.\n var _keys = breakpointPropMap[type];\n\n for (var i = 0; i < _keys.length; i++) {\n // computeBreakpoint(col, colSm => Sm, value=[String, Number, Boolean])\n var c = computeBreakpointClass(type, _keys[i].replace(type, ''), props[_keys[i]]); // If a class is returned, push it onto the array.\n\n if (c) {\n classList.push(c);\n }\n }\n }\n\n var hasColClasses = classList.some(function (className) {\n return RX_COL_CLASS.test(className);\n });\n classList.push((_classList$push = {\n // Default to .col if no other col-{bp}-* classes generated nor `cols` specified.\n col: props.col || !hasColClasses && !cols\n }, _defineProperty(_classList$push, \"col-\".concat(cols), cols), _defineProperty(_classList$push, \"offset-\".concat(offset), offset), _defineProperty(_classList$push, \"order-\".concat(order), order), _defineProperty(_classList$push, \"align-self-\".concat(alignSelf), alignSelf), _classList$push));\n return h(props.tag, mergeData(data, {\n class: classList\n }), children);\n }\n};","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BCardActions.vue?vue&type=style&index=0&id=623d1c43&lang=scss&scoped=true&\"","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue, mergeData } from '../../vue';\nimport { NAME_CARD_HEADER } from '../../constants/components';\nimport { PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { htmlOrText } from '../../utils/html';\nimport { sortKeys } from '../../utils/object';\nimport { copyProps, makeProp, makePropsConfigurable, prefixPropName } from '../../utils/props';\nimport { props as BCardProps } from '../../mixins/card'; // --- Props ---\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, copyProps(BCardProps, prefixPropName.bind(null, 'header'))), {}, {\n header: makeProp(PROP_TYPE_STRING),\n headerClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n headerHtml: makeProp(PROP_TYPE_STRING)\n})), NAME_CARD_HEADER); // --- Main component ---\n// @vue/component\n\nexport var BCardHeader = /*#__PURE__*/Vue.extend({\n name: NAME_CARD_HEADER,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var _ref2;\n\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var headerBgVariant = props.headerBgVariant,\n headerBorderVariant = props.headerBorderVariant,\n headerTextVariant = props.headerTextVariant;\n return h(props.headerTag, mergeData(data, {\n staticClass: 'card-header',\n class: [props.headerClass, (_ref2 = {}, _defineProperty(_ref2, \"bg-\".concat(headerBgVariant), headerBgVariant), _defineProperty(_ref2, \"border-\".concat(headerBorderVariant), headerBorderVariant), _defineProperty(_ref2, \"text-\".concat(headerTextVariant), headerTextVariant), _ref2)],\n domProps: children ? {} : htmlOrText(props.headerHtml, props.header)\n }), children);\n }\n});","import { Vue, mergeData } from '../../vue';\nimport { NAME_CARD_SUB_TITLE } from '../../constants/components';\nimport { PROP_TYPE_STRING } from '../../constants/props';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { toString } from '../../utils/string'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n subTitle: makeProp(PROP_TYPE_STRING),\n subTitleTag: makeProp(PROP_TYPE_STRING, 'h6'),\n subTitleTextVariant: makeProp(PROP_TYPE_STRING, 'muted')\n}, NAME_CARD_SUB_TITLE); // --- Main component ---\n// @vue/component\n\nexport var BCardSubTitle = /*#__PURE__*/Vue.extend({\n name: NAME_CARD_SUB_TITLE,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n return h(props.subTitleTag, mergeData(data, {\n staticClass: 'card-subtitle',\n class: [props.subTitleTextVariant ? \"text-\".concat(props.subTitleTextVariant) : null]\n }), children || toString(props.subTitle));\n }\n});","function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue } from '../../../vue';\nimport { EVENT_NAME_HEAD_CLICKED } from '../../../constants/events';\nimport { CODE_ENTER, CODE_SPACE } from '../../../constants/key-codes';\nimport { PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_STRING } from '../../../constants/props';\nimport { SLOT_NAME_THEAD_TOP } from '../../../constants/slots';\nimport { stopEvent } from '../../../utils/events';\nimport { htmlOrText } from '../../../utils/html';\nimport { identity } from '../../../utils/identity';\nimport { isUndefinedOrNull } from '../../../utils/inspect';\nimport { noop } from '../../../utils/noop';\nimport { makeProp } from '../../../utils/props';\nimport { startCase } from '../../../utils/string';\nimport { BThead } from '../thead';\nimport { BTfoot } from '../tfoot';\nimport { BTr } from '../tr';\nimport { BTh } from '../th';\nimport { filterEvent } from './filter-event';\nimport { textSelectionActive } from './text-selection-active'; // --- Helper methods ---\n\nvar getHeadSlotName = function getHeadSlotName(value) {\n return \"head(\".concat(value || '', \")\");\n};\n\nvar getFootSlotName = function getFootSlotName(value) {\n return \"foot(\".concat(value || '', \")\");\n}; // --- Props ---\n\n\nexport var props = {\n // Any Bootstrap theme variant (or custom)\n headRowVariant: makeProp(PROP_TYPE_STRING),\n // 'light', 'dark' or `null` (or custom)\n headVariant: makeProp(PROP_TYPE_STRING),\n theadClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n theadTrClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING)\n}; // --- Mixin ---\n// @vue/component\n\nexport var theadMixin = Vue.extend({\n props: props,\n methods: {\n fieldClasses: function fieldClasses(field) {\n // Header field () classes\n return [field.class ? field.class : '', field.thClass ? field.thClass : ''];\n },\n headClicked: function headClicked(event, field, isFoot) {\n if (this.stopIfBusy && this.stopIfBusy(event)) {\n // If table is busy (via provider) then don't propagate\n return;\n } else if (filterEvent(event)) {\n // Clicked on a non-disabled control so ignore\n return;\n } else if (textSelectionActive(this.$el)) {\n // User is selecting text, so ignore\n\n /* istanbul ignore next: JSDOM doesn't support getSelection() */\n return;\n }\n\n stopEvent(event);\n this.$emit(EVENT_NAME_HEAD_CLICKED, field.key, field, event, isFoot);\n },\n renderThead: function renderThead() {\n var _this = this;\n\n var isFoot = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n var fields = this.computedFields,\n isSortable = this.isSortable,\n isSelectable = this.isSelectable,\n headVariant = this.headVariant,\n footVariant = this.footVariant,\n headRowVariant = this.headRowVariant,\n footRowVariant = this.footRowVariant;\n var h = this.$createElement; // In always stacked mode, we don't bother rendering the head/foot\n // Or if no field headings (empty table)\n\n if (this.isStackedAlways || fields.length === 0) {\n return h();\n }\n\n var hasHeadClickListener = isSortable || this.hasListener(EVENT_NAME_HEAD_CLICKED); // Reference to `selectAllRows` and `clearSelected()`, if table is selectable\n\n var selectAllRows = isSelectable ? this.selectAllRows : noop;\n var clearSelected = isSelectable ? this.clearSelected : noop; // Helper function to generate a field cell\n\n var makeCell = function makeCell(field, colIndex) {\n var label = field.label,\n labelHtml = field.labelHtml,\n variant = field.variant,\n stickyColumn = field.stickyColumn,\n key = field.key;\n var ariaLabel = null;\n\n if (!field.label.trim() && !field.headerTitle) {\n // In case field's label and title are empty/blank\n // We need to add a hint about what the column is about for non-sighted users\n\n /* istanbul ignore next */\n ariaLabel = startCase(field.key);\n }\n\n var on = {};\n\n if (hasHeadClickListener) {\n on.click = function (event) {\n _this.headClicked(event, field, isFoot);\n };\n\n on.keydown = function (event) {\n var keyCode = event.keyCode;\n\n if (keyCode === CODE_ENTER || keyCode === CODE_SPACE) {\n _this.headClicked(event, field, isFoot);\n }\n };\n }\n\n var sortAttrs = isSortable ? _this.sortTheadThAttrs(key, field, isFoot) : {};\n var sortClass = isSortable ? _this.sortTheadThClasses(key, field, isFoot) : null;\n var sortLabel = isSortable ? _this.sortTheadThLabel(key, field, isFoot) : null;\n var data = {\n class: [_this.fieldClasses(field), sortClass],\n props: {\n variant: variant,\n stickyColumn: stickyColumn\n },\n style: field.thStyle || {},\n attrs: _objectSpread(_objectSpread({\n // We only add a `tabindex` of `0` if there is a head-clicked listener\n // and the current field is sortable\n tabindex: hasHeadClickListener && field.sortable ? '0' : null,\n abbr: field.headerAbbr || null,\n title: field.headerTitle || null,\n 'aria-colindex': colIndex + 1,\n 'aria-label': ariaLabel\n }, _this.getThValues(null, key, field.thAttr, isFoot ? 'foot' : 'head', {})), sortAttrs),\n on: on,\n key: key\n }; // Handle edge case where in-document templates are used with new\n // `v-slot:name` syntax where the browser lower-cases the v-slot's\n // name (attributes become lower cased when parsed by the browser)\n // We have replaced the square bracket syntax with round brackets\n // to prevent confusion with dynamic slot names\n\n var slotNames = [getHeadSlotName(key), getHeadSlotName(key.toLowerCase()), getHeadSlotName()]; // Footer will fallback to header slot names\n\n if (isFoot) {\n slotNames = [getFootSlotName(key), getFootSlotName(key.toLowerCase()), getFootSlotName()].concat(_toConsumableArray(slotNames));\n }\n\n var scope = {\n label: label,\n column: key,\n field: field,\n isFoot: isFoot,\n // Add in row select methods\n selectAllRows: selectAllRows,\n clearSelected: clearSelected\n };\n var $content = _this.normalizeSlot(slotNames, scope) || h('div', {\n domProps: htmlOrText(labelHtml, label)\n });\n var $srLabel = sortLabel ? h('span', {\n staticClass: 'sr-only'\n }, \" (\".concat(sortLabel, \")\")) : null; // Return the header cell\n\n return h(BTh, data, [$content, $srLabel].filter(identity));\n }; // Generate the array of cells\n\n\n var $cells = fields.map(makeCell).filter(identity); // Generate the row(s)\n\n var $trs = [];\n\n if (isFoot) {\n $trs.push(h(BTr, {\n class: this.tfootTrClass,\n props: {\n variant: isUndefinedOrNull(footRowVariant) ? headRowVariant :\n /* istanbul ignore next */\n footRowVariant\n }\n }, $cells));\n } else {\n var scope = {\n columns: fields.length,\n fields: fields,\n // Add in row select methods\n selectAllRows: selectAllRows,\n clearSelected: clearSelected\n };\n $trs.push(this.normalizeSlot(SLOT_NAME_THEAD_TOP, scope) || h());\n $trs.push(h(BTr, {\n class: this.theadTrClass,\n props: {\n variant: headRowVariant\n }\n }, $cells));\n }\n\n return h(isFoot ? BTfoot : BThead, {\n class: (isFoot ? this.tfootClass : this.theadClass) || null,\n props: isFoot ? {\n footVariant: footVariant || headVariant || null\n } : {\n headVariant: headVariant || null\n },\n key: isFoot ? 'bv-tfoot' : 'bv-thead'\n }, $trs);\n }\n }\n});","var render = function () {\n var _vm=this;\n var _h=_vm.$createElement;\n var _c=_vm._self._c||_h;\n\n return _c('section', {\n attrs: {\n \"id\": \"card-actions\"\n }\n }, [_c('b-row', [_c('b-col', {\n attrs: {\n \"cols\": \"12\"\n }\n }, [_c('b-card-actions', {\n ref: \"cardAction\",\n attrs: {\n \"title\": \"Card Actions\"\n },\n on: {\n \"refresh\": function refresh($event) {\n return _vm.refreshStop('cardAction');\n }\n }\n }, [_c('b-row', [_c('b-col', {\n attrs: {\n \"cols\": \"12\"\n }\n }, [_c('b-table', {\n attrs: {\n \"responsive\": \"\",\n \"items\": _vm.items,\n \"bordered\": \"\"\n },\n scopedSlots: _vm._u([{\n key: \"cell(ICON)\",\n fn: function fn(data) {\n return [_c('div', {\n staticClass: \"text-center\"\n }, [_c('feather-icon', {\n attrs: {\n \"icon\": data.value\n }\n })], 1)];\n }\n }])\n })], 1)], 1)], 1)], 1), _c('b-col', {\n attrs: {\n \"md\": \"6\"\n }\n }, [_c('b-card-actions', {\n attrs: {\n \"title\": \"Collapsible\",\n \"action-collapse\": \"\"\n }\n }, [_c('b-card-text', [_c('span', [_vm._v(\"You can create a collapsible content by adding \")]), _c('code', [_vm._v(\"actionCollapse\")]), _c('span', [_vm._v(\" prop in \")]), _c('code', [_vm._v(\"\")])]), _c('b-card-text', [_c('span', [_vm._v(\"Click on \")]), _c('feather-icon', {\n attrs: {\n \"icon\": \"ChevronDownIcon\"\n }\n }), _c('span', [_vm._v(\" to see card collapse in action.\")])], 1)], 1)], 1), _c('b-col', {\n attrs: {\n \"md\": \"6\"\n }\n }, [_c('b-card-actions', {\n ref: \"refreshCard\",\n attrs: {\n \"title\": \"Refresh Content\",\n \"action-refresh\": \"\"\n },\n on: {\n \"refresh\": function refresh($event) {\n return _vm.refreshStop('refreshCard');\n }\n }\n }, [_c('b-card-text', [_vm._v(\" To create a card with refresh action use \"), _c('code', [_vm._v(\"actionRefresh\")]), _vm._v(\" prop along with \"), _c('code', [_vm._v(\"\")])]), _c('b-card-text', [_c('span', [_vm._v(\"Click on \")]), _c('feather-icon', {\n attrs: {\n \"icon\": \"RotateCwIcon\"\n }\n }), _c('span', [_vm._v(\" icon to see refresh card content in action.\")])], 1)], 1)], 1), _c('b-col', {\n attrs: {\n \"md\": \"6\"\n }\n }, [_c('b-card-actions', {\n attrs: {\n \"title\": \"Remove Card\",\n \"action-close\": \"\"\n }\n }, [_c('b-card-text', [_vm._v(\" You can create a closeable card by using \"), _c('code', [_vm._v(\"actionClose\")]), _vm._v(\" prop along with \"), _c('code', [_vm._v(\"\")])]), _c('b-card-text', [_c('span', [_vm._v(\"Click on \")]), _c('feather-icon', {\n attrs: {\n \"icon\": \"XIcon\"\n }\n }), _c('span', [_vm._v(\" icon to see closeable card in action.\")])], 1)], 1)], 1)], 1)], 1);\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {\n var _vm=this;\n var _h=_vm.$createElement;\n var _c=_vm._self._c||_h;\n\n return !_vm.cardClosed ? _c('b-overlay', {\n attrs: {\n \"variant\": \"white\",\n \"show\": _vm.showLoading,\n \"spinner-variant\": \"primary\",\n \"blur\": \"0\",\n \"opacity\": \".75\",\n \"rounded\": \"sm\"\n }\n }, [_c('b-card', _vm._g(_vm._b({\n ref: \"bCard\",\n style: _vm.cardStyles,\n attrs: {\n \"no-body\": \"\",\n \"aria-expanded\": !_vm.content_visible ? 'true' : 'false',\n \"aria-controls\": _vm.parentID\n }\n }, 'b-card', _vm.cardAttrs, false), _vm.$listeners), [_vm.showHeader ? _c('div', {\n staticClass: \"card-header\"\n }, [_c('div', [_c('b-card-title', [_vm._v(_vm._s(_vm.$attrs.title))]), _vm.$attrs['sub-title'] ? _c('b-card-sub-title', [_vm._v(\" \" + _vm._s(_vm.$attrs['sub-title']) + \" \")]) : _vm._e()], 1), _vm.showActions ? _c('b-card-actions-container', {\n attrs: {\n \"available-actions\": _vm.availableActions,\n \"is-collapsed\": !_vm.content_visible\n },\n on: {\n \"collapse\": _vm.triggerCollapse,\n \"refresh\": _vm.triggerRefresh,\n \"close\": _vm.triggerClose\n }\n }) : _vm._e()], 1) : _vm._e(), _c('b-collapse', {\n staticClass: \"card-content\",\n attrs: {\n \"id\": _vm.parentID,\n \"visible\": _vm.content_visible\n },\n model: {\n value: _vm.content_visible,\n callback: function callback($$v) {\n _vm.content_visible = $$v;\n },\n expression: \"content_visible\"\n }\n }, [_vm.$attrs['no-body'] !== undefined ? _vm._t(\"default\") : _c('b-card-body', [_vm._t(\"default\")], 2)], 2)], 1)], 1) : _vm._e();\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {\n var _vm=this;\n var _h=_vm.$createElement;\n var _c=_vm._self._c||_h;\n\n return _c('div', {\n staticClass: \"heading-elements\"\n }, [_c('ul', {\n staticClass: \"list-inline mb-0\"\n }, [_vm.availableActions.includes('collapse') ? _c('li', [_c('a', {\n class: {\n rotate: _vm.isCollapsed\n },\n attrs: {\n \"data-action\": \"collapse\"\n },\n on: {\n \"click\": function click($event) {\n return _vm.$emit('collapse');\n }\n }\n }, [_c('feather-icon', {\n attrs: {\n \"icon\": \"ChevronDownIcon\",\n \"size\": \"16\"\n }\n })], 1)]) : _vm._e(), _vm.availableActions.includes('refresh') ? _c('li', [_c('a', {\n attrs: {\n \"data-action\": \"reload\"\n },\n on: {\n \"click\": function click($event) {\n return _vm.$emit('refresh');\n }\n }\n }, [_c('feather-icon', {\n attrs: {\n \"icon\": \"RotateCwIcon\",\n \"size\": \"14\"\n }\n })], 1)]) : _vm._e(), _vm.availableActions.includes('close') ? _c('li', [_c('a', {\n attrs: {\n \"data-action\": \"close\"\n },\n on: {\n \"click\": function click($event) {\n return _vm.$emit('close');\n }\n }\n }, [_c('feather-icon', {\n attrs: {\n \"icon\": \"XIcon\",\n \"size\": \"14\"\n }\n })], 1)]) : _vm._e()])]);\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BCardActionsContainer.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BCardActionsContainer.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./BCardActionsContainer.vue?vue&type=template&id=7de64d6c&\"\nimport script from \"./BCardActionsContainer.vue?vue&type=script&lang=js&\"\nexport * from \"./BCardActionsContainer.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BCardActions.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BCardActions.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./BCardActions.vue?vue&type=template&id=623d1c43&scoped=true&\"\nimport script from \"./BCardActions.vue?vue&type=script&lang=js&\"\nexport * from \"./BCardActions.vue?vue&type=script&lang=js&\"\nimport style0 from \"./BCardActions.vue?vue&type=style&index=0&id=623d1c43&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"623d1c43\",\n null\n \n)\n\nexport default component.exports","\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n You can create a collapsible content by adding \r\n actionCollapse\r\n prop in \r\n <b-card-actions>\r\n \r\n \r\n Click on \r\n \r\n to see card collapse in action.\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n To create a card with refresh action use actionRefresh prop along with\r\n <b-card-actions>\r\n \r\n \r\n Click on \r\n \r\n icon to see refresh card content in action.\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n You can create a closeable card by using actionClose prop along with\r\n <b-card-actions>\r\n \r\n \r\n Click on \r\n \r\n icon to see closeable card in action.\r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CardAction.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CardAction.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./CardAction.vue?vue&type=template&id=580782ff&\"\nimport script from \"./CardAction.vue?vue&type=script&lang=js&\"\nexport * from \"./CardAction.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { getSel, isElement } from '../../../utils/dom'; // Helper to determine if a there is an active text selection on the document page\n// Used to filter out click events caused by the mouse up at end of selection\n//\n// Accepts an element as only argument to test to see if selection overlaps or is\n// contained within the element\n\nexport var textSelectionActive = function textSelectionActive() {\n var el = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : document;\n var sel = getSel();\n return sel && sel.toString().trim() !== '' && sel.containsNode && isElement(el) ?\n /* istanbul ignore next */\n sel.containsNode(el, true) : false;\n};","import { Vue } from '../vue';\nimport { NAME_CARD } from '../constants/components';\nimport { PROP_TYPE_STRING } from '../constants/props';\nimport { makeProp, makePropsConfigurable } from '../utils/props'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n bgVariant: makeProp(PROP_TYPE_STRING),\n borderVariant: makeProp(PROP_TYPE_STRING),\n tag: makeProp(PROP_TYPE_STRING, 'div'),\n textVariant: makeProp(PROP_TYPE_STRING)\n}, NAME_CARD); // --- Mixin ---\n// @vue/component\n\nexport var cardMixin = Vue.extend({\n props: props\n});","import { Vue } from '../../../vue';\nimport { SLOT_NAME_TABLE_COLGROUP } from '../../../constants/slots'; // --- Props ---\n\nexport var props = {}; // --- Mixin ---\n// @vue/component\n\nexport var colgroupMixin = Vue.extend({\n methods: {\n renderColgroup: function renderColgroup() {\n var fields = this.computedFields;\n var h = this.$createElement;\n var $colgroup = h();\n\n if (this.hasNormalizedSlot(SLOT_NAME_TABLE_COLGROUP)) {\n $colgroup = h('colgroup', {\n key: 'colgroup'\n }, [this.normalizeSlot(SLOT_NAME_TABLE_COLGROUP, {\n columns: fields.length,\n fields: fields\n })]);\n }\n\n return $colgroup;\n }\n }\n});","import { Vue, mergeData } from '../../vue';\nimport { NAME_CARD_TEXT } from '../../constants/components';\nimport { PROP_TYPE_STRING } from '../../constants/props';\nimport { makeProp, makePropsConfigurable } from '../../utils/props'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n textTag: makeProp(PROP_TYPE_STRING, 'p')\n}, NAME_CARD_TEXT); // --- Main component ---\n// @vue/component\n\nexport var BCardText = /*#__PURE__*/Vue.extend({\n name: NAME_CARD_TEXT,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n return h(props.textTag, mergeData(data, {\n staticClass: 'card-text'\n }), children);\n }\n});","export var noop = function noop() {};"],"sourceRoot":""}