{"version":3,"sources":["webpack:///./node_modules/core-js/internals/delete-property-or-throw.js","webpack:///./node_modules/bootstrap-vue/esm/components/form/form.js","webpack:///./node_modules/bootstrap-vue/esm/components/media/media.js","webpack:///./node_modules/bootstrap-vue/esm/components/input-group/input-group-addon.js","webpack:///./node_modules/bootstrap-vue/esm/components/nav/nav.js","webpack:///./node_modules/bootstrap-vue/esm/components/input-group/input-group-prepend.js","webpack:///./node_modules/bootstrap-vue/esm/components/input-group/input-group.js","webpack:///./node_modules/bootstrap-vue/esm/components/tabs/tab.js","webpack:///./node_modules/bootstrap-vue/esm/components/media/media-aside.js","webpack:///./node_modules/compressorjs/dist/compressor.js","webpack:///./node_modules/bootstrap-vue/esm/components/media/media-body.js","webpack:///./node_modules/bootstrap-vue/esm/utils/stable-sort.js","webpack:///./node_modules/core-js/modules/es.array.splice.js","webpack:///./node_modules/bootstrap-vue/esm/mixins/form-custom.js","webpack:///./node_modules/bootstrap-vue/esm/components/form-file/form-file.js","webpack:///./node_modules/bootstrap-vue/esm/components/input-group/input-group-append.js","webpack:///./node_modules/bootstrap-vue/esm/components/input-group/input-group-text.js","webpack:///./node_modules/bootstrap-vue/esm/components/tabs/tabs.js"],"names":["tryToString","$TypeError","TypeError","module","exports","O","P","props","id","inline","novalidate","validated","BForm","extend","name","functional","render","h","_ref","data","children","class","attrs","noBody","rightAlign","tag","verticalAlign","BMedia","slots","scopedSlots","$children","slotScope","$slots","$scopedSlots","push","$aside","right","staticClass","append","isText","BInputGroupAddon","_defineProperty","obj","key","value","Object","defineProperty","enumerable","configurable","writable","computeJustifyContent","concat","align","cardHeader","fill","justified","pills","small","tabs","vertical","BNav","_class","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","apply","_objectSpread","target","i","arguments","length","source","forEach","getOwnPropertyDescriptors","defineProperties","BInputGroupPrepend","appendHtml","prepend","prependHtml","size","BInputGroup","$prepend","hasPrependSlot","domProps","html","$append","hasAppendSlot","role","_objectSpread2","_watch","MODEL_PROP_NAME_ACTIVE","MODEL_EVENT_NAME_ACTIVE","BTab","mixins","inject","bvTabs","default","localActive","this","disabled","computed","_isTab","tabClasses","active","card","activeTabClass","controlledBy","buttonId","safeId","computedNoFade","fade","computedLazy","lazy","watch","newValue","oldValue","activate","deactivate","$emit","firstTab","mounted","registerTab","updated","updateButton","hasNormalizedSlot","beforeDestroy","unregisterTab","methods","activateTab","deactivateTab","$content","directives","ref","normalizeSlot","mode","noFade","BMediaAside","global","factory","_classCallCheck","instance","Constructor","_defineProperties","descriptor","_toPropertyKey","_createClass","protoProps","staticProps","prototype","_extends","assign","bind","hasOwnProperty","call","_toPrimitive","input","hint","prim","Symbol","toPrimitive","undefined","res","String","Number","arg","canvasToBlob","window","CanvasPrototype","HTMLCanvasElement","hasBlobConstructor","Blob","Boolean","e","hasArrayBufferViewSupport","Uint8Array","BlobBuilder","WebKitBlobBuilder","MozBlobBuilder","MSBlobBuilder","dataURIPattern","dataURLtoBlob","atob","ArrayBuffer","dataURI","matches","mediaType","isBase64","dataString","byteString","arrayBuffer","intArray","bb","match","Error","slice","decodeURIComponent","charCodeAt","type","getBlob","toBlob","mozGetAsFile","callback","quality","self","setTimeout","toDataURL","msToBlob","isBlob","toString","DEFAULTS","strict","checkOrientation","retainExif","maxWidth","Infinity","maxHeight","minWidth","minHeight","width","height","resize","mimeType","convertTypes","convertSize","beforeDraw","drew","success","error","IS_BROWSER","document","WINDOW","isPositiveNumber","Array","toArray","from","REGEXP_IMAGE_TYPE","isImageType","test","imageTypeToExtension","extension","substr","fromCharCode","getStringFromCharCode","dataView","start","str","getUint8","btoa","arrayBufferToDataURL","chunks","chunkSize","uint8","subarray","join","resetAndGetOrientation","orientation","DataView","littleEndian","app1Start","ifdStart","byteLength","offset","exifIDCode","tiffOffset","endianness","getUint16","firstIFDOffset","getUint32","_offset","_length","setUint16","parseOrientation","rotate","scaleX","scaleY","REGEXP_DECIMALS","normalizeDecimalNumber","times","Math","round","getAdjustedSizes","aspectRatio","isValidWidth","isValidHeight","adjustedWidth","getExif","array","segments","next","end","segment","reduce","exifArray","current","insertExif","app0Length","newArrayBuffer","ArrayBuffer$1","FileReader","URL","webkitURL","REGEXP_EXTENSION","AnotherCompressor","Compressor","file","options","exif","image","Image","aborted","result","init","_this","isJPEGImage","reader","onload","url","createObjectURL","load","onabort","fail","onerror","onloadend","readAsArrayBuffer","readAsDataURL","_this2","draw","naturalWidth","naturalHeight","navigator","userAgent","crossOrigin","alt","src","_ref2","_this3","_ref2$rotate","_ref2$scaleX","_ref2$scaleY","canvas","createElement","context","getContext","is90DegreesRotated","abs","resizable","max","_ref3","_ref4","_ref5","_getAdjustedSizes","_getAdjustedSizes2","_getAdjustedSizes3","_getAdjustedSizes4","_getAdjustedSizes4$wi","_getAdjustedSizes4$he","floor","min","destX","destY","destWidth","destHeight","params","srcX","srcY","srcWidth","srcHeight","_getAdjustedSizes5","contain","cover","_ref6","fillStyle","indexOf","fillRect","save","translate","PI","scale","drawImage","restore","blob","done","then","catch","_ref7","_ref8","revokeObjectURL","date","Date","lastModified","getTime","lastModifiedDate","replace","err","abort","complete","BMediaBody","stableSort","compareFn","map","a","index","sort","b","$","toObject","toAbsoluteIndex","toIntegerOrInfinity","lengthOfArrayLike","setArrayLength","doesNotExceedSafeInteger","arraySpeciesCreate","createProperty","deletePropertyOrThrow","arrayMethodHasSpeciesSupport","HAS_SPECIES_SUPPORT","proto","forced","splice","deleteCount","insertCount","actualDeleteCount","A","k","to","len","actualStart","argumentsLength","plain","formCustomMixin","custom","_makeModelMixin","defaultValue","validator","VALUE_EMPTY_DEPRECATED_MSG","isValidValue","modelMixin","mixin","modelProps","MODEL_PROP_NAME","prop","MODEL_EVENT_NAME","event","every","v","getDataTransferItemEntry","item","getAsEntry","webkitGetAsEntry","getAllFileEntries","dataTransferItemList","traverseDirectories","Promise","all","kind","entry","isDirectory","getAllFileEntriesInDirectory","createReader","isFile","resolve","$path","directoryReader","path","entryPromises","readDirectoryEntries","readEntries","entries","accept","browseText","capture","directory","dropPlaceholder","fileNameFormatter","multiple","noDrop","noDropPlaceholder","noTraverse","placeholder","BFormFile","inheritAttrs","files","dragging","dropAllowed","hasFocus","computedAccept","trim","split","extOrType","startMatch","endMatch","rx","RegExp","computedCapture","computedAttrs","required","form","bvAttrs","webkitdirectory","computedFileNameFormatter","defaultFileNameFormatter","clonedFiles","flattenedFiles","fileNames","labelContent","allowed","$createElement","filesTraversed","names","reset","created","$_form","$form","$el","isFileValid","some","isFilesArrayValid","setFiles","setInputFiles","dataTransfer","ClipboardEvent","clipboardData","DataTransfer","items","add","$refs","_unused","$input","_unused2","handleFiles","isDrop","filteredFiles","focusHandler","onChange","_event$dataTransfer","webkitRelativePath","onDragenter","_event$dataTransfer2","dropEffect","onDragover","_event$dataTransfer3","onDragleave","$nextTick","onDrop","_this4","stateClass","focus","style","zIndex","on","change","focusin","focusout","$label","for","pointerEvents","dragenter","dragover","dragleave","drop","BInputGroupAppend","BInputGroupText","notDisabled","tab","BVTabButton","controls","noKeyNav","posInSet","setSize","tabIndex","link","handleEvt","keyCode","shiftKey","_this$tab","title","titleItemClass","titleLinkClass","titleLinkAttributes","$link","activeNavItemClass","tabindex","click","keydown","navProps","contentClass","navClass","navWrapperClass","noNavStyle","BTabs","provide","currentTab","registeredTabs","localNavClass","classes","$tab","previousTab","nextTab","updateTabs","$_observer","setObserver","$t","disconnect","handler","content","childList","subtree","attributes","attributeFilter","getTabs","$tabs","order","selector","reverse","find","getButtonForTab","buttons","$btn","$button","$forceUpdate","tabEvent","cancelable","vueTarget","componentId","defaultPrevented","focusButton","emitTabClick","clickTab","currentIndex","lastTab","$activeTab","$fallbackTab","$buttons","_on","refInFor","$nav","$empty","col","row"],"mappings":"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","file":"js/chunk-2ff4b306.d6f735cb.js","sourcesContent":["'use strict';\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (O, P) {\n if (!delete O[P]) throw new $TypeError('Cannot delete property ' + tryToString(P) + ' of ' + tryToString(O));\n};\n","import { Vue, mergeData } from '../../vue';\nimport { NAME_FORM } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../constants/props';\nimport { makeProp, makePropsConfigurable } from '../../utils/props'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n id: makeProp(PROP_TYPE_STRING),\n inline: makeProp(PROP_TYPE_BOOLEAN, false),\n novalidate: makeProp(PROP_TYPE_BOOLEAN, false),\n validated: makeProp(PROP_TYPE_BOOLEAN, false)\n}, NAME_FORM); // --- Main component ---\n// @vue/component\n\nexport var BForm = /*#__PURE__*/Vue.extend({\n name: NAME_FORM,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n return h('form', mergeData(data, {\n class: {\n 'form-inline': props.inline,\n 'was-validated': props.validated\n },\n attrs: {\n id: props.id,\n novalidate: props.novalidate\n }\n }), children);\n }\n});","import { Vue, mergeData } from '../../vue';\nimport { NAME_MEDIA } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../constants/props';\nimport { SLOT_NAME_ASIDE, SLOT_NAME_DEFAULT } from '../../constants/slots';\nimport { normalizeSlot } from '../../utils/normalize-slot';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { BMediaAside } from './media-aside';\nimport { BMediaBody } from './media-body'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n noBody: makeProp(PROP_TYPE_BOOLEAN, false),\n rightAlign: makeProp(PROP_TYPE_BOOLEAN, false),\n tag: makeProp(PROP_TYPE_STRING, 'div'),\n verticalAlign: makeProp(PROP_TYPE_STRING, 'top')\n}, NAME_MEDIA); // --- Main component ---\n// @vue/component\n\nexport var BMedia = /*#__PURE__*/Vue.extend({\n name: NAME_MEDIA,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n slots = _ref.slots,\n scopedSlots = _ref.scopedSlots,\n children = _ref.children;\n var noBody = props.noBody,\n rightAlign = props.rightAlign,\n verticalAlign = props.verticalAlign;\n var $children = noBody ? children : [];\n\n if (!noBody) {\n var slotScope = {};\n var $slots = slots();\n var $scopedSlots = scopedSlots || {};\n $children.push(h(BMediaBody, normalizeSlot(SLOT_NAME_DEFAULT, slotScope, $scopedSlots, $slots)));\n var $aside = normalizeSlot(SLOT_NAME_ASIDE, slotScope, $scopedSlots, $slots);\n\n if ($aside) {\n $children[rightAlign ? 'push' : 'unshift'](h(BMediaAside, {\n props: {\n right: rightAlign,\n verticalAlign: verticalAlign\n }\n }, $aside));\n }\n }\n\n return h(props.tag, mergeData(data, {\n staticClass: 'media'\n }), $children);\n }\n});","import { Vue, mergeData } from '../../vue';\nimport { NAME_INPUT_GROUP_ADDON } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../constants/props';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { BInputGroupText } from './input-group-text'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n append: makeProp(PROP_TYPE_BOOLEAN, false),\n id: makeProp(PROP_TYPE_STRING),\n isText: makeProp(PROP_TYPE_BOOLEAN, false),\n tag: makeProp(PROP_TYPE_STRING, 'div')\n}, NAME_INPUT_GROUP_ADDON); // --- Main component ---\n// @vue/component\n\nexport var BInputGroupAddon = /*#__PURE__*/Vue.extend({\n name: NAME_INPUT_GROUP_ADDON,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var append = props.append;\n return h(props.tag, mergeData(data, {\n class: {\n 'input-group-append': append,\n 'input-group-prepend': !append\n },\n attrs: {\n id: props.id\n }\n }), props.isText ? [h(BInputGroupText, children)] : children);\n }\n});","function _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_NAV } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../constants/props';\nimport { makeProp, makePropsConfigurable } from '../../utils/props'; // --- Helper methods ---\n\nvar computeJustifyContent = function computeJustifyContent(value) {\n value = value === 'left' ? 'start' : value === 'right' ? 'end' : value;\n return \"justify-content-\".concat(value);\n}; // --- Props ---\n\n\nexport var props = makePropsConfigurable({\n align: makeProp(PROP_TYPE_STRING),\n // Set to `true` if placing in a card header\n cardHeader: makeProp(PROP_TYPE_BOOLEAN, false),\n fill: makeProp(PROP_TYPE_BOOLEAN, false),\n justified: makeProp(PROP_TYPE_BOOLEAN, false),\n pills: makeProp(PROP_TYPE_BOOLEAN, false),\n small: makeProp(PROP_TYPE_BOOLEAN, false),\n tabs: makeProp(PROP_TYPE_BOOLEAN, false),\n tag: makeProp(PROP_TYPE_STRING, 'ul'),\n vertical: makeProp(PROP_TYPE_BOOLEAN, false)\n}, NAME_NAV); // --- Main component ---\n// @vue/component\n\nexport var BNav = /*#__PURE__*/Vue.extend({\n name: NAME_NAV,\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 children = _ref.children;\n var tabs = props.tabs,\n pills = props.pills,\n vertical = props.vertical,\n align = props.align,\n cardHeader = props.cardHeader;\n return h(props.tag, mergeData(data, {\n staticClass: 'nav',\n class: (_class = {\n 'nav-tabs': tabs,\n 'nav-pills': pills && !tabs,\n 'card-header-tabs': !vertical && cardHeader && tabs,\n 'card-header-pills': !vertical && cardHeader && pills && !tabs,\n 'flex-column': vertical,\n 'nav-fill': !vertical && props.fill,\n 'nav-justified': !vertical && props.justified\n }, _defineProperty(_class, computeJustifyContent(align), !vertical && align), _defineProperty(_class, \"small\", props.small), _class)\n }), children);\n }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue, mergeData } from '../../vue';\nimport { NAME_INPUT_GROUP_PREPEND } from '../../constants/components';\nimport { omit } from '../../utils/object';\nimport { makePropsConfigurable } from '../../utils/props';\nimport { BInputGroupAddon, props as BInputGroupAddonProps } from './input-group-addon'; // --- Props ---\n\nexport var props = makePropsConfigurable(omit(BInputGroupAddonProps, ['append']), NAME_INPUT_GROUP_PREPEND); // --- Main component ---\n// @vue/component\n\nexport var BInputGroupPrepend = /*#__PURE__*/Vue.extend({\n name: NAME_INPUT_GROUP_PREPEND,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n // Pass all our data down to child, and set `append` to `true`\n return h(BInputGroupAddon, mergeData(data, {\n props: _objectSpread(_objectSpread({}, props), {}, {\n append: false\n })\n }), children);\n }\n});","function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue, mergeData } from '../../vue';\nimport { NAME_INPUT_GROUP } from '../../constants/components';\nimport { PROP_TYPE_STRING } from '../../constants/props';\nimport { SLOT_NAME_APPEND, SLOT_NAME_DEFAULT, SLOT_NAME_PREPEND } from '../../constants/slots';\nimport { htmlOrText } from '../../utils/html';\nimport { hasNormalizedSlot, normalizeSlot } from '../../utils/normalize-slot';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { BInputGroupAppend } from './input-group-append';\nimport { BInputGroupPrepend } from './input-group-prepend';\nimport { BInputGroupText } from './input-group-text'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n append: makeProp(PROP_TYPE_STRING),\n appendHtml: makeProp(PROP_TYPE_STRING),\n id: makeProp(PROP_TYPE_STRING),\n prepend: makeProp(PROP_TYPE_STRING),\n prependHtml: makeProp(PROP_TYPE_STRING),\n size: makeProp(PROP_TYPE_STRING),\n tag: makeProp(PROP_TYPE_STRING, 'div')\n}, NAME_INPUT_GROUP); // --- Main component ---\n// @vue/component\n\nexport var BInputGroup = /*#__PURE__*/Vue.extend({\n name: NAME_INPUT_GROUP,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n slots = _ref.slots,\n scopedSlots = _ref.scopedSlots;\n var prepend = props.prepend,\n prependHtml = props.prependHtml,\n append = props.append,\n appendHtml = props.appendHtml,\n size = props.size;\n var $scopedSlots = scopedSlots || {};\n var $slots = slots();\n var slotScope = {};\n var $prepend = h();\n var hasPrependSlot = hasNormalizedSlot(SLOT_NAME_PREPEND, $scopedSlots, $slots);\n\n if (hasPrependSlot || prepend || prependHtml) {\n $prepend = h(BInputGroupPrepend, [hasPrependSlot ? normalizeSlot(SLOT_NAME_PREPEND, slotScope, $scopedSlots, $slots) : h(BInputGroupText, {\n domProps: htmlOrText(prependHtml, prepend)\n })]);\n }\n\n var $append = h();\n var hasAppendSlot = hasNormalizedSlot(SLOT_NAME_APPEND, $scopedSlots, $slots);\n\n if (hasAppendSlot || append || appendHtml) {\n $append = h(BInputGroupAppend, [hasAppendSlot ? normalizeSlot(SLOT_NAME_APPEND, slotScope, $scopedSlots, $slots) : h(BInputGroupText, {\n domProps: htmlOrText(appendHtml, append)\n })]);\n }\n\n return h(props.tag, mergeData(data, {\n staticClass: 'input-group',\n class: _defineProperty({}, \"input-group-\".concat(size), size),\n attrs: {\n id: props.id || null,\n role: 'group'\n }\n }), [$prepend, normalizeSlot(SLOT_NAME_DEFAULT, slotScope, $scopedSlots, $slots), $append]);\n }\n});","var _objectSpread2, _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_TAB } from '../../constants/components';\nimport { MODEL_EVENT_NAME_PREFIX } from '../../constants/events';\nimport { PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_BOOLEAN, PROP_TYPE_OBJECT, PROP_TYPE_STRING } from '../../constants/props';\nimport { SLOT_NAME_TITLE } from '../../constants/slots';\nimport { sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { idMixin, props as idProps } from '../../mixins/id';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { BVTransition } from '../transition/bv-transition'; // --- Constants ---\n\nvar MODEL_PROP_NAME_ACTIVE = 'active';\nvar MODEL_EVENT_NAME_ACTIVE = MODEL_EVENT_NAME_PREFIX + MODEL_PROP_NAME_ACTIVE; // --- Props ---\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, idProps), {}, (_objectSpread2 = {}, _defineProperty(_objectSpread2, MODEL_PROP_NAME_ACTIVE, makeProp(PROP_TYPE_BOOLEAN, false)), _defineProperty(_objectSpread2, \"buttonId\", makeProp(PROP_TYPE_STRING)), _defineProperty(_objectSpread2, \"disabled\", makeProp(PROP_TYPE_BOOLEAN, false)), _defineProperty(_objectSpread2, \"lazy\", makeProp(PROP_TYPE_BOOLEAN, false)), _defineProperty(_objectSpread2, \"noBody\", makeProp(PROP_TYPE_BOOLEAN, false)), _defineProperty(_objectSpread2, \"tag\", makeProp(PROP_TYPE_STRING, 'div')), _defineProperty(_objectSpread2, \"title\", makeProp(PROP_TYPE_STRING)), _defineProperty(_objectSpread2, \"titleItemClass\", makeProp(PROP_TYPE_ARRAY_OBJECT_STRING)), _defineProperty(_objectSpread2, \"titleLinkAttributes\", makeProp(PROP_TYPE_OBJECT)), _defineProperty(_objectSpread2, \"titleLinkClass\", makeProp(PROP_TYPE_ARRAY_OBJECT_STRING)), _objectSpread2))), NAME_TAB); // --- Main component ---\n// @vue/component\n\nexport var BTab = /*#__PURE__*/Vue.extend({\n name: NAME_TAB,\n mixins: [idMixin, normalizeSlotMixin],\n inject: {\n bvTabs: {\n default: function _default() {\n return {};\n }\n }\n },\n props: props,\n data: function data() {\n return {\n localActive: this[MODEL_PROP_NAME_ACTIVE] && !this.disabled\n };\n },\n computed: {\n // For parent sniffing of child\n _isTab: function _isTab() {\n return true;\n },\n tabClasses: function tabClasses() {\n var active = this.localActive,\n disabled = this.disabled;\n return [{\n active: active,\n disabled: disabled,\n 'card-body': this.bvTabs.card && !this.noBody\n }, // Apply `activeTabClass` styles when this tab is active\n active ? this.bvTabs.activeTabClass : null];\n },\n controlledBy: function controlledBy() {\n return this.buttonId || this.safeId('__BV_tab_button__');\n },\n computedNoFade: function computedNoFade() {\n return !(this.bvTabs.fade || false);\n },\n computedLazy: function computedLazy() {\n return this.bvTabs.lazy || this.lazy;\n }\n },\n watch: (_watch = {}, _defineProperty(_watch, MODEL_PROP_NAME_ACTIVE, function (newValue, oldValue) {\n if (newValue !== oldValue) {\n if (newValue) {\n // If activated post mount\n this.activate();\n } else {\n /* istanbul ignore next */\n if (!this.deactivate()) {\n // Tab couldn't be deactivated, so we reset the synced active prop\n // Deactivation will fail if no other tabs to activate\n this.$emit(MODEL_EVENT_NAME_ACTIVE, this.localActive);\n }\n }\n }\n }), _defineProperty(_watch, \"disabled\", function disabled(newValue, oldValue) {\n if (newValue !== oldValue) {\n var firstTab = this.bvTabs.firstTab;\n\n if (newValue && this.localActive && firstTab) {\n this.localActive = false;\n firstTab();\n }\n }\n }), _defineProperty(_watch, \"localActive\", function localActive(newValue) {\n // Make `active` prop work with `.sync` modifier\n this.$emit(MODEL_EVENT_NAME_ACTIVE, newValue);\n }), _watch),\n mounted: function mounted() {\n // Inform `` of our presence\n this.registerTab();\n },\n updated: function updated() {\n // Force the tab button content to update (since slots are not reactive)\n // Only done if we have a title slot, as the title prop is reactive\n var updateButton = this.bvTabs.updateButton;\n\n if (updateButton && this.hasNormalizedSlot(SLOT_NAME_TITLE)) {\n updateButton(this);\n }\n },\n beforeDestroy: function beforeDestroy() {\n // Inform `` of our departure\n this.unregisterTab();\n },\n methods: {\n // Private methods\n registerTab: function registerTab() {\n // Inform `` of our presence\n var registerTab = this.bvTabs.registerTab;\n\n if (registerTab) {\n registerTab(this);\n }\n },\n unregisterTab: function unregisterTab() {\n // Inform `` of our departure\n var unregisterTab = this.bvTabs.unregisterTab;\n\n if (unregisterTab) {\n unregisterTab(this);\n }\n },\n // Public methods\n activate: function activate() {\n // Not inside a `` component or tab is disabled\n var activateTab = this.bvTabs.activateTab;\n return activateTab && !this.disabled ? activateTab(this) : false;\n },\n deactivate: function deactivate() {\n // Not inside a `` component or not active to begin with\n var deactivateTab = this.bvTabs.deactivateTab;\n return deactivateTab && this.localActive ? deactivateTab(this) : false;\n }\n },\n render: function render(h) {\n var localActive = this.localActive;\n var $content = h(this.tag, {\n staticClass: 'tab-pane',\n class: this.tabClasses,\n directives: [{\n name: 'show',\n value: localActive\n }],\n attrs: {\n role: 'tabpanel',\n id: this.safeId(),\n 'aria-hidden': localActive ? 'false' : 'true',\n 'aria-labelledby': this.controlledBy || null\n },\n ref: 'panel'\n }, // Render content lazily if requested\n [localActive || !this.computedLazy ? this.normalizeSlot() : h()]);\n return h(BVTransition, {\n props: {\n mode: 'out-in',\n noFade: this.computedNoFade\n }\n }, [$content]);\n }\n});","function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue, mergeData } from '../../vue';\nimport { NAME_MEDIA_ASIDE } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../constants/props';\nimport { makeProp, makePropsConfigurable } from '../../utils/props'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n right: makeProp(PROP_TYPE_BOOLEAN, false),\n tag: makeProp(PROP_TYPE_STRING, 'div'),\n verticalAlign: makeProp(PROP_TYPE_STRING, 'top')\n}, NAME_MEDIA_ASIDE); // --- Main component ---\n// @vue/component\n\nexport var BMediaAside = /*#__PURE__*/Vue.extend({\n name: NAME_MEDIA_ASIDE,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n var verticalAlign = props.verticalAlign;\n var align = verticalAlign === 'top' ? 'start' : verticalAlign === 'bottom' ? 'end' :\n /* istanbul ignore next */\n verticalAlign;\n return h(props.tag, mergeData(data, {\n staticClass: 'media-aside',\n class: _defineProperty({\n 'media-aside-right': props.right\n }, \"align-self-\".concat(align), align)\n }), children);\n }\n});","/*!\n * Compressor.js v1.2.1\n * https://fengyuanchen.github.io/compressorjs\n *\n * Copyright 2018-present Chen Fengyuan\n * Released under the MIT license\n *\n * Date: 2023-02-28T14:09:41.732Z\n */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Compressor = factory());\n})(this, (function () { 'use strict';\n\n function ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n return keys;\n }\n function _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n }\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor);\n }\n }\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n }\n function _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n }\n function _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n }\n function _toPrimitive(input, hint) {\n if (typeof input !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (typeof res !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n }\n function _toPropertyKey(arg) {\n var key = _toPrimitive(arg, \"string\");\n return typeof key === \"symbol\" ? key : String(key);\n }\n\n var canvasToBlob = {exports: {}};\n\n /*\n * JavaScript Canvas to Blob\n * https://github.com/blueimp/JavaScript-Canvas-to-Blob\n *\n * Copyright 2012, Sebastian Tschan\n * https://blueimp.net\n *\n * Licensed under the MIT license:\n * https://opensource.org/licenses/MIT\n *\n * Based on stackoverflow user Stoive's code snippet:\n * http://stackoverflow.com/q/4998908\n */\n (function (module) {\n if (typeof window === 'undefined') {\n return;\n }\n (function (window) {\n\n var CanvasPrototype = window.HTMLCanvasElement && window.HTMLCanvasElement.prototype;\n var hasBlobConstructor = window.Blob && function () {\n try {\n return Boolean(new Blob());\n } catch (e) {\n return false;\n }\n }();\n var hasArrayBufferViewSupport = hasBlobConstructor && window.Uint8Array && function () {\n try {\n return new Blob([new Uint8Array(100)]).size === 100;\n } catch (e) {\n return false;\n }\n }();\n var BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder || window.MSBlobBuilder;\n var dataURIPattern = /^data:((.*?)(;charset=.*?)?)(;base64)?,/;\n var dataURLtoBlob = (hasBlobConstructor || BlobBuilder) && window.atob && window.ArrayBuffer && window.Uint8Array && function (dataURI) {\n var matches, mediaType, isBase64, dataString, byteString, arrayBuffer, intArray, i, bb;\n // Parse the dataURI components as per RFC 2397\n matches = dataURI.match(dataURIPattern);\n if (!matches) {\n throw new Error('invalid data URI');\n }\n // Default to text/plain;charset=US-ASCII\n mediaType = matches[2] ? matches[1] : 'text/plain' + (matches[3] || ';charset=US-ASCII');\n isBase64 = !!matches[4];\n dataString = dataURI.slice(matches[0].length);\n if (isBase64) {\n // Convert base64 to raw binary data held in a string:\n byteString = atob(dataString);\n } else {\n // Convert base64/URLEncoded data component to raw binary:\n byteString = decodeURIComponent(dataString);\n }\n // Write the bytes of the string to an ArrayBuffer:\n arrayBuffer = new ArrayBuffer(byteString.length);\n intArray = new Uint8Array(arrayBuffer);\n for (i = 0; i < byteString.length; i += 1) {\n intArray[i] = byteString.charCodeAt(i);\n }\n // Write the ArrayBuffer (or ArrayBufferView) to a blob:\n if (hasBlobConstructor) {\n return new Blob([hasArrayBufferViewSupport ? intArray : arrayBuffer], {\n type: mediaType\n });\n }\n bb = new BlobBuilder();\n bb.append(arrayBuffer);\n return bb.getBlob(mediaType);\n };\n if (window.HTMLCanvasElement && !CanvasPrototype.toBlob) {\n if (CanvasPrototype.mozGetAsFile) {\n CanvasPrototype.toBlob = function (callback, type, quality) {\n var self = this;\n setTimeout(function () {\n if (quality && CanvasPrototype.toDataURL && dataURLtoBlob) {\n callback(dataURLtoBlob(self.toDataURL(type, quality)));\n } else {\n callback(self.mozGetAsFile('blob', type));\n }\n });\n };\n } else if (CanvasPrototype.toDataURL && dataURLtoBlob) {\n if (CanvasPrototype.msToBlob) {\n CanvasPrototype.toBlob = function (callback, type, quality) {\n var self = this;\n setTimeout(function () {\n if ((type && type !== 'image/png' || quality) && CanvasPrototype.toDataURL && dataURLtoBlob) {\n callback(dataURLtoBlob(self.toDataURL(type, quality)));\n } else {\n callback(self.msToBlob(type));\n }\n });\n };\n } else {\n CanvasPrototype.toBlob = function (callback, type, quality) {\n var self = this;\n setTimeout(function () {\n callback(dataURLtoBlob(self.toDataURL(type, quality)));\n });\n };\n }\n }\n }\n if (module.exports) {\n module.exports = dataURLtoBlob;\n } else {\n window.dataURLtoBlob = dataURLtoBlob;\n }\n })(window);\n })(canvasToBlob);\n var toBlob = canvasToBlob.exports;\n\n var isBlob = function isBlob(value) {\n if (typeof Blob === 'undefined') {\n return false;\n }\n return value instanceof Blob || Object.prototype.toString.call(value) === '[object Blob]';\n };\n\n var DEFAULTS = {\n /**\n * Indicates if output the original image instead of the compressed one\n * when the size of the compressed image is greater than the original one's\n * @type {boolean}\n */\n strict: true,\n /**\n * Indicates if read the image's Exif Orientation information,\n * and then rotate or flip the image automatically.\n * @type {boolean}\n */\n checkOrientation: true,\n /**\n * Indicates if retain the image's Exif information after compressed.\n * @type {boolean}\n */\n retainExif: false,\n /**\n * The max width of the output image.\n * @type {number}\n */\n maxWidth: Infinity,\n /**\n * The max height of the output image.\n * @type {number}\n */\n maxHeight: Infinity,\n /**\n * The min width of the output image.\n * @type {number}\n */\n minWidth: 0,\n /**\n * The min height of the output image.\n * @type {number}\n */\n minHeight: 0,\n /**\n * The width of the output image.\n * If not specified, the natural width of the source image will be used.\n * @type {number}\n */\n width: undefined,\n /**\n * The height of the output image.\n * If not specified, the natural height of the source image will be used.\n * @type {number}\n */\n height: undefined,\n /**\n * Sets how the size of the image should be resized to the container\n * specified by the `width` and `height` options.\n * @type {string}\n */\n resize: 'none',\n /**\n * The quality of the output image.\n * It must be a number between `0` and `1`,\n * and only available for `image/jpeg` and `image/webp` images.\n * Check out {@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/toBlob canvas.toBlob}.\n * @type {number}\n */\n quality: 0.8,\n /**\n * The mime type of the output image.\n * By default, the original mime type of the source image file will be used.\n * @type {string}\n */\n mimeType: 'auto',\n /**\n * Files whose file type is included in this list,\n * and whose file size exceeds the `convertSize` value will be converted to JPEGs.\n * @type {string|Array}\n */\n convertTypes: ['image/png'],\n /**\n * PNG files over this size (5 MB by default) will be converted to JPEGs.\n * To disable this, just set the value to `Infinity`.\n * @type {number}\n */\n convertSize: 5000000,\n /**\n * The hook function to execute before draw the image into the canvas for compression.\n * @type {Function}\n * @param {CanvasRenderingContext2D} context - The 2d rendering context of the canvas.\n * @param {HTMLCanvasElement} canvas - The canvas for compression.\n * @example\n * function (context, canvas) {\n * context.fillStyle = '#fff';\n * }\n */\n beforeDraw: null,\n /**\n * The hook function to execute after drew the image into the canvas for compression.\n * @type {Function}\n * @param {CanvasRenderingContext2D} context - The 2d rendering context of the canvas.\n * @param {HTMLCanvasElement} canvas - The canvas for compression.\n * @example\n * function (context, canvas) {\n * context.filter = 'grayscale(100%)';\n * }\n */\n drew: null,\n /**\n * The hook function to execute when success to compress the image.\n * @type {Function}\n * @param {File} file - The compressed image File object.\n * @example\n * function (file) {\n * console.log(file);\n * }\n */\n success: null,\n /**\n * The hook function to execute when fail to compress the image.\n * @type {Function}\n * @param {Error} err - An Error object.\n * @example\n * function (err) {\n * console.log(err.message);\n * }\n */\n error: null\n };\n\n var IS_BROWSER = typeof window !== 'undefined' && typeof window.document !== 'undefined';\n var WINDOW = IS_BROWSER ? window : {};\n\n /**\n * Check if the given value is a positive number.\n * @param {*} value - The value to check.\n * @returns {boolean} Returns `true` if the given value is a positive number, else `false`.\n */\n var isPositiveNumber = function isPositiveNumber(value) {\n return value > 0 && value < Infinity;\n };\n var slice = Array.prototype.slice;\n\n /**\n * Convert array-like or iterable object to an array.\n * @param {*} value - The value to convert.\n * @returns {Array} Returns a new array.\n */\n function toArray(value) {\n return Array.from ? Array.from(value) : slice.call(value);\n }\n var REGEXP_IMAGE_TYPE = /^image\\/.+$/;\n\n /**\n * Check if the given value is a mime type of image.\n * @param {*} value - The value to check.\n * @returns {boolean} Returns `true` if the given is a mime type of image, else `false`.\n */\n function isImageType(value) {\n return REGEXP_IMAGE_TYPE.test(value);\n }\n\n /**\n * Convert image type to extension.\n * @param {string} value - The image type to convert.\n * @returns {boolean} Returns the image extension.\n */\n function imageTypeToExtension(value) {\n var extension = isImageType(value) ? value.substr(6) : '';\n if (extension === 'jpeg') {\n extension = 'jpg';\n }\n return \".\".concat(extension);\n }\n var fromCharCode = String.fromCharCode;\n\n /**\n * Get string from char code in data view.\n * @param {DataView} dataView - The data view for read.\n * @param {number} start - The start index.\n * @param {number} length - The read length.\n * @returns {string} The read result.\n */\n function getStringFromCharCode(dataView, start, length) {\n var str = '';\n var i;\n length += start;\n for (i = start; i < length; i += 1) {\n str += fromCharCode(dataView.getUint8(i));\n }\n return str;\n }\n var btoa = WINDOW.btoa;\n\n /**\n * Transform array buffer to Data URL.\n * @param {ArrayBuffer} arrayBuffer - The array buffer to transform.\n * @param {string} mimeType - The mime type of the Data URL.\n * @returns {string} The result Data URL.\n */\n function arrayBufferToDataURL(arrayBuffer, mimeType) {\n var chunks = [];\n var chunkSize = 8192;\n var uint8 = new Uint8Array(arrayBuffer);\n while (uint8.length > 0) {\n // XXX: Babel's `toConsumableArray` helper will throw error in IE or Safari 9\n // eslint-disable-next-line prefer-spread\n chunks.push(fromCharCode.apply(null, toArray(uint8.subarray(0, chunkSize))));\n uint8 = uint8.subarray(chunkSize);\n }\n return \"data:\".concat(mimeType, \";base64,\").concat(btoa(chunks.join('')));\n }\n\n /**\n * Get orientation value from given array buffer.\n * @param {ArrayBuffer} arrayBuffer - The array buffer to read.\n * @returns {number} The read orientation value.\n */\n function resetAndGetOrientation(arrayBuffer) {\n var dataView = new DataView(arrayBuffer);\n var orientation;\n\n // Ignores range error when the image does not have correct Exif information\n try {\n var littleEndian;\n var app1Start;\n var ifdStart;\n\n // Only handle JPEG image (start by 0xFFD8)\n if (dataView.getUint8(0) === 0xFF && dataView.getUint8(1) === 0xD8) {\n var length = dataView.byteLength;\n var offset = 2;\n while (offset + 1 < length) {\n if (dataView.getUint8(offset) === 0xFF && dataView.getUint8(offset + 1) === 0xE1) {\n app1Start = offset;\n break;\n }\n offset += 1;\n }\n }\n if (app1Start) {\n var exifIDCode = app1Start + 4;\n var tiffOffset = app1Start + 10;\n if (getStringFromCharCode(dataView, exifIDCode, 4) === 'Exif') {\n var endianness = dataView.getUint16(tiffOffset);\n littleEndian = endianness === 0x4949;\n if (littleEndian || endianness === 0x4D4D /* bigEndian */) {\n if (dataView.getUint16(tiffOffset + 2, littleEndian) === 0x002A) {\n var firstIFDOffset = dataView.getUint32(tiffOffset + 4, littleEndian);\n if (firstIFDOffset >= 0x00000008) {\n ifdStart = tiffOffset + firstIFDOffset;\n }\n }\n }\n }\n }\n if (ifdStart) {\n var _length = dataView.getUint16(ifdStart, littleEndian);\n var _offset;\n var i;\n for (i = 0; i < _length; i += 1) {\n _offset = ifdStart + i * 12 + 2;\n if (dataView.getUint16(_offset, littleEndian) === 0x0112 /* Orientation */) {\n // 8 is the offset of the current tag's value\n _offset += 8;\n\n // Get the original orientation value\n orientation = dataView.getUint16(_offset, littleEndian);\n\n // Override the orientation with its default value\n dataView.setUint16(_offset, 1, littleEndian);\n break;\n }\n }\n }\n } catch (e) {\n orientation = 1;\n }\n return orientation;\n }\n\n /**\n * Parse Exif Orientation value.\n * @param {number} orientation - The orientation to parse.\n * @returns {Object} The parsed result.\n */\n function parseOrientation(orientation) {\n var rotate = 0;\n var scaleX = 1;\n var scaleY = 1;\n switch (orientation) {\n // Flip horizontal\n case 2:\n scaleX = -1;\n break;\n\n // Rotate left 180°\n case 3:\n rotate = -180;\n break;\n\n // Flip vertical\n case 4:\n scaleY = -1;\n break;\n\n // Flip vertical and rotate right 90°\n case 5:\n rotate = 90;\n scaleY = -1;\n break;\n\n // Rotate right 90°\n case 6:\n rotate = 90;\n break;\n\n // Flip horizontal and rotate right 90°\n case 7:\n rotate = 90;\n scaleX = -1;\n break;\n\n // Rotate left 90°\n case 8:\n rotate = -90;\n break;\n }\n return {\n rotate: rotate,\n scaleX: scaleX,\n scaleY: scaleY\n };\n }\n var REGEXP_DECIMALS = /\\.\\d*(?:0|9){12}\\d*$/;\n\n /**\n * Normalize decimal number.\n * Check out {@link https://0.30000000000000004.com/}\n * @param {number} value - The value to normalize.\n * @param {number} [times=100000000000] - The times for normalizing.\n * @returns {number} Returns the normalized number.\n */\n function normalizeDecimalNumber(value) {\n var times = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 100000000000;\n return REGEXP_DECIMALS.test(value) ? Math.round(value * times) / times : value;\n }\n\n /**\n * Get the max sizes in a rectangle under the given aspect ratio.\n * @param {Object} data - The original sizes.\n * @param {string} [type='contain'] - The adjust type.\n * @returns {Object} The result sizes.\n */\n function getAdjustedSizes(_ref) {\n var aspectRatio = _ref.aspectRatio,\n height = _ref.height,\n width = _ref.width;\n var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'none';\n var isValidWidth = isPositiveNumber(width);\n var isValidHeight = isPositiveNumber(height);\n if (isValidWidth && isValidHeight) {\n var adjustedWidth = height * aspectRatio;\n if ((type === 'contain' || type === 'none') && adjustedWidth > width || type === 'cover' && adjustedWidth < width) {\n height = width / aspectRatio;\n } else {\n width = height * aspectRatio;\n }\n } else if (isValidWidth) {\n height = width / aspectRatio;\n } else if (isValidHeight) {\n width = height * aspectRatio;\n }\n return {\n width: width,\n height: height\n };\n }\n\n /**\n * Get Exif information from the given array buffer.\n * @param {ArrayBuffer} arrayBuffer - The array buffer to read.\n * @returns {Array} The read Exif information.\n */\n function getExif(arrayBuffer) {\n var array = toArray(new Uint8Array(arrayBuffer));\n var length = array.length;\n var segments = [];\n var start = 0;\n while (start + 3 < length) {\n var value = array[start];\n var next = array[start + 1];\n\n // SOS (Start of Scan)\n if (value === 0xFF && next === 0xDA) {\n break;\n }\n\n // SOI (Start of Image)\n if (value === 0xFF && next === 0xD8) {\n start += 2;\n } else {\n var offset = array[start + 2] * 256 + array[start + 3];\n var end = start + offset + 2;\n var segment = array.slice(start, end);\n segments.push(segment);\n start = end;\n }\n }\n return segments.reduce(function (exifArray, current) {\n if (current[0] === 0xFF && current[1] === 0xE1) {\n return exifArray.concat(current);\n }\n return exifArray;\n }, []);\n }\n\n /**\n * Insert Exif information into the given array buffer.\n * @param {ArrayBuffer} arrayBuffer - The array buffer to transform.\n * @param {Array} exifArray - The Exif information to insert.\n * @returns {ArrayBuffer} The transformed array buffer.\n */\n function insertExif(arrayBuffer, exifArray) {\n var array = toArray(new Uint8Array(arrayBuffer));\n if (array[2] !== 0xFF || array[3] !== 0xE0) {\n return arrayBuffer;\n }\n var app0Length = array[4] * 256 + array[5];\n var newArrayBuffer = [0xFF, 0xD8].concat(exifArray, array.slice(4 + app0Length));\n return new Uint8Array(newArrayBuffer);\n }\n\n var ArrayBuffer$1 = WINDOW.ArrayBuffer,\n FileReader = WINDOW.FileReader;\n var URL = WINDOW.URL || WINDOW.webkitURL;\n var REGEXP_EXTENSION = /\\.\\w+$/;\n var AnotherCompressor = WINDOW.Compressor;\n\n /**\n * Creates a new image compressor.\n * @class\n */\n var Compressor = /*#__PURE__*/function () {\n /**\n * The constructor of Compressor.\n * @param {File|Blob} file - The target image file for compressing.\n * @param {Object} [options] - The options for compressing.\n */\n function Compressor(file, options) {\n _classCallCheck(this, Compressor);\n this.file = file;\n this.exif = [];\n this.image = new Image();\n this.options = _objectSpread2(_objectSpread2({}, DEFAULTS), options);\n this.aborted = false;\n this.result = null;\n this.init();\n }\n _createClass(Compressor, [{\n key: \"init\",\n value: function init() {\n var _this = this;\n var file = this.file,\n options = this.options;\n if (!isBlob(file)) {\n this.fail(new Error('The first argument must be a File or Blob object.'));\n return;\n }\n var mimeType = file.type;\n if (!isImageType(mimeType)) {\n this.fail(new Error('The first argument must be an image File or Blob object.'));\n return;\n }\n if (!URL || !FileReader) {\n this.fail(new Error('The current browser does not support image compression.'));\n return;\n }\n if (!ArrayBuffer$1) {\n options.checkOrientation = false;\n options.retainExif = false;\n }\n var isJPEGImage = mimeType === 'image/jpeg';\n var checkOrientation = isJPEGImage && options.checkOrientation;\n var retainExif = isJPEGImage && options.retainExif;\n if (URL && !checkOrientation && !retainExif) {\n this.load({\n url: URL.createObjectURL(file)\n });\n } else {\n var reader = new FileReader();\n this.reader = reader;\n reader.onload = function (_ref) {\n var target = _ref.target;\n var result = target.result;\n var data = {};\n var orientation = 1;\n if (checkOrientation) {\n // Reset the orientation value to its default value 1\n // as some iOS browsers will render image with its orientation\n orientation = resetAndGetOrientation(result);\n if (orientation > 1) {\n _extends(data, parseOrientation(orientation));\n }\n }\n if (retainExif) {\n _this.exif = getExif(result);\n }\n if (checkOrientation || retainExif) {\n if (!URL\n\n // Generate a new URL with the default orientation value 1.\n || orientation > 1) {\n data.url = arrayBufferToDataURL(result, mimeType);\n } else {\n data.url = URL.createObjectURL(file);\n }\n } else {\n data.url = result;\n }\n _this.load(data);\n };\n reader.onabort = function () {\n _this.fail(new Error('Aborted to read the image with FileReader.'));\n };\n reader.onerror = function () {\n _this.fail(new Error('Failed to read the image with FileReader.'));\n };\n reader.onloadend = function () {\n _this.reader = null;\n };\n if (checkOrientation || retainExif) {\n reader.readAsArrayBuffer(file);\n } else {\n reader.readAsDataURL(file);\n }\n }\n }\n }, {\n key: \"load\",\n value: function load(data) {\n var _this2 = this;\n var file = this.file,\n image = this.image;\n image.onload = function () {\n _this2.draw(_objectSpread2(_objectSpread2({}, data), {}, {\n naturalWidth: image.naturalWidth,\n naturalHeight: image.naturalHeight\n }));\n };\n image.onabort = function () {\n _this2.fail(new Error('Aborted to load the image.'));\n };\n image.onerror = function () {\n _this2.fail(new Error('Failed to load the image.'));\n };\n\n // Match all browsers that use WebKit as the layout engine in iOS devices,\n // such as Safari for iOS, Chrome for iOS, and in-app browsers.\n if (WINDOW.navigator && /(?:iPad|iPhone|iPod).*?AppleWebKit/i.test(WINDOW.navigator.userAgent)) {\n // Fix the `The operation is insecure` error (#57)\n image.crossOrigin = 'anonymous';\n }\n image.alt = file.name;\n image.src = data.url;\n }\n }, {\n key: \"draw\",\n value: function draw(_ref2) {\n var _this3 = this;\n var naturalWidth = _ref2.naturalWidth,\n naturalHeight = _ref2.naturalHeight,\n _ref2$rotate = _ref2.rotate,\n rotate = _ref2$rotate === void 0 ? 0 : _ref2$rotate,\n _ref2$scaleX = _ref2.scaleX,\n scaleX = _ref2$scaleX === void 0 ? 1 : _ref2$scaleX,\n _ref2$scaleY = _ref2.scaleY,\n scaleY = _ref2$scaleY === void 0 ? 1 : _ref2$scaleY;\n var file = this.file,\n image = this.image,\n options = this.options;\n var canvas = document.createElement('canvas');\n var context = canvas.getContext('2d');\n var is90DegreesRotated = Math.abs(rotate) % 180 === 90;\n var resizable = (options.resize === 'contain' || options.resize === 'cover') && isPositiveNumber(options.width) && isPositiveNumber(options.height);\n var maxWidth = Math.max(options.maxWidth, 0) || Infinity;\n var maxHeight = Math.max(options.maxHeight, 0) || Infinity;\n var minWidth = Math.max(options.minWidth, 0) || 0;\n var minHeight = Math.max(options.minHeight, 0) || 0;\n var aspectRatio = naturalWidth / naturalHeight;\n var width = options.width,\n height = options.height;\n if (is90DegreesRotated) {\n var _ref3 = [maxHeight, maxWidth];\n maxWidth = _ref3[0];\n maxHeight = _ref3[1];\n var _ref4 = [minHeight, minWidth];\n minWidth = _ref4[0];\n minHeight = _ref4[1];\n var _ref5 = [height, width];\n width = _ref5[0];\n height = _ref5[1];\n }\n if (resizable) {\n aspectRatio = width / height;\n }\n var _getAdjustedSizes = getAdjustedSizes({\n aspectRatio: aspectRatio,\n width: maxWidth,\n height: maxHeight\n }, 'contain');\n maxWidth = _getAdjustedSizes.width;\n maxHeight = _getAdjustedSizes.height;\n var _getAdjustedSizes2 = getAdjustedSizes({\n aspectRatio: aspectRatio,\n width: minWidth,\n height: minHeight\n }, 'cover');\n minWidth = _getAdjustedSizes2.width;\n minHeight = _getAdjustedSizes2.height;\n if (resizable) {\n var _getAdjustedSizes3 = getAdjustedSizes({\n aspectRatio: aspectRatio,\n width: width,\n height: height\n }, options.resize);\n width = _getAdjustedSizes3.width;\n height = _getAdjustedSizes3.height;\n } else {\n var _getAdjustedSizes4 = getAdjustedSizes({\n aspectRatio: aspectRatio,\n width: width,\n height: height\n });\n var _getAdjustedSizes4$wi = _getAdjustedSizes4.width;\n width = _getAdjustedSizes4$wi === void 0 ? naturalWidth : _getAdjustedSizes4$wi;\n var _getAdjustedSizes4$he = _getAdjustedSizes4.height;\n height = _getAdjustedSizes4$he === void 0 ? naturalHeight : _getAdjustedSizes4$he;\n }\n width = Math.floor(normalizeDecimalNumber(Math.min(Math.max(width, minWidth), maxWidth)));\n height = Math.floor(normalizeDecimalNumber(Math.min(Math.max(height, minHeight), maxHeight)));\n var destX = -width / 2;\n var destY = -height / 2;\n var destWidth = width;\n var destHeight = height;\n var params = [];\n if (resizable) {\n var srcX = 0;\n var srcY = 0;\n var srcWidth = naturalWidth;\n var srcHeight = naturalHeight;\n var _getAdjustedSizes5 = getAdjustedSizes({\n aspectRatio: aspectRatio,\n width: naturalWidth,\n height: naturalHeight\n }, {\n contain: 'cover',\n cover: 'contain'\n }[options.resize]);\n srcWidth = _getAdjustedSizes5.width;\n srcHeight = _getAdjustedSizes5.height;\n srcX = (naturalWidth - srcWidth) / 2;\n srcY = (naturalHeight - srcHeight) / 2;\n params.push(srcX, srcY, srcWidth, srcHeight);\n }\n params.push(destX, destY, destWidth, destHeight);\n if (is90DegreesRotated) {\n var _ref6 = [height, width];\n width = _ref6[0];\n height = _ref6[1];\n }\n canvas.width = width;\n canvas.height = height;\n if (!isImageType(options.mimeType)) {\n options.mimeType = file.type;\n }\n var fillStyle = 'transparent';\n\n // Converts PNG files over the `convertSize` to JPEGs.\n if (file.size > options.convertSize && options.convertTypes.indexOf(options.mimeType) >= 0) {\n options.mimeType = 'image/jpeg';\n }\n var isJPEGImage = options.mimeType === 'image/jpeg';\n if (isJPEGImage) {\n fillStyle = '#fff';\n }\n\n // Override the default fill color (#000, black)\n context.fillStyle = fillStyle;\n context.fillRect(0, 0, width, height);\n if (options.beforeDraw) {\n options.beforeDraw.call(this, context, canvas);\n }\n if (this.aborted) {\n return;\n }\n context.save();\n context.translate(width / 2, height / 2);\n context.rotate(rotate * Math.PI / 180);\n context.scale(scaleX, scaleY);\n context.drawImage.apply(context, [image].concat(params));\n context.restore();\n if (options.drew) {\n options.drew.call(this, context, canvas);\n }\n if (this.aborted) {\n return;\n }\n var callback = function callback(blob) {\n if (!_this3.aborted) {\n var done = function done(result) {\n return _this3.done({\n naturalWidth: naturalWidth,\n naturalHeight: naturalHeight,\n result: result\n });\n };\n if (blob && isJPEGImage && options.retainExif && _this3.exif && _this3.exif.length > 0) {\n var next = function next(arrayBuffer) {\n return done(toBlob(arrayBufferToDataURL(insertExif(arrayBuffer, _this3.exif), options.mimeType)));\n };\n if (blob.arrayBuffer) {\n blob.arrayBuffer().then(next).catch(function () {\n _this3.fail(new Error('Failed to read the compressed image with Blob.arrayBuffer().'));\n });\n } else {\n var reader = new FileReader();\n _this3.reader = reader;\n reader.onload = function (_ref7) {\n var target = _ref7.target;\n next(target.result);\n };\n reader.onabort = function () {\n _this3.fail(new Error('Aborted to read the compressed image with FileReader.'));\n };\n reader.onerror = function () {\n _this3.fail(new Error('Failed to read the compressed image with FileReader.'));\n };\n reader.onloadend = function () {\n _this3.reader = null;\n };\n reader.readAsArrayBuffer(blob);\n }\n } else {\n done(blob);\n }\n }\n };\n if (canvas.toBlob) {\n canvas.toBlob(callback, options.mimeType, options.quality);\n } else {\n callback(toBlob(canvas.toDataURL(options.mimeType, options.quality)));\n }\n }\n }, {\n key: \"done\",\n value: function done(_ref8) {\n var naturalWidth = _ref8.naturalWidth,\n naturalHeight = _ref8.naturalHeight,\n result = _ref8.result;\n var file = this.file,\n image = this.image,\n options = this.options;\n if (URL && image.src.indexOf('blob:') === 0) {\n URL.revokeObjectURL(image.src);\n }\n if (result) {\n // Returns original file if the result is greater than it and without size related options\n if (options.strict && !options.retainExif && result.size > file.size && options.mimeType === file.type && !(options.width > naturalWidth || options.height > naturalHeight || options.minWidth > naturalWidth || options.minHeight > naturalHeight || options.maxWidth < naturalWidth || options.maxHeight < naturalHeight)) {\n result = file;\n } else {\n var date = new Date();\n result.lastModified = date.getTime();\n result.lastModifiedDate = date;\n result.name = file.name;\n\n // Convert the extension to match its type\n if (result.name && result.type !== file.type) {\n result.name = result.name.replace(REGEXP_EXTENSION, imageTypeToExtension(result.type));\n }\n }\n } else {\n // Returns original file if the result is null in some cases.\n result = file;\n }\n this.result = result;\n if (options.success) {\n options.success.call(this, result);\n }\n }\n }, {\n key: \"fail\",\n value: function fail(err) {\n var options = this.options;\n if (options.error) {\n options.error.call(this, err);\n } else {\n throw err;\n }\n }\n }, {\n key: \"abort\",\n value: function abort() {\n if (!this.aborted) {\n this.aborted = true;\n if (this.reader) {\n this.reader.abort();\n } else if (!this.image.complete) {\n this.image.onload = null;\n this.image.onabort();\n } else {\n this.fail(new Error('The compression process has been aborted.'));\n }\n }\n }\n\n /**\n * Get the no conflict compressor class.\n * @returns {Compressor} The compressor class.\n */\n }], [{\n key: \"noConflict\",\n value: function noConflict() {\n window.Compressor = AnotherCompressor;\n return Compressor;\n }\n\n /**\n * Change the default options.\n * @param {Object} options - The new default options.\n */\n }, {\n key: \"setDefaults\",\n value: function setDefaults(options) {\n _extends(DEFAULTS, options);\n }\n }]);\n return Compressor;\n }();\n\n return Compressor;\n\n}));\n","import { Vue, mergeData } from '../../vue';\nimport { NAME_MEDIA_BODY } from '../../constants/components';\nimport { PROP_TYPE_STRING } from '../../constants/props';\nimport { makeProp, makePropsConfigurable } from '../../utils/props'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n tag: makeProp(PROP_TYPE_STRING, 'div')\n}, NAME_MEDIA_BODY); // --- Main component ---\n// @vue/component\n\nexport var BMediaBody = /*#__PURE__*/Vue.extend({\n name: NAME_MEDIA_BODY,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n return h(props.tag, mergeData(data, {\n staticClass: 'media-body'\n }), children);\n }\n});","/*\n * Consistent and stable sort function across JavaScript platforms\n *\n * Inconsistent sorts can cause SSR problems between client and server\n * such as in if sortBy is applied to the data on server side render.\n * Chrome and V8 native sorts are inconsistent/unstable\n *\n * This function uses native sort with fallback to index compare when the a and b\n * compare returns 0\n *\n * Algorithm based on:\n * https://stackoverflow.com/questions/1427608/fast-stable-sorting-algorithm-implementation-in-javascript/45422645#45422645\n *\n * @param {array} array to sort\n * @param {function} sort compare function\n * @return {array}\n */\nexport var stableSort = function stableSort(array, compareFn) {\n // Using `.bind(compareFn)` on the wrapped anonymous function improves\n // performance by avoiding the function call setup. We don't use an arrow\n // function here as it binds `this` to the `stableSort` context rather than\n // the `compareFn` context, which wouldn't give us the performance increase.\n return array.map(function (a, index) {\n return [index, a];\n }).sort(function (a, b) {\n return this(a[1], b[1]) || a[0] - b[0];\n }.bind(compareFn)).map(function (e) {\n return e[1];\n });\n};","'use strict';\nvar $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar setArrayLength = require('../internals/array-set-length');\nvar doesNotExceedSafeInteger = require('../internals/does-not-exceed-safe-integer');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar createProperty = require('../internals/create-property');\nvar deletePropertyOrThrow = require('../internals/delete-property-or-throw');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('splice');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// `Array.prototype.splice` method\n// https://tc39.es/ecma262/#sec-array.prototype.splice\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n splice: function splice(start, deleteCount /* , ...items */) {\n var O = toObject(this);\n var len = lengthOfArrayLike(O);\n var actualStart = toAbsoluteIndex(start, len);\n var argumentsLength = arguments.length;\n var insertCount, actualDeleteCount, A, k, from, to;\n if (argumentsLength === 0) {\n insertCount = actualDeleteCount = 0;\n } else if (argumentsLength === 1) {\n insertCount = 0;\n actualDeleteCount = len - actualStart;\n } else {\n insertCount = argumentsLength - 2;\n actualDeleteCount = min(max(toIntegerOrInfinity(deleteCount), 0), len - actualStart);\n }\n doesNotExceedSafeInteger(len + insertCount - actualDeleteCount);\n A = arraySpeciesCreate(O, actualDeleteCount);\n for (k = 0; k < actualDeleteCount; k++) {\n from = actualStart + k;\n if (from in O) createProperty(A, k, O[from]);\n }\n A.length = actualDeleteCount;\n if (insertCount < actualDeleteCount) {\n for (k = actualStart; k < len - actualDeleteCount; k++) {\n from = k + actualDeleteCount;\n to = k + insertCount;\n if (from in O) O[to] = O[from];\n else deletePropertyOrThrow(O, to);\n }\n for (k = len; k > len - actualDeleteCount + insertCount; k--) deletePropertyOrThrow(O, k - 1);\n } else if (insertCount > actualDeleteCount) {\n for (k = len - actualDeleteCount; k > actualStart; k--) {\n from = k + actualDeleteCount - 1;\n to = k + insertCount - 1;\n if (from in O) O[to] = O[from];\n else deletePropertyOrThrow(O, to);\n }\n }\n for (k = 0; k < insertCount; k++) {\n O[k + actualStart] = arguments[k + 2];\n }\n setArrayLength(O, len - actualDeleteCount + insertCount);\n return A;\n }\n});\n","import { Vue } from '../vue';\nimport { PROP_TYPE_BOOLEAN } from '../constants/props';\nimport { makeProp, makePropsConfigurable } from '../utils/props'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n plain: makeProp(PROP_TYPE_BOOLEAN, false)\n}, 'formControls'); // --- Mixin ---\n// @vue/component\n\nexport var formCustomMixin = Vue.extend({\n props: props,\n computed: {\n custom: function custom() {\n return !this.plain;\n }\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_FORM_FILE } from '../../constants/components';\nimport { HAS_PROMISE_SUPPORT } from '../../constants/env';\nimport { EVENT_NAME_CHANGE, EVENT_OPTIONS_PASSIVE } from '../../constants/events';\nimport { PROP_TYPE_ARRAY, PROP_TYPE_BOOLEAN, PROP_TYPE_FUNCTION, PROP_TYPE_STRING } from '../../constants/props';\nimport { SLOT_NAME_DROP_PLACEHOLDER, SLOT_NAME_FILE_NAME, SLOT_NAME_PLACEHOLDER } from '../../constants/slots';\nimport { RX_EXTENSION, RX_STAR } from '../../constants/regex';\nimport { File } from '../../constants/safe-types';\nimport { from as arrayFrom, flatten, flattenDeep } from '../../utils/array';\nimport { cloneDeep } from '../../utils/clone-deep';\nimport { closest } from '../../utils/dom';\nimport { eventOn, eventOff, stopEvent } from '../../utils/events';\nimport { identity } from '../../utils/identity';\nimport { isArray, isFile, isFunction, isNull, isUndefinedOrNull } from '../../utils/inspect';\nimport { looseEqual } from '../../utils/loose-equal';\nimport { makeModelMixin } from '../../utils/model';\nimport { sortKeys } from '../../utils/object';\nimport { hasPropFunction, makeProp, makePropsConfigurable } from '../../utils/props';\nimport { escapeRegExp } from '../../utils/string';\nimport { warn } from '../../utils/warn';\nimport { attrsMixin } from '../../mixins/attrs';\nimport { formControlMixin, props as formControlProps } from '../../mixins/form-control';\nimport { formCustomMixin, props as formCustomProps } from '../../mixins/form-custom';\nimport { formStateMixin, props as formStateProps } from '../../mixins/form-state';\nimport { idMixin, props as idProps } from '../../mixins/id';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { props as formSizeProps } from '../../mixins/form-size'; // --- Constants ---\n\nvar _makeModelMixin = makeModelMixin('value', {\n type: [PROP_TYPE_ARRAY, File],\n defaultValue: null,\n validator: function validator(value) {\n /* istanbul ignore next */\n if (value === '') {\n warn(VALUE_EMPTY_DEPRECATED_MSG, NAME_FORM_FILE);\n return true;\n }\n\n return isUndefinedOrNull(value) || isValidValue(value);\n }\n}),\n modelMixin = _makeModelMixin.mixin,\n modelProps = _makeModelMixin.props,\n MODEL_PROP_NAME = _makeModelMixin.prop,\n MODEL_EVENT_NAME = _makeModelMixin.event;\n\nvar VALUE_EMPTY_DEPRECATED_MSG = 'Setting \"value\"/\"v-model\" to an empty string for reset is deprecated. Set to \"null\" instead.'; // --- Helper methods ---\n\nvar isValidValue = function isValidValue(value) {\n return isFile(value) || isArray(value) && value.every(function (v) {\n return isValidValue(v);\n });\n}; // Helper method to \"safely\" get the entry from a data-transfer item\n\n/* istanbul ignore next: not supported in JSDOM */\n\n\nvar getDataTransferItemEntry = function getDataTransferItemEntry(item) {\n return isFunction(item.getAsEntry) ? item.getAsEntry() : isFunction(item.webkitGetAsEntry) ? item.webkitGetAsEntry() : null;\n}; // Drop handler function to get all files\n\n/* istanbul ignore next: not supported in JSDOM */\n\n\nvar getAllFileEntries = function getAllFileEntries(dataTransferItemList) {\n var traverseDirectories = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n return Promise.all(arrayFrom(dataTransferItemList).filter(function (item) {\n return item.kind === 'file';\n }).map(function (item) {\n var entry = getDataTransferItemEntry(item);\n\n if (entry) {\n if (entry.isDirectory && traverseDirectories) {\n return getAllFileEntriesInDirectory(entry.createReader(), \"\".concat(entry.name, \"/\"));\n } else if (entry.isFile) {\n return new Promise(function (resolve) {\n entry.file(function (file) {\n file.$path = '';\n resolve(file);\n });\n });\n }\n }\n\n return null;\n }).filter(identity));\n}; // Get all the file entries (recursive) in a directory\n\n/* istanbul ignore next: not supported in JSDOM */\n\n\nvar getAllFileEntriesInDirectory = function getAllFileEntriesInDirectory(directoryReader) {\n var path = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n return new Promise(function (resolve) {\n var entryPromises = [];\n\n var readDirectoryEntries = function readDirectoryEntries() {\n directoryReader.readEntries(function (entries) {\n if (entries.length === 0) {\n resolve(Promise.all(entryPromises).then(function (entries) {\n return flatten(entries);\n }));\n } else {\n entryPromises.push(Promise.all(entries.map(function (entry) {\n if (entry) {\n if (entry.isDirectory) {\n return getAllFileEntriesInDirectory(entry.createReader(), \"\".concat(path).concat(entry.name, \"/\"));\n } else if (entry.isFile) {\n return new Promise(function (resolve) {\n entry.file(function (file) {\n file.$path = \"\".concat(path).concat(file.name);\n resolve(file);\n });\n });\n }\n }\n\n return null;\n }).filter(identity)));\n readDirectoryEntries();\n }\n });\n };\n\n readDirectoryEntries();\n });\n}; // --- Props ---\n\n\nvar props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, idProps), modelProps), formControlProps), formCustomProps), formStateProps), formSizeProps), {}, {\n accept: makeProp(PROP_TYPE_STRING, ''),\n browseText: makeProp(PROP_TYPE_STRING, 'Browse'),\n // Instruct input to capture from camera\n capture: makeProp(PROP_TYPE_BOOLEAN, false),\n directory: makeProp(PROP_TYPE_BOOLEAN, false),\n dropPlaceholder: makeProp(PROP_TYPE_STRING, 'Drop files here'),\n fileNameFormatter: makeProp(PROP_TYPE_FUNCTION),\n multiple: makeProp(PROP_TYPE_BOOLEAN, false),\n noDrop: makeProp(PROP_TYPE_BOOLEAN, false),\n noDropPlaceholder: makeProp(PROP_TYPE_STRING, 'Not allowed'),\n // TODO:\n // Should we deprecate this and only support flat file structures?\n // Nested file structures are only supported when files are dropped\n // A Chromium \"bug\" prevents `webkitEntries` from being populated\n // on the file input's `change` event and is marked as \"WontFix\"\n // Mozilla implemented the behavior the same way as Chromium\n // See: https://bugs.chromium.org/p/chromium/issues/detail?id=138987\n // See: https://bugzilla.mozilla.org/show_bug.cgi?id=1326031\n noTraverse: makeProp(PROP_TYPE_BOOLEAN, false),\n placeholder: makeProp(PROP_TYPE_STRING, 'No file chosen')\n})), NAME_FORM_FILE); // --- Main component ---\n// @vue/component\n\nexport var BFormFile = /*#__PURE__*/Vue.extend({\n name: NAME_FORM_FILE,\n mixins: [attrsMixin, idMixin, modelMixin, normalizeSlotMixin, formControlMixin, formStateMixin, formCustomMixin, normalizeSlotMixin],\n inheritAttrs: false,\n props: props,\n data: function data() {\n return {\n files: [],\n dragging: false,\n // IE 11 doesn't respect setting `event.dataTransfer.dropEffect`,\n // so we handle it ourselves as well\n // https://stackoverflow.com/a/46915971/2744776\n dropAllowed: !this.noDrop,\n hasFocus: false\n };\n },\n computed: {\n // Convert `accept` to an array of `[{ RegExpr, isMime }, ...]`\n computedAccept: function computedAccept() {\n var accept = this.accept;\n accept = (accept || '').trim().split(/[,\\s]+/).filter(identity); // Allow any file type/extension\n\n if (accept.length === 0) {\n return null;\n }\n\n return accept.map(function (extOrType) {\n var prop = 'name';\n var startMatch = '^';\n var endMatch = '$';\n\n if (RX_EXTENSION.test(extOrType)) {\n // File extension /\\.ext$/\n startMatch = '';\n } else {\n // MIME type /^mime\\/.+$/ or /^mime\\/type$/\n prop = 'type';\n\n if (RX_STAR.test(extOrType)) {\n endMatch = '.+$'; // Remove trailing `*`\n\n extOrType = extOrType.slice(0, -1);\n }\n } // Escape all RegExp special chars\n\n\n extOrType = escapeRegExp(extOrType);\n var rx = new RegExp(\"\".concat(startMatch).concat(extOrType).concat(endMatch));\n return {\n rx: rx,\n prop: prop\n };\n });\n },\n computedCapture: function computedCapture() {\n var capture = this.capture;\n return capture === true || capture === '' ? true : capture || null;\n },\n computedAttrs: function computedAttrs() {\n var name = this.name,\n disabled = this.disabled,\n required = this.required,\n form = this.form,\n computedCapture = this.computedCapture,\n accept = this.accept,\n multiple = this.multiple,\n directory = this.directory;\n return _objectSpread(_objectSpread({}, this.bvAttrs), {}, {\n type: 'file',\n id: this.safeId(),\n name: name,\n disabled: disabled,\n required: required,\n form: form || null,\n capture: computedCapture,\n accept: accept || null,\n multiple: multiple,\n directory: directory,\n webkitdirectory: directory,\n 'aria-required': required ? 'true' : null\n });\n },\n computedFileNameFormatter: function computedFileNameFormatter() {\n var fileNameFormatter = this.fileNameFormatter;\n return hasPropFunction(fileNameFormatter) ? fileNameFormatter : this.defaultFileNameFormatter;\n },\n clonedFiles: function clonedFiles() {\n return cloneDeep(this.files);\n },\n flattenedFiles: function flattenedFiles() {\n return flattenDeep(this.files);\n },\n fileNames: function fileNames() {\n return this.flattenedFiles.map(function (file) {\n return file.name;\n });\n },\n labelContent: function labelContent() {\n // Draging active\n\n /* istanbul ignore next: used by drag/drop which can't be tested easily */\n if (this.dragging && !this.noDrop) {\n return (// TODO: Add additional scope with file count, and other not-allowed reasons\n this.normalizeSlot(SLOT_NAME_DROP_PLACEHOLDER, {\n allowed: this.dropAllowed\n }) || (this.dropAllowed ? this.dropPlaceholder : this.$createElement('span', {\n staticClass: 'text-danger'\n }, this.noDropPlaceholder))\n );\n } // No file chosen\n\n\n if (this.files.length === 0) {\n return this.normalizeSlot(SLOT_NAME_PLACEHOLDER) || this.placeholder;\n }\n\n var flattenedFiles = this.flattenedFiles,\n clonedFiles = this.clonedFiles,\n fileNames = this.fileNames,\n computedFileNameFormatter = this.computedFileNameFormatter; // There is a slot for formatting the files/names\n\n if (this.hasNormalizedSlot(SLOT_NAME_FILE_NAME)) {\n return this.normalizeSlot(SLOT_NAME_FILE_NAME, {\n files: flattenedFiles,\n filesTraversed: clonedFiles,\n names: fileNames\n });\n }\n\n return computedFileNameFormatter(flattenedFiles, clonedFiles, fileNames);\n }\n },\n watch: (_watch = {}, _defineProperty(_watch, MODEL_PROP_NAME, function (newValue) {\n if (!newValue || isArray(newValue) && newValue.length === 0) {\n this.reset();\n }\n }), _defineProperty(_watch, \"files\", function files(newValue, oldValue) {\n if (!looseEqual(newValue, oldValue)) {\n var multiple = this.multiple,\n noTraverse = this.noTraverse;\n var files = !multiple || noTraverse ? flattenDeep(newValue) : newValue;\n this.$emit(MODEL_EVENT_NAME, multiple ? files : files[0] || null);\n }\n }), _watch),\n created: function created() {\n // Create private non-reactive props\n this.$_form = null;\n },\n mounted: function mounted() {\n // Listen for form reset events, to reset the file input\n var $form = closest('form', this.$el);\n\n if ($form) {\n eventOn($form, 'reset', this.reset, EVENT_OPTIONS_PASSIVE);\n this.$_form = $form;\n }\n },\n beforeDestroy: function beforeDestroy() {\n var $form = this.$_form;\n\n if ($form) {\n eventOff($form, 'reset', this.reset, EVENT_OPTIONS_PASSIVE);\n }\n },\n methods: {\n isFileValid: function isFileValid(file) {\n if (!file) {\n return false;\n }\n\n var accept = this.computedAccept;\n return accept ? accept.some(function (a) {\n return a.rx.test(file[a.prop]);\n }) : true;\n },\n isFilesArrayValid: function isFilesArrayValid(files) {\n var _this = this;\n\n return isArray(files) ? files.every(function (file) {\n return _this.isFileValid(file);\n }) : this.isFileValid(files);\n },\n defaultFileNameFormatter: function defaultFileNameFormatter(flattenedFiles, clonedFiles, fileNames) {\n return fileNames.join(', ');\n },\n setFiles: function setFiles(files) {\n // Reset the dragging flags\n this.dropAllowed = !this.noDrop;\n this.dragging = false; // Set the selected files\n\n this.files = this.multiple ? this.directory ? files : flattenDeep(files) : flattenDeep(files).slice(0, 1);\n },\n\n /* istanbul ignore next: used by Drag/Drop */\n setInputFiles: function setInputFiles(files) {\n // Try an set the file input files array so that `required`\n // constraint works for dropped files (will fail in IE11 though)\n // To be used only when dropping files\n try {\n // Firefox < 62 workaround exploiting https://bugzilla.mozilla.org/show_bug.cgi?id=1422655\n var dataTransfer = new ClipboardEvent('').clipboardData || new DataTransfer(); // Add flattened files to temp `dataTransfer` object to get a true `FileList` array\n\n flattenDeep(cloneDeep(files)).forEach(function (file) {\n // Make sure to remove the custom `$path` attribute\n delete file.$path;\n dataTransfer.items.add(file);\n });\n this.$refs.input.files = dataTransfer.files;\n } catch (_unused) {}\n },\n reset: function reset() {\n // IE 11 doesn't support setting `$input.value` to `''` or `null`\n // So we use this little extra hack to reset the value, just in case\n // This also appears to work on modern browsers as well\n // Wrapped in try in case IE 11 or mobile Safari crap out\n try {\n var $input = this.$refs.input;\n $input.value = '';\n $input.type = '';\n $input.type = 'file';\n } catch (_unused2) {}\n\n this.files = [];\n },\n handleFiles: function handleFiles(files) {\n var isDrop = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n if (isDrop) {\n // When dropped, make sure to filter files with the internal `accept` logic\n var filteredFiles = files.filter(this.isFilesArrayValid); // Only update files when we have any after filtering\n\n if (filteredFiles.length > 0) {\n this.setFiles(filteredFiles); // Try an set the file input's files array so that `required`\n // constraint works for dropped files (will fail in IE 11 though)\n\n this.setInputFiles(filteredFiles);\n }\n } else {\n // We always update the files from the `change` event\n this.setFiles(files);\n }\n },\n focusHandler: function focusHandler(event) {\n // Bootstrap v4 doesn't have focus styling for custom file input\n // Firefox has a `[type=file]:focus ~ sibling` selector issue,\n // so we add a `focus` class to get around these bugs\n if (this.plain || event.type === 'focusout') {\n this.hasFocus = false;\n } else {\n // Add focus styling for custom file input\n this.hasFocus = true;\n }\n },\n onChange: function onChange(event) {\n var _this2 = this;\n\n var type = event.type,\n target = event.target,\n _event$dataTransfer = event.dataTransfer,\n dataTransfer = _event$dataTransfer === void 0 ? {} : _event$dataTransfer;\n var isDrop = type === 'drop'; // Always emit original event\n\n this.$emit(EVENT_NAME_CHANGE, event);\n var items = arrayFrom(dataTransfer.items || []);\n\n if (HAS_PROMISE_SUPPORT && items.length > 0 && !isNull(getDataTransferItemEntry(items[0]))) {\n // Drop handling for modern browsers\n // Supports nested directory structures in `directory` mode\n\n /* istanbul ignore next: not supported in JSDOM */\n getAllFileEntries(items, this.directory).then(function (files) {\n return _this2.handleFiles(files, isDrop);\n });\n } else {\n // Standard file input handling (native file input change event),\n // or fallback drop mode (IE 11 / Opera) which don't support `directory` mode\n var files = arrayFrom(target.files || dataTransfer.files || []).map(function (file) {\n // Add custom `$path` property to each file (to be consistent with drop mode)\n file.$path = file.webkitRelativePath || '';\n return file;\n });\n this.handleFiles(files, isDrop);\n }\n },\n onDragenter: function onDragenter(event) {\n stopEvent(event);\n this.dragging = true;\n var _event$dataTransfer2 = event.dataTransfer,\n dataTransfer = _event$dataTransfer2 === void 0 ? {} : _event$dataTransfer2; // Early exit when the input or dropping is disabled\n\n if (this.noDrop || this.disabled || !this.dropAllowed) {\n // Show deny feedback\n\n /* istanbul ignore next: not supported in JSDOM */\n dataTransfer.dropEffect = 'none';\n this.dropAllowed = false;\n return;\n }\n /* istanbul ignore next: not supported in JSDOM */\n\n\n dataTransfer.dropEffect = 'copy';\n },\n // Note this event fires repeatedly while the mouse is over the dropzone at\n // intervals in the milliseconds, so avoid doing much processing in here\n onDragover: function onDragover(event) {\n stopEvent(event);\n this.dragging = true;\n var _event$dataTransfer3 = event.dataTransfer,\n dataTransfer = _event$dataTransfer3 === void 0 ? {} : _event$dataTransfer3; // Early exit when the input or dropping is disabled\n\n if (this.noDrop || this.disabled || !this.dropAllowed) {\n // Show deny feedback\n\n /* istanbul ignore next: not supported in JSDOM */\n dataTransfer.dropEffect = 'none';\n this.dropAllowed = false;\n return;\n }\n /* istanbul ignore next: not supported in JSDOM */\n\n\n dataTransfer.dropEffect = 'copy';\n },\n onDragleave: function onDragleave(event) {\n var _this3 = this;\n\n stopEvent(event);\n this.$nextTick(function () {\n _this3.dragging = false; // Reset `dropAllowed` to default\n\n _this3.dropAllowed = !_this3.noDrop;\n });\n },\n // Triggered by a file drop onto drop target\n onDrop: function onDrop(event) {\n var _this4 = this;\n\n stopEvent(event);\n this.dragging = false; // Early exit when the input or dropping is disabled\n\n if (this.noDrop || this.disabled || !this.dropAllowed) {\n this.$nextTick(function () {\n // Reset `dropAllowed` to default\n _this4.dropAllowed = !_this4.noDrop;\n });\n return;\n }\n\n this.onChange(event);\n }\n },\n render: function render(h) {\n var custom = this.custom,\n plain = this.plain,\n size = this.size,\n dragging = this.dragging,\n stateClass = this.stateClass,\n bvAttrs = this.bvAttrs; // Form Input\n\n var $input = h('input', {\n class: [{\n 'form-control-file': plain,\n 'custom-file-input': custom,\n focus: custom && this.hasFocus\n }, stateClass],\n // With IE 11, the input gets in the \"way\" of the drop events,\n // so we move it out of the way by putting it behind the label\n // Bootstrap v4 has it in front\n style: custom ? {\n zIndex: -5\n } : {},\n attrs: this.computedAttrs,\n on: {\n change: this.onChange,\n focusin: this.focusHandler,\n focusout: this.focusHandler,\n reset: this.reset\n },\n ref: 'input'\n });\n\n if (plain) {\n return $input;\n } // Overlay label\n\n\n var $label = h('label', {\n staticClass: 'custom-file-label',\n class: {\n dragging: dragging\n },\n attrs: {\n for: this.safeId(),\n // This goes away in Bootstrap v5\n 'data-browse': this.browseText || null\n }\n }, [h('span', {\n staticClass: 'd-block form-file-text',\n // `pointer-events: none` is used to make sure\n // the drag events fire only on the label\n style: {\n pointerEvents: 'none'\n }\n }, [this.labelContent])]); // Return rendered custom file input\n\n return h('div', {\n staticClass: 'custom-file b-form-file',\n class: [_defineProperty({}, \"b-custom-control-\".concat(size), size), stateClass, bvAttrs.class],\n style: bvAttrs.style,\n attrs: {\n id: this.safeId('_BV_file_outer_')\n },\n on: {\n dragenter: this.onDragenter,\n dragover: this.onDragover,\n dragleave: this.onDragleave,\n drop: this.onDrop\n }\n }, [$input, $label]);\n }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue, mergeData } from '../../vue';\nimport { NAME_INPUT_GROUP_APPEND } from '../../constants/components';\nimport { omit } from '../../utils/object';\nimport { makePropsConfigurable } from '../../utils/props';\nimport { BInputGroupAddon, props as BInputGroupAddonProps } from './input-group-addon'; // --- Props ---\n\nexport var props = makePropsConfigurable(omit(BInputGroupAddonProps, ['append']), NAME_INPUT_GROUP_APPEND); // --- Main component ---\n// @vue/component\n\nexport var BInputGroupAppend = /*#__PURE__*/Vue.extend({\n name: NAME_INPUT_GROUP_APPEND,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n // Pass all our data down to child, and set `append` to `true`\n return h(BInputGroupAddon, mergeData(data, {\n props: _objectSpread(_objectSpread({}, props), {}, {\n append: true\n })\n }), children);\n }\n});","import { Vue, mergeData } from '../../vue';\nimport { NAME_INPUT_GROUP_TEXT } from '../../constants/components';\nimport { PROP_TYPE_STRING } from '../../constants/props';\nimport { makeProp, makePropsConfigurable } from '../../utils/props'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n tag: makeProp(PROP_TYPE_STRING, 'div')\n}, NAME_INPUT_GROUP_TEXT); // --- Main component ---\n// @vue/component\n\nexport var BInputGroupText = /*#__PURE__*/Vue.extend({\n name: NAME_INPUT_GROUP_TEXT,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var props = _ref.props,\n data = _ref.data,\n children = _ref.children;\n return h(props.tag, mergeData(data, {\n staticClass: 'input-group-text'\n }), children);\n }\n});","var _watch;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { COMPONENT_UID_KEY, Vue } from '../../vue';\nimport { NAME_TABS, NAME_TAB_BUTTON_HELPER } from '../../constants/components';\nimport { IS_BROWSER } from '../../constants/env';\nimport { EVENT_NAME_ACTIVATE_TAB, EVENT_NAME_CHANGED, EVENT_NAME_CLICK, EVENT_NAME_FIRST, EVENT_NAME_LAST, EVENT_NAME_NEXT, EVENT_NAME_PREV } from '../../constants/events';\nimport { CODE_DOWN, CODE_END, CODE_HOME, CODE_LEFT, CODE_RIGHT, CODE_SPACE, CODE_UP } from '../../constants/key-codes';\nimport { PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_BOOLEAN, PROP_TYPE_NUMBER, PROP_TYPE_STRING } from '../../constants/props';\nimport { SLOT_NAME_EMPTY, SLOT_NAME_TABS_END, SLOT_NAME_TABS_START, SLOT_NAME_TITLE } from '../../constants/slots';\nimport { arrayIncludes } from '../../utils/array';\nimport { BvEvent } from '../../utils/bv-event.class';\nimport { attemptFocus, selectAll, requestAF } from '../../utils/dom';\nimport { stopEvent } from '../../utils/events';\nimport { identity } from '../../utils/identity';\nimport { isEvent } 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 { omit, sortKeys } from '../../utils/object';\nimport { observeDom } from '../../utils/observe-dom';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { stableSort } from '../../utils/stable-sort';\nimport { idMixin, props as idProps } from '../../mixins/id';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { BLink } from '../link/link';\nimport { BNav, props as BNavProps } from '../nav/nav'; // --- Constants ---\n\nvar _makeModelMixin = makeModelMixin('value', {\n type: PROP_TYPE_NUMBER\n}),\n modelMixin = _makeModelMixin.mixin,\n modelProps = _makeModelMixin.props,\n MODEL_PROP_NAME = _makeModelMixin.prop,\n MODEL_EVENT_NAME = _makeModelMixin.event; // --- Helper methods ---\n// Filter function to filter out disabled tabs\n\n\nvar notDisabled = function notDisabled(tab) {\n return !tab.disabled;\n}; // --- Helper components ---\n// @vue/component\n\n\nvar BVTabButton = /*#__PURE__*/Vue.extend({\n name: NAME_TAB_BUTTON_HELPER,\n inject: {\n bvTabs: {\n default:\n /* istanbul ignore next */\n function _default() {\n return {};\n }\n }\n },\n props: {\n controls: makeProp(PROP_TYPE_STRING),\n id: makeProp(PROP_TYPE_STRING),\n noKeyNav: makeProp(PROP_TYPE_BOOLEAN, false),\n posInSet: makeProp(PROP_TYPE_NUMBER),\n setSize: makeProp(PROP_TYPE_NUMBER),\n // Reference to the child instance\n tab: makeProp(),\n tabIndex: makeProp(PROP_TYPE_NUMBER)\n },\n methods: {\n focus: function focus() {\n attemptFocus(this.$refs.link);\n },\n handleEvt: function handleEvt(event) {\n /* istanbul ignore next */\n if (this.tab.disabled) {\n return;\n }\n\n var type = event.type,\n keyCode = event.keyCode,\n shiftKey = event.shiftKey;\n\n if (type === 'click') {\n stopEvent(event);\n this.$emit(EVENT_NAME_CLICK, event);\n } else if (type === 'keydown' && keyCode === CODE_SPACE) {\n // For ARIA tabs the SPACE key will also trigger a click/select\n // Even with keyboard navigation disabled, SPACE should \"click\" the button\n // See: https://github.com/bootstrap-vue/bootstrap-vue/issues/4323\n stopEvent(event);\n this.$emit(EVENT_NAME_CLICK, event);\n } else if (type === 'keydown' && !this.noKeyNav) {\n // For keyboard navigation\n if ([CODE_UP, CODE_LEFT, CODE_HOME].indexOf(keyCode) !== -1) {\n stopEvent(event);\n\n if (shiftKey || keyCode === CODE_HOME) {\n this.$emit(EVENT_NAME_FIRST, event);\n } else {\n this.$emit(EVENT_NAME_PREV, event);\n }\n } else if ([CODE_DOWN, CODE_RIGHT, CODE_END].indexOf(keyCode) !== -1) {\n stopEvent(event);\n\n if (shiftKey || keyCode === CODE_END) {\n this.$emit(EVENT_NAME_LAST, event);\n } else {\n this.$emit(EVENT_NAME_NEXT, event);\n }\n }\n }\n }\n },\n render: function render(h) {\n var id = this.id,\n tabIndex = this.tabIndex,\n setSize = this.setSize,\n posInSet = this.posInSet,\n controls = this.controls,\n handleEvt = this.handleEvt;\n var _this$tab = this.tab,\n title = _this$tab.title,\n localActive = _this$tab.localActive,\n disabled = _this$tab.disabled,\n titleItemClass = _this$tab.titleItemClass,\n titleLinkClass = _this$tab.titleLinkClass,\n titleLinkAttributes = _this$tab.titleLinkAttributes;\n var $link = h(BLink, {\n staticClass: 'nav-link',\n class: [{\n active: localActive && !disabled,\n disabled: disabled\n }, titleLinkClass, // Apply `activeNavItemClass` styles when the tab is active\n localActive ? this.bvTabs.activeNavItemClass : null],\n props: {\n disabled: disabled\n },\n attrs: _objectSpread(_objectSpread({}, titleLinkAttributes), {}, {\n id: id,\n role: 'tab',\n // Roving tab index when keynav enabled\n tabindex: tabIndex,\n 'aria-selected': localActive && !disabled ? 'true' : 'false',\n 'aria-setsize': setSize,\n 'aria-posinset': posInSet,\n 'aria-controls': controls\n }),\n on: {\n click: handleEvt,\n keydown: handleEvt\n },\n ref: 'link'\n }, [this.tab.normalizeSlot(SLOT_NAME_TITLE) || title]);\n return h('li', {\n staticClass: 'nav-item',\n class: [titleItemClass],\n attrs: {\n role: 'presentation'\n }\n }, [$link]);\n }\n}); // --- Props ---\n\nvar navProps = omit(BNavProps, ['tabs', 'isNavBar', 'cardHeader']);\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, idProps), modelProps), navProps), {}, {\n // Only applied to the currently active ``\n activeNavItemClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n // Only applied to the currently active ``\n // This prop is sniffed by the `` child\n activeTabClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n card: makeProp(PROP_TYPE_BOOLEAN, false),\n contentClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n // Synonym for 'bottom'\n end: makeProp(PROP_TYPE_BOOLEAN, false),\n // This prop is sniffed by the `` child\n lazy: makeProp(PROP_TYPE_BOOLEAN, false),\n navClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n navWrapperClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n noFade: makeProp(PROP_TYPE_BOOLEAN, false),\n noKeyNav: makeProp(PROP_TYPE_BOOLEAN, false),\n noNavStyle: makeProp(PROP_TYPE_BOOLEAN, false),\n tag: makeProp(PROP_TYPE_STRING, 'div')\n})), NAME_TABS); // --- Main component ---\n// @vue/component\n\nexport var BTabs = /*#__PURE__*/Vue.extend({\n name: NAME_TABS,\n mixins: [idMixin, modelMixin, normalizeSlotMixin],\n provide: function provide() {\n return {\n bvTabs: this\n };\n },\n props: props,\n data: function data() {\n return {\n // Index of current tab\n currentTab: toInteger(this[MODEL_PROP_NAME], -1),\n // Array of direct child `` instances, in DOM order\n tabs: [],\n // Array of child instances registered (for triggering reactive updates)\n registeredTabs: []\n };\n },\n computed: {\n fade: function fade() {\n // This computed prop is sniffed by the tab child\n return !this.noFade;\n },\n localNavClass: function localNavClass() {\n var classes = [];\n\n if (this.card && this.vertical) {\n classes.push('card-header', 'h-100', 'border-bottom-0', 'rounded-0');\n }\n\n return [].concat(classes, [this.navClass]);\n }\n },\n watch: (_watch = {}, _defineProperty(_watch, MODEL_PROP_NAME, function (newValue, oldValue) {\n if (newValue !== oldValue) {\n newValue = toInteger(newValue, -1);\n oldValue = toInteger(oldValue, 0);\n var $tab = this.tabs[newValue];\n\n if ($tab && !$tab.disabled) {\n this.activateTab($tab);\n } else {\n // Try next or prev tabs\n if (newValue < oldValue) {\n this.previousTab();\n } else {\n this.nextTab();\n }\n }\n }\n }), _defineProperty(_watch, \"currentTab\", function currentTab(newValue) {\n var index = -1; // Ensure only one tab is active at most\n\n this.tabs.forEach(function ($tab, i) {\n if (i === newValue && !$tab.disabled) {\n $tab.localActive = true;\n index = i;\n } else {\n $tab.localActive = false;\n }\n }); // Update the v-model\n\n this.$emit(MODEL_EVENT_NAME, index);\n }), _defineProperty(_watch, \"tabs\", function tabs(newValue, oldValue) {\n var _this = this;\n\n // We use `_uid` instead of `safeId()`, as the later is changed in a `$nextTick()`\n // if no explicit ID is provided, causing duplicate emits\n if (!looseEqual(newValue.map(function ($tab) {\n return $tab[COMPONENT_UID_KEY];\n }), oldValue.map(function ($tab) {\n return $tab[COMPONENT_UID_KEY];\n }))) {\n // In a `$nextTick()` to ensure `currentTab` has been set first\n this.$nextTick(function () {\n // We emit shallow copies of the new and old arrays of tabs,\n // to prevent users from potentially mutating the internal arrays\n _this.$emit(EVENT_NAME_CHANGED, newValue.slice(), oldValue.slice());\n });\n }\n }), _defineProperty(_watch, \"registeredTabs\", function registeredTabs() {\n this.updateTabs();\n }), _watch),\n created: function created() {\n // Create private non-reactive props\n this.$_observer = null;\n },\n mounted: function mounted() {\n this.setObserver(true);\n },\n beforeDestroy: function beforeDestroy() {\n this.setObserver(false); // Ensure no references to child instances exist\n\n this.tabs = [];\n },\n methods: {\n registerTab: function registerTab($tab) {\n if (!arrayIncludes(this.registeredTabs, $tab)) {\n this.registeredTabs.push($tab);\n }\n },\n unregisterTab: function unregisterTab($tab) {\n this.registeredTabs = this.registeredTabs.slice().filter(function ($t) {\n return $t !== $tab;\n });\n },\n // DOM observer is needed to detect changes in order of tabs\n setObserver: function setObserver() {\n var _this2 = this;\n\n var on = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n this.$_observer && this.$_observer.disconnect();\n this.$_observer = null;\n\n if (on) {\n /* istanbul ignore next: difficult to test mutation observer in JSDOM */\n var handler = function handler() {\n _this2.$nextTick(function () {\n requestAF(function () {\n _this2.updateTabs();\n });\n });\n }; // Watch for changes to `` sub components\n\n\n this.$_observer = observeDom(this.$refs.content, handler, {\n childList: true,\n subtree: false,\n attributes: true,\n attributeFilter: ['id']\n });\n }\n },\n getTabs: function getTabs() {\n var $tabs = this.registeredTabs.filter(function ($tab) {\n return $tab.$children.filter(function ($t) {\n return $t._isTab;\n }).length === 0;\n }); // DOM Order of Tabs\n\n var order = [];\n /* istanbul ignore next: too difficult to test */\n\n if (IS_BROWSER && $tabs.length > 0) {\n // We rely on the DOM when mounted to get the \"true\" order of the `` children\n // `querySelectorAll()` always returns elements in document order, regardless of\n // order specified in the selector\n var selector = $tabs.map(function ($tab) {\n return \"#\".concat($tab.safeId());\n }).join(', ');\n order = selectAll(selector, this.$el).map(function ($el) {\n return $el.id;\n }).filter(identity);\n } // Stable sort keeps the original order if not found in the `order` array,\n // which will be an empty array before mount\n\n\n return stableSort($tabs, function (a, b) {\n return order.indexOf(a.safeId()) - order.indexOf(b.safeId());\n });\n },\n updateTabs: function updateTabs() {\n var $tabs = this.getTabs(); // Find last active non-disabled tab in current tabs\n // We trust tab state over `currentTab`, in case tabs were added/removed/re-ordered\n\n var tabIndex = $tabs.indexOf($tabs.slice().reverse().find(function ($tab) {\n return $tab.localActive && !$tab.disabled;\n })); // Else try setting to `currentTab`\n\n if (tabIndex < 0) {\n var currentTab = this.currentTab;\n\n if (currentTab >= $tabs.length) {\n // Handle last tab being removed, so find the last non-disabled tab\n tabIndex = $tabs.indexOf($tabs.slice().reverse().find(notDisabled));\n } else if ($tabs[currentTab] && !$tabs[currentTab].disabled) {\n // Current tab is not disabled\n tabIndex = currentTab;\n }\n } // Else find first non-disabled tab in current tabs\n\n\n if (tabIndex < 0) {\n tabIndex = $tabs.indexOf($tabs.find(notDisabled));\n } // Ensure only one tab is active at a time\n\n\n $tabs.forEach(function ($tab, index) {\n $tab.localActive = index === tabIndex;\n });\n this.tabs = $tabs;\n this.currentTab = tabIndex;\n },\n // Find a button that controls a tab, given the tab reference\n // Returns the button vm instance\n getButtonForTab: function getButtonForTab($tab) {\n return (this.$refs.buttons || []).find(function ($btn) {\n return $btn.tab === $tab;\n });\n },\n // Force a button to re-render its content, given a `` instance\n // Called by `` on `update()`\n updateButton: function updateButton($tab) {\n var $button = this.getButtonForTab($tab);\n\n if ($button && $button.$forceUpdate) {\n $button.$forceUpdate();\n }\n },\n // Activate a tab given a `` instance\n // Also accessed by ``\n activateTab: function activateTab($tab) {\n var currentTab = this.currentTab,\n $tabs = this.tabs;\n var result = false;\n\n if ($tab) {\n var index = $tabs.indexOf($tab);\n\n if (index !== currentTab && index > -1 && !$tab.disabled) {\n var tabEvent = new BvEvent(EVENT_NAME_ACTIVATE_TAB, {\n cancelable: true,\n vueTarget: this,\n componentId: this.safeId()\n });\n this.$emit(tabEvent.type, index, currentTab, tabEvent);\n\n if (!tabEvent.defaultPrevented) {\n this.currentTab = index;\n result = true;\n }\n }\n } // Couldn't set tab, so ensure v-model is up to date\n\n /* istanbul ignore next: should rarely happen */\n\n\n if (!result && this[MODEL_PROP_NAME] !== currentTab) {\n this.$emit(MODEL_EVENT_NAME, currentTab);\n }\n\n return result;\n },\n // Deactivate a tab given a `` instance\n // Accessed by ``\n deactivateTab: function deactivateTab($tab) {\n if ($tab) {\n // Find first non-disabled tab that isn't the one being deactivated\n // If no tabs are available, then don't deactivate current tab\n return this.activateTab(this.tabs.filter(function ($t) {\n return $t !== $tab;\n }).find(notDisabled));\n }\n /* istanbul ignore next: should never/rarely happen */\n\n\n return false;\n },\n // Focus a tab button given its `` instance\n focusButton: function focusButton($tab) {\n var _this3 = this;\n\n // Wrap in `$nextTick()` to ensure DOM has completed rendering\n this.$nextTick(function () {\n attemptFocus(_this3.getButtonForTab($tab));\n });\n },\n // Emit a click event on a specified `` component instance\n emitTabClick: function emitTabClick(tab, event) {\n if (isEvent(event) && tab && tab.$emit && !tab.disabled) {\n tab.$emit(EVENT_NAME_CLICK, event);\n }\n },\n // Click handler\n clickTab: function clickTab($tab, event) {\n this.activateTab($tab);\n this.emitTabClick($tab, event);\n },\n // Move to first non-disabled tab\n firstTab: function firstTab(focus) {\n var $tab = this.tabs.find(notDisabled);\n\n if (this.activateTab($tab) && focus) {\n this.focusButton($tab);\n this.emitTabClick($tab, focus);\n }\n },\n // Move to previous non-disabled tab\n previousTab: function previousTab(focus) {\n var currentIndex = mathMax(this.currentTab, 0);\n var $tab = this.tabs.slice(0, currentIndex).reverse().find(notDisabled);\n\n if (this.activateTab($tab) && focus) {\n this.focusButton($tab);\n this.emitTabClick($tab, focus);\n }\n },\n // Move to next non-disabled tab\n nextTab: function nextTab(focus) {\n var currentIndex = mathMax(this.currentTab, -1);\n var $tab = this.tabs.slice(currentIndex + 1).find(notDisabled);\n\n if (this.activateTab($tab) && focus) {\n this.focusButton($tab);\n this.emitTabClick($tab, focus);\n }\n },\n // Move to last non-disabled tab\n lastTab: function lastTab(focus) {\n var $tab = this.tabs.slice().reverse().find(notDisabled);\n\n if (this.activateTab($tab) && focus) {\n this.focusButton($tab);\n this.emitTabClick($tab, focus);\n }\n }\n },\n render: function render(h) {\n var _this4 = this;\n\n var align = this.align,\n card = this.card,\n end = this.end,\n fill = this.fill,\n firstTab = this.firstTab,\n justified = this.justified,\n lastTab = this.lastTab,\n nextTab = this.nextTab,\n noKeyNav = this.noKeyNav,\n noNavStyle = this.noNavStyle,\n pills = this.pills,\n previousTab = this.previousTab,\n small = this.small,\n $tabs = this.tabs,\n vertical = this.vertical; // Currently active tab\n\n var $activeTab = $tabs.find(function ($tab) {\n return $tab.localActive && !$tab.disabled;\n }); // Tab button to allow focusing when no active tab found (keynav only)\n\n var $fallbackTab = $tabs.find(function ($tab) {\n return !$tab.disabled;\n }); // For each `` found create the tab buttons\n\n var $buttons = $tabs.map(function ($tab, index) {\n var _on;\n\n var safeId = $tab.safeId; // Ensure at least one tab button is focusable when keynav enabled (if possible)\n\n var tabIndex = null;\n\n if (!noKeyNav) {\n // Buttons are not in tab index unless active, or a fallback tab\n tabIndex = -1;\n\n if ($tab === $activeTab || !$activeTab && $tab === $fallbackTab) {\n // Place tab button in tab sequence\n tabIndex = null;\n }\n }\n\n return h(BVTabButton, {\n props: {\n controls: safeId ? safeId() : null,\n id: $tab.controlledBy || (safeId ? safeId(\"_BV_tab_button_\") : null),\n noKeyNav: noKeyNav,\n posInSet: index + 1,\n setSize: $tabs.length,\n tab: $tab,\n tabIndex: tabIndex\n },\n on: (_on = {}, _defineProperty(_on, EVENT_NAME_CLICK, function (event) {\n _this4.clickTab($tab, event);\n }), _defineProperty(_on, EVENT_NAME_FIRST, firstTab), _defineProperty(_on, EVENT_NAME_PREV, previousTab), _defineProperty(_on, EVENT_NAME_NEXT, nextTab), _defineProperty(_on, EVENT_NAME_LAST, lastTab), _on),\n key: $tab[COMPONENT_UID_KEY] || index,\n ref: 'buttons',\n // Needed to make `this.$refs.buttons` an array\n refInFor: true\n });\n });\n var $nav = h(BNav, {\n class: this.localNavClass,\n attrs: {\n role: 'tablist',\n id: this.safeId('_BV_tab_controls_')\n },\n props: {\n fill: fill,\n justified: justified,\n align: align,\n tabs: !noNavStyle && !pills,\n pills: !noNavStyle && pills,\n vertical: vertical,\n small: small,\n cardHeader: card && !vertical\n },\n ref: 'nav'\n }, [this.normalizeSlot(SLOT_NAME_TABS_START) || h(), $buttons, this.normalizeSlot(SLOT_NAME_TABS_END) || h()]);\n $nav = h('div', {\n class: [{\n 'card-header': card && !vertical && !end,\n 'card-footer': card && !vertical && end,\n 'col-auto': vertical\n }, this.navWrapperClass],\n key: 'bv-tabs-nav'\n }, [$nav]);\n var $children = this.normalizeSlot() || [];\n var $empty = h();\n\n if ($children.length === 0) {\n $empty = h('div', {\n class: ['tab-pane', 'active', {\n 'card-body': card\n }],\n key: 'bv-empty-tab'\n }, this.normalizeSlot(SLOT_NAME_EMPTY));\n }\n\n var $content = h('div', {\n staticClass: 'tab-content',\n class: [{\n col: vertical\n }, this.contentClass],\n attrs: {\n id: this.safeId('_BV_tab_container_')\n },\n key: 'bv-content',\n ref: 'content'\n }, [$children, $empty]); // Render final output\n\n return h(this.tag, {\n staticClass: 'tabs',\n class: {\n row: vertical,\n 'no-gutters': vertical && card\n },\n attrs: {\n id: this.safeId()\n }\n }, [end ? $content : h(), $nav, end ? h() : $content]);\n }\n});"],"sourceRoot":""}