{"version":3,"sources":["webpack:///./node_modules/bootstrap-vue/esm/components/form/form.js","webpack:///./node_modules/bootstrap-vue/esm/components/input-group/input-group-addon.js","webpack:///./src/views/account-setting/Profile.vue?00e3","webpack:///./src/views/account-setting/AccountSetting.vue?4586","webpack:///./src/views/account-setting/AccountSettingGeneral.vue?2689","webpack:///src/views/account-setting/AccountSettingGeneral.vue","webpack:///./src/views/account-setting/AccountSettingGeneral.vue?b485","webpack:///./src/views/account-setting/AccountSettingGeneral.vue","webpack:///./src/views/account-setting/AccountSettingPassword.vue?d83a","webpack:///src/views/account-setting/AccountSettingPassword.vue","webpack:///./src/views/account-setting/AccountSettingPassword.vue?d520","webpack:///./src/views/account-setting/AccountSettingPassword.vue","webpack:///src/views/account-setting/AccountSetting.vue","webpack:///./src/views/account-setting/AccountSetting.vue?de08","webpack:///./src/views/account-setting/AccountSetting.vue","webpack:///src/views/account-setting/Profile.vue","webpack:///./src/views/account-setting/Profile.vue?5a3d","webpack:///./src/views/account-setting/Profile.vue","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/compressorjs/dist/compressor.js","webpack:///./node_modules/bootstrap-vue/esm/utils/stable-sort.js","webpack:///./node_modules/bootstrap-vue/esm/mixins/form-custom.js","webpack:///./src/@core/comp-functions/forms/form-utils.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/vue-ripple-directive/src/ripple.js","webpack:///./node_modules/bootstrap-vue/esm/components/tabs/tabs.js"],"names":["props","id","inline","novalidate","validated","BForm","extend","name","functional","render","h","_ref","data","children","class","attrs","append","isText","tag","BInputGroupAddon","_vm","this","_h","$createElement","_c","_self","staticRenderFns","scopedSlots","_u","key","fn","staticClass","_v","_s","$t","proxy","options","_e","ref","optionsLocal","pictureurl","directives","rawName","value","expression","modifiers","on","$event","$refs","refInputEl","$el","click","inputImageRenderer","model","callback","$$v","profileFile","$set","updateUser","components","BButton","BImg","BFormFile","BFormGroup","BFormInput","BRow","BCol","BCard","BMedia","BMediaAside","BMediaBody","BLink","Ripple","generalData","type","Object","default","picturechanged","previewEl","mounted","JSON","parse","stringify","config","headers","methods","fullname","surname","password","mobile","imgstr","usertype","usertypename","ids","join","active","$http","component","passwordFieldTypeOld","passwordValueOld","passwordToggleIconOld","togglePasswordOld","passwordFieldTypeNew","newPasswordValue","passwordToggleIconNew","togglePasswordNew","passwordFieldTypeRetype","RetypePassword","passwordToggleIconRetype","togglePasswordRetype","changePassword","BInputGroup","BInputGroupAppend","computed","BTabs","BTab","AccountSettingGeneral","AccountSettingPassword","beforeCreate","currentUser","users","get","resultdata","filter","AccountSettings","_defineProperty","obj","defineProperty","enumerable","configurable","writable","computeJustifyContent","concat","align","cardHeader","fill","justified","pills","small","tabs","vertical","BNav","_class","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","sym","getOwnPropertyDescriptor","push","apply","_objectSpread","target","i","arguments","length","source","forEach","getOwnPropertyDescriptors","defineProperties","BInputGroupPrepend","appendHtml","prepend","prependHtml","size","slots","$scopedSlots","$slots","slotScope","$prepend","hasPrependSlot","domProps","html","$append","hasAppendSlot","role","_objectSpread2","_watch","MODEL_PROP_NAME_ACTIVE","MODEL_EVENT_NAME_ACTIVE","mixins","inject","bvTabs","localActive","disabled","_isTab","tabClasses","card","noBody","activeTabClass","controlledBy","buttonId","safeId","computedNoFade","fade","computedLazy","lazy","watch","newValue","oldValue","activate","deactivate","$emit","firstTab","registerTab","updated","updateButton","hasNormalizedSlot","beforeDestroy","unregisterTab","activateTab","deactivateTab","$content","normalizeSlot","mode","noFade","global","factory","module","exports","_classCallCheck","instance","Constructor","TypeError","_defineProperties","descriptor","_createClass","protoProps","staticProps","prototype","_extends","assign","hasOwnProperty","call","createCommonjsModule","basedir","path","require","base","commonjsRequire","undefined","Error","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","slice","decodeURIComponent","charCodeAt","getBlob","toBlob","mozGetAsFile","quality","self","setTimeout","toDataURL","msToBlob","isBlob","toString","DEFAULTS","strict","checkOrientation","maxWidth","Infinity","maxHeight","minWidth","minHeight","width","height","mimeType","convertSize","beforeDraw","drew","success","error","IS_BROWSER","document","WINDOW","Array","toArray","from","REGEXP_IMAGE_TYPE","isImageType","test","imageTypeToExtension","extension","substr","fromCharCode","String","getStringFromCharCode","dataView","start","str","getUint8","btoa","arrayBufferToDataURL","chunks","chunkSize","uint8","subarray","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","ArrayBuffer$1","FileReader","URL","webkitURL","REGEXP_EXTENSION","AnotherCompressor","Compressor","file","image","Image","aborted","result","init","_this","load","url","createObjectURL","reader","onload","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","aspectRatio","is90DegreesRotated","abs","max","_ref3","_ref4","_ref5","floor","min","destX","destY","destWidth","destHeight","_ref6","fillStyle","fillRect","save","translate","PI","scale","drawImage","restore","done","_ref7","revokeObjectURL","date","Date","lastModified","getTime","lastModifiedDate","replace","err","abort","complete","stableSort","array","compareFn","map","a","index","sort","b","bind","plain","formCustomMixin","custom","useInputImageRenderer","inputEl","files","_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","entryPromises","readDirectoryEntries","readEntries","entries","then","accept","browseText","capture","directory","dropPlaceholder","fileNameFormatter","multiple","noDrop","noDropPlaceholder","noTraverse","placeholder","inheritAttrs","dragging","dropAllowed","hasFocus","computedAccept","trim","split","extOrType","startMatch","endMatch","rx","RegExp","computedCapture","computedAttrs","required","form","bvAttrs","webkitdirectory","computedFileNameFormatter","defaultFileNameFormatter","clonedFiles","flattenedFiles","fileNames","labelContent","allowed","filesTraversed","names","reset","created","$_form","$form","isFileValid","some","isFilesArrayValid","setFiles","setInputFiles","dataTransfer","ClipboardEvent","clipboardData","DataTransfer","items","add","input","_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","change","focusin","focusout","$label","for","pointerEvents","dragenter","dragover","dragleave","drop","BInputGroupText","el","binding","transition","setProps","addEventListener","rippler","bg","color","targetBorder","parseInt","getComputedStyle","rect","getBoundingClientRect","left","top","offsetWidth","offsetHeight","dx","clientX","dy","clientY","maxX","maxY","radius","sqrt","border","ripple","rippleContainer","className","marginTop","marginLeft","borderRadius","position","backgroundColor","overflow","storedTargetPosition","clearRipple","parentNode","removeChild","removeEventListener","clearPosition","childNodes","appendChild","borderTopLeftRadius","borderTopRightRadius","borderBottomLeftRadius","borderBottomRightRadius","direction","isNaN","Number","notDisabled","tab","BVTabButton","controls","noKeyNav","posInSet","setSize","tabIndex","link","handleEvt","keyCode","shiftKey","indexOf","_this$tab","title","titleItemClass","titleLinkClass","titleLinkAttributes","$link","activeNavItemClass","tabindex","keydown","navProps","contentClass","end","navClass","navWrapperClass","noNavStyle","provide","currentTab","registeredTabs","localNavClass","classes","$tab","previousTab","nextTab","updateTabs","$_observer","setObserver","disconnect","handler","content","childList","subtree","attributes","attributeFilter","getTabs","$tabs","$children","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-6267f807.c210405e.js","sourcesContent":["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_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});","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('account-settings')],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-tabs',{attrs:{\"vertical\":\"\",\"content-class\":\"col-12 col-md-9 mt-1 mt-md-0\",\"pills\":\"\",\"nav-wrapper-class\":\"col-md-3 col-12\",\"nav-class\":\"nav-left\"}},[_c('b-tab',{attrs:{\"active\":\"\"},scopedSlots:_vm._u([{key:\"title\",fn:function(){return [_c('feather-icon',{staticClass:\"mr-50\",attrs:{\"icon\":\"UserIcon\",\"size\":\"18\"}}),_c('span',{staticClass:\"font-weight-bold\"},[_vm._v(_vm._s(_vm.$t(\"general\")))])]},proxy:true}])},[(_vm.options)?_c('account-setting-general',{attrs:{\"general-data\":_vm.options}}):_vm._e()],1),_c('b-tab',{scopedSlots:_vm._u([{key:\"title\",fn:function(){return [_c('feather-icon',{staticClass:\"mr-50\",attrs:{\"icon\":\"LockIcon\",\"size\":\"18\"}}),_c('span',{staticClass:\"font-weight-bold\"},[_vm._v(_vm._s(_vm.$t(\"changePassword\")))])]},proxy:true}])},[_c('account-setting-password')],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-card',[_c('b-media',{attrs:{\"no-body\":\"\"}},[_c('b-media-aside',[_c('b-link',[_c('b-img',{ref:\"previewEl\",attrs:{\"rounded\":\"\",\"src\":'https://api.optitmr.com/User_Pictures/' + _vm.optionsLocal.pictureurl,\"height\":\"80\"}})],1)],1),_c('b-media-body',{staticClass:\"mt-75 ml-75\"},[_c('b-button',{directives:[{name:\"ripple\",rawName:\"v-ripple.400\",value:('rgba(255, 255, 255, 0.15)'),expression:\"'rgba(255, 255, 255, 0.15)'\",modifiers:{\"400\":true}}],staticClass:\"mb-75 mr-75\",attrs:{\"variant\":\"primary\",\"size\":\"sm\"},on:{\"click\":function($event){return _vm.$refs.refInputEl.$el.click()}}},[_vm._v(\" \"+_vm._s(_vm.$t(\"upload\"))+\" \")]),_c('b-form-file',{ref:\"refInputEl\",attrs:{\"accept\":\".jpg, .png, .gif\",\"hidden\":true,\"plain\":\"\"},on:{\"input\":_vm.inputImageRenderer},model:{value:(_vm.profileFile),callback:function ($$v) {_vm.profileFile=$$v},expression:\"profileFile\"}})],1)],1),_c('b-form',{staticClass:\"mt-2\"},[_c('b-row',[_c('b-col',{attrs:{\"sm\":\"6\"}},[_c('b-form-group',{attrs:{\"label\":_vm.$t('name'),\"label-for\":\"name\"}},[_c('b-form-input',{attrs:{\"placeholder\":_vm.$t('name'),\"name\":\"name\"},model:{value:(_vm.optionsLocal.name),callback:function ($$v) {_vm.$set(_vm.optionsLocal, \"name\", $$v)},expression:\"optionsLocal.name\"}})],1)],1),_c('b-col',{attrs:{\"sm\":\"6\"}},[_c('b-form-group',{attrs:{\"label\":_vm.$t('lastName'),\"label-for\":\"surname\"}},[_c('b-form-input',{attrs:{\"name\":\"surname\",\"placeholder\":_vm.$t('lastName')},model:{value:(_vm.optionsLocal.surname),callback:function ($$v) {_vm.$set(_vm.optionsLocal, \"surname\", $$v)},expression:\"optionsLocal.surname\"}})],1)],1),_c('b-col',{attrs:{\"sm\":\"6\"}},[_c('b-form-group',{attrs:{\"label\":_vm.$t('mobile'),\"label-for\":\"account-mobile\"}},[_c('b-form-input',{attrs:{\"name\":\"mobile\",\"placeholder\":\"+905555555555\"},model:{value:(_vm.optionsLocal.mobile),callback:function ($$v) {_vm.$set(_vm.optionsLocal, \"mobile\", $$v)},expression:\"optionsLocal.mobile\"}})],1)],1),_c('b-col',{attrs:{\"sm\":\"6\"}},[_c('b-form-group',{attrs:{\"label\":_vm.$t('companyName'),\"label-for\":\"account-company\"}},[_c('b-form-input',{attrs:{\"name\":\"company\",\"placeholder\":_vm.$t('companyName')},model:{value:(_vm.optionsLocal.companyname),callback:function ($$v) {_vm.$set(_vm.optionsLocal, \"companyname\", $$v)},expression:\"optionsLocal.companyname\"}})],1)],1),_c('b-col',{attrs:{\"cols\":\"12\"}},[_c('b-button',{directives:[{name:\"ripple\",rawName:\"v-ripple.400\",value:('rgba(255, 255, 255, 0.15)'),expression:\"'rgba(255, 255, 255, 0.15)'\",modifiers:{\"400\":true}}],staticClass:\"mt-2 mr-1\",attrs:{\"variant\":\"primary\"},on:{\"click\":_vm.updateUser}},[_vm._v(\" \"+_vm._s(_vm.$t(\"save\"))+\" \")])],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AccountSettingGeneral.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AccountSettingGeneral.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./AccountSettingGeneral.vue?vue&type=template&id=567da6ca&\"\nimport script from \"./AccountSettingGeneral.vue?vue&type=script&lang=js&\"\nexport * from \"./AccountSettingGeneral.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-card',[_c('b-form',[_c('b-row',[_c('b-col',{attrs:{\"md\":\"6\"}},[_c('b-form-group',{attrs:{\"label\":_vm.$t('oldPassword'),\"label-for\":\"account-old-password\"}},[_c('b-input-group',{staticClass:\"input-group-merge\"},[_c('b-form-input',{attrs:{\"id\":\"account-old-password\",\"name\":\"old-password\",\"type\":_vm.passwordFieldTypeOld,\"placeholder\":_vm.$t('oldPassword')},model:{value:(_vm.passwordValueOld),callback:function ($$v) {_vm.passwordValueOld=$$v},expression:\"passwordValueOld\"}}),_c('b-input-group-append',{attrs:{\"is-text\":\"\"}},[_c('feather-icon',{staticClass:\"cursor-pointer\",attrs:{\"icon\":_vm.passwordToggleIconOld},on:{\"click\":_vm.togglePasswordOld}})],1)],1)],1)],1)],1),_c('b-row',[_c('b-col',{attrs:{\"md\":\"6\"}},[_c('b-form-group',{attrs:{\"label-for\":\"account-new-password\",\"label\":_vm.$t('newPassword')}},[_c('b-input-group',{staticClass:\"input-group-merge\"},[_c('b-form-input',{attrs:{\"id\":\"account-new-password\",\"type\":_vm.passwordFieldTypeNew,\"name\":\"new-password\",\"placeholder\":_vm.$t('newPassword')},model:{value:(_vm.newPasswordValue),callback:function ($$v) {_vm.newPasswordValue=$$v},expression:\"newPasswordValue\"}}),_c('b-input-group-append',{attrs:{\"is-text\":\"\"}},[_c('feather-icon',{staticClass:\"cursor-pointer\",attrs:{\"icon\":_vm.passwordToggleIconNew},on:{\"click\":_vm.togglePasswordNew}})],1)],1)],1)],1),_c('b-col',{attrs:{\"md\":\"6\"}},[_c('b-form-group',{attrs:{\"label-for\":\"account-retype-new-password\",\"label\":_vm.$t('newPasswordAgain')}},[_c('b-input-group',{staticClass:\"input-group-merge\"},[_c('b-form-input',{attrs:{\"id\":\"account-retype-new-password\",\"type\":_vm.passwordFieldTypeRetype,\"name\":\"retype-password\",\"placeholder\":_vm.$t('newPasswordAgain')},model:{value:(_vm.RetypePassword),callback:function ($$v) {_vm.RetypePassword=$$v},expression:\"RetypePassword\"}}),_c('b-input-group-append',{attrs:{\"is-text\":\"\"}},[_c('feather-icon',{staticClass:\"cursor-pointer\",attrs:{\"icon\":_vm.passwordToggleIconRetype},on:{\"click\":_vm.togglePasswordRetype}})],1)],1)],1)],1),_c('b-col',{attrs:{\"cols\":\"12\"}},[_c('b-button',{directives:[{name:\"ripple\",rawName:\"v-ripple.400\",value:('rgba(255, 255, 255, 0.15)'),expression:\"'rgba(255, 255, 255, 0.15)'\",modifiers:{\"400\":true}}],staticClass:\"mt-1 mr-1\",attrs:{\"variant\":\"primary\"},on:{\"click\":_vm.changePassword}},[_vm._v(\" \"+_vm._s(_vm.$t(\"save\"))+\" \")]),_c('b-button',{directives:[{name:\"ripple\",rawName:\"v-ripple.400\",value:('rgba(186, 191, 199, 0.15)'),expression:\"'rgba(186, 191, 199, 0.15)'\",modifiers:{\"400\":true}}],staticClass:\"mt-1\",attrs:{\"type\":\"reset\",\"variant\":\"outline-secondary\"}},[_vm._v(\" \"+_vm._s(_vm.$t(\"reset\"))+\" \")])],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AccountSettingPassword.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AccountSettingPassword.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./AccountSettingPassword.vue?vue&type=template&id=270a1a1c&\"\nimport script from \"./AccountSettingPassword.vue?vue&type=script&lang=js&\"\nexport * from \"./AccountSettingPassword.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AccountSetting.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AccountSetting.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./AccountSetting.vue?vue&type=template&id=c29c919c&\"\nimport script from \"./AccountSetting.vue?vue&type=script&lang=js&\"\nexport * from \"./AccountSetting.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Profile.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Profile.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Profile.vue?vue&type=template&id=293745de&\"\nimport script from \"./Profile.vue?vue&type=script&lang=js&\"\nexport * from \"./Profile.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","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});","/*!\n * Compressor.js v1.0.7\n * https://fengyuanchen.github.io/compressorjs\n *\n * Copyright 2018-present Chen Fengyuan\n * Released under the MIT license\n *\n * Date: 2020-11-28T07:13:17.754Z\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 _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\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, descriptor.key, descriptor);\n }\n }\n\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n }\n\n function _defineProperty(obj, key, value) {\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\n return obj;\n }\n\n function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n }\n\n function ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n }\n\n function _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n }\n\n function createCommonjsModule(fn, basedir, module) {\n \treturn module = {\n \t\tpath: basedir,\n \t\texports: {},\n \t\trequire: function (path, base) {\n \t\t\treturn commonjsRequire(path, (base === undefined || base === null) ? module.path : base);\n \t\t}\n \t}, fn(module, module.exports), module.exports;\n }\n\n function commonjsRequire () {\n \tthrow new Error('Dynamic requires are not currently supported by @rollup/plugin-commonjs');\n }\n\n var canvasToBlob = createCommonjsModule(function (module) {\n if (typeof window === 'undefined') {\n return;\n }\n\n (function (window) {\n\n var CanvasPrototype = window.HTMLCanvasElement && window.HTMLCanvasElement.prototype;\n\n var hasBlobConstructor = window.Blob && function () {\n try {\n return Boolean(new Blob());\n } catch (e) {\n return false;\n }\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\n var BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder || window.MSBlobBuilder;\n var dataURIPattern = /^data:((.*?)(;charset=.*?)?)(;base64)?,/;\n\n var dataURLtoBlob = (hasBlobConstructor || BlobBuilder) && window.atob && window.ArrayBuffer && window.Uint8Array && function (dataURI) {\n var matches, mediaType, isBase64, dataString, byteString, arrayBuffer, intArray, i, bb; // Parse the dataURI components as per RFC 2397\n\n matches = dataURI.match(dataURIPattern);\n\n if (!matches) {\n throw new Error('invalid data URI');\n } // Default to text/plain;charset=US-ASCII\n\n\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\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 } // Write the bytes of the string to an ArrayBuffer:\n\n\n arrayBuffer = new ArrayBuffer(byteString.length);\n intArray = new Uint8Array(arrayBuffer);\n\n for (i = 0; i < byteString.length; i += 1) {\n intArray[i] = byteString.charCodeAt(i);\n } // Write the ArrayBuffer (or ArrayBufferView) to a blob:\n\n\n if (hasBlobConstructor) {\n return new Blob([hasArrayBufferViewSupport ? intArray : arrayBuffer], {\n type: mediaType\n });\n }\n\n bb = new BlobBuilder();\n bb.append(arrayBuffer);\n return bb.getBlob(mediaType);\n };\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\n if ( module.exports) {\n module.exports = dataURLtoBlob;\n } else {\n window.dataURLtoBlob = dataURLtoBlob;\n }\n })(window);\n });\n\n var isBlob = function isBlob(value) {\n if (typeof Blob === 'undefined') {\n return false;\n }\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 /**\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 /**\n * The max width of the output image.\n * @type {number}\n */\n maxWidth: Infinity,\n\n /**\n * The max height of the output image.\n * @type {number}\n */\n maxHeight: Infinity,\n\n /**\n * The min width of the output image.\n * @type {number}\n */\n minWidth: 0,\n\n /**\n * The min height of the output image.\n * @type {number}\n */\n minHeight: 0,\n\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 /**\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 /**\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 /**\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 /**\n * PNG files over this value (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 /**\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 /**\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 /**\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 /**\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 var slice = Array.prototype.slice;\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\n function toArray(value) {\n return Array.from ? Array.from(value) : slice.call(value);\n }\n var REGEXP_IMAGE_TYPE = /^image\\/.+$/;\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\n function isImageType(value) {\n return REGEXP_IMAGE_TYPE.test(value);\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\n function imageTypeToExtension(value) {\n var extension = isImageType(value) ? value.substr(6) : '';\n\n if (extension === 'jpeg') {\n extension = 'jpg';\n }\n\n return \".\".concat(extension);\n }\n var fromCharCode = String.fromCharCode;\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\n function getStringFromCharCode(dataView, start, length) {\n var str = '';\n var i;\n length += start;\n\n for (i = start; i < length; i += 1) {\n str += fromCharCode(dataView.getUint8(i));\n }\n\n return str;\n }\n var btoa = WINDOW.btoa;\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\n function arrayBufferToDataURL(arrayBuffer, mimeType) {\n var chunks = [];\n var chunkSize = 8192;\n var uint8 = new Uint8Array(arrayBuffer);\n\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\n return \"data:\".concat(mimeType, \";base64,\").concat(btoa(chunks.join('')));\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\n function resetAndGetOrientation(arrayBuffer) {\n var dataView = new DataView(arrayBuffer);\n var orientation; // Ignores range error when the image does not have correct Exif information\n\n try {\n var littleEndian;\n var app1Start;\n var ifdStart; // Only handle JPEG image (start by 0xFFD8)\n\n if (dataView.getUint8(0) === 0xFF && dataView.getUint8(1) === 0xD8) {\n var length = dataView.byteLength;\n var offset = 2;\n\n while (offset + 1 < length) {\n if (dataView.getUint8(offset) === 0xFF && dataView.getUint8(offset + 1) === 0xE1) {\n app1Start = offset;\n break;\n }\n\n offset += 1;\n }\n }\n\n if (app1Start) {\n var exifIDCode = app1Start + 4;\n var tiffOffset = app1Start + 10;\n\n if (getStringFromCharCode(dataView, exifIDCode, 4) === 'Exif') {\n var endianness = dataView.getUint16(tiffOffset);\n littleEndian = endianness === 0x4949;\n\n if (littleEndian || endianness === 0x4D4D\n /* bigEndian */\n ) {\n if (dataView.getUint16(tiffOffset + 2, littleEndian) === 0x002A) {\n var firstIFDOffset = dataView.getUint32(tiffOffset + 4, littleEndian);\n\n if (firstIFDOffset >= 0x00000008) {\n ifdStart = tiffOffset + firstIFDOffset;\n }\n }\n }\n }\n }\n\n if (ifdStart) {\n var _length = dataView.getUint16(ifdStart, littleEndian);\n\n var _offset;\n\n var i;\n\n for (i = 0; i < _length; i += 1) {\n _offset = ifdStart + i * 12 + 2;\n\n if (dataView.getUint16(_offset, littleEndian) === 0x0112\n /* Orientation */\n ) {\n // 8 is the offset of the current tag's value\n _offset += 8; // Get the original orientation value\n\n orientation = dataView.getUint16(_offset, littleEndian); // Override the orientation with its default value\n\n dataView.setUint16(_offset, 1, littleEndian);\n break;\n }\n }\n }\n } catch (e) {\n orientation = 1;\n }\n\n return orientation;\n }\n /**\n * Parse Exif Orientation value.\n * @param {number} orientation - The orientation to parse.\n * @returns {Object} The parsed result.\n */\n\n function parseOrientation(orientation) {\n var rotate = 0;\n var scaleX = 1;\n var scaleY = 1;\n\n switch (orientation) {\n // Flip horizontal\n case 2:\n scaleX = -1;\n break;\n // Rotate left 180°\n\n case 3:\n rotate = -180;\n break;\n // Flip vertical\n\n case 4:\n scaleY = -1;\n break;\n // Flip vertical and rotate right 90°\n\n case 5:\n rotate = 90;\n scaleY = -1;\n break;\n // Rotate right 90°\n\n case 6:\n rotate = 90;\n break;\n // Flip horizontal and rotate right 90°\n\n case 7:\n rotate = 90;\n scaleX = -1;\n break;\n // Rotate left 90°\n\n case 8:\n rotate = -90;\n break;\n }\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 * 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\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 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 * Creates a new image compressor.\n * @class\n */\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\n this.file = file;\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\n _createClass(Compressor, [{\n key: \"init\",\n value: function init() {\n var _this = this;\n\n var file = this.file,\n options = this.options;\n\n if (!isBlob(file)) {\n this.fail(new Error('The first argument must be a File or Blob object.'));\n return;\n }\n\n var mimeType = file.type;\n\n if (!isImageType(mimeType)) {\n this.fail(new Error('The first argument must be an image File or Blob object.'));\n return;\n }\n\n if (!URL || !FileReader) {\n this.fail(new Error('The current browser does not support image compression.'));\n return;\n }\n\n if (!ArrayBuffer$1) {\n options.checkOrientation = false;\n }\n\n if (URL && !options.checkOrientation) {\n this.load({\n url: URL.createObjectURL(file)\n });\n } else {\n var reader = new FileReader();\n var checkOrientation = options.checkOrientation && mimeType === 'image/jpeg';\n this.reader = reader;\n\n reader.onload = function (_ref) {\n var target = _ref.target;\n var result = target.result;\n var data = {};\n\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 var orientation = resetAndGetOrientation(result);\n\n if (orientation > 1 || !URL) {\n // Generate a new URL which has the default orientation value\n data.url = arrayBufferToDataURL(result, mimeType);\n\n if (orientation > 1) {\n _extends(data, parseOrientation(orientation));\n }\n } else {\n data.url = URL.createObjectURL(file);\n }\n } else {\n data.url = result;\n }\n\n _this.load(data);\n };\n\n reader.onabort = function () {\n _this.fail(new Error('Aborted to read the image with FileReader.'));\n };\n\n reader.onerror = function () {\n _this.fail(new Error('Failed to read the image with FileReader.'));\n };\n\n reader.onloadend = function () {\n _this.reader = null;\n };\n\n if (checkOrientation) {\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\n var file = this.file,\n image = this.image;\n\n image.onload = function () {\n _this2.draw(_objectSpread2(_objectSpread2({}, data), {}, {\n naturalWidth: image.naturalWidth,\n naturalHeight: image.naturalHeight\n }));\n };\n\n image.onabort = function () {\n _this2.fail(new Error('Aborted to load the image.'));\n };\n\n image.onerror = function () {\n _this2.fail(new Error('Failed to load the image.'));\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\n\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\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\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 aspectRatio = naturalWidth / naturalHeight;\n var is90DegreesRotated = Math.abs(rotate) % 180 === 90;\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 width = Math.max(options.width, 0) || naturalWidth;\n var height = Math.max(options.height, 0) || naturalHeight;\n\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\n if (maxWidth < Infinity && maxHeight < Infinity) {\n if (maxHeight * aspectRatio > maxWidth) {\n maxHeight = maxWidth / aspectRatio;\n } else {\n maxWidth = maxHeight * aspectRatio;\n }\n } else if (maxWidth < Infinity) {\n maxHeight = maxWidth / aspectRatio;\n } else if (maxHeight < Infinity) {\n maxWidth = maxHeight * aspectRatio;\n }\n\n if (minWidth > 0 && minHeight > 0) {\n if (minHeight * aspectRatio > minWidth) {\n minHeight = minWidth / aspectRatio;\n } else {\n minWidth = minHeight * aspectRatio;\n }\n } else if (minWidth > 0) {\n minHeight = minWidth / aspectRatio;\n } else if (minHeight > 0) {\n minWidth = minHeight * aspectRatio;\n }\n\n if (height * aspectRatio > width) {\n height = width / aspectRatio;\n } else {\n width = height * aspectRatio;\n }\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\n if (is90DegreesRotated) {\n var _ref6 = [height, width];\n width = _ref6[0];\n height = _ref6[1];\n }\n\n canvas.width = width;\n canvas.height = height;\n\n if (!isImageType(options.mimeType)) {\n options.mimeType = file.type;\n }\n\n var fillStyle = 'transparent'; // Converts PNG files over the `convertSize` to JPEGs.\n\n if (file.size > options.convertSize && options.mimeType === 'image/png') {\n fillStyle = '#fff';\n options.mimeType = 'image/jpeg';\n } // Override the default fill color (#000, black)\n\n\n context.fillStyle = fillStyle;\n context.fillRect(0, 0, width, height);\n\n if (options.beforeDraw) {\n options.beforeDraw.call(this, context, canvas);\n }\n\n if (this.aborted) {\n return;\n }\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(image, destX, destY, destWidth, destHeight);\n context.restore();\n\n if (options.drew) {\n options.drew.call(this, context, canvas);\n }\n\n if (this.aborted) {\n return;\n }\n\n var done = function done(result) {\n if (!_this3.aborted) {\n _this3.done({\n naturalWidth: naturalWidth,\n naturalHeight: naturalHeight,\n result: result\n });\n }\n };\n\n if (canvas.toBlob) {\n canvas.toBlob(done, options.mimeType, options.quality);\n } else {\n done(canvasToBlob(canvas.toDataURL(options.mimeType, options.quality)));\n }\n }\n }, {\n key: \"done\",\n value: function done(_ref7) {\n var naturalWidth = _ref7.naturalWidth,\n naturalHeight = _ref7.naturalHeight,\n result = _ref7.result;\n var file = this.file,\n image = this.image,\n options = this.options;\n\n if (URL && !options.checkOrientation) {\n URL.revokeObjectURL(image.src);\n }\n\n if (result) {\n // Returns original file if the result is greater than it and without size related options\n if (options.strict && result.size > file.size && options.mimeType === file.type && !(options.width > naturalWidth || options.height > naturalHeight || options.minWidth > naturalWidth || options.minHeight > 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; // Convert the extension to match its type\n\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\n this.result = result;\n\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\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\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 * Get the no conflict compressor class.\n * @returns {Compressor} The compressor class.\n */\n\n }], [{\n key: \"noConflict\",\n value: function noConflict() {\n window.Compressor = AnotherCompressor;\n return Compressor;\n }\n /**\n * Change the default options.\n * @param {Object} options - The new default options.\n */\n\n }, {\n key: \"setDefaults\",\n value: function setDefaults(options) {\n _extends(DEFAULTS, options);\n }\n }]);\n\n return Compressor;\n }();\n\n return Compressor;\n\n})));\n","/*\n * Consistent and stable sort function across JavaScript platforms\n *\n * Inconsistent sorts can cause SSR problems between client and server\n * such as in if sortBy is applied to the data on server side render.\n * Chrome and V8 native sorts are inconsistent/unstable\n *\n * This function uses native sort with fallback to index compare when the a and b\n * compare returns 0\n *\n * Algorithm based on:\n * https://stackoverflow.com/questions/1427608/fast-stable-sorting-algorithm-implementation-in-javascript/45422645#45422645\n *\n * @param {array} array to sort\n * @param {function} sort compare function\n * @return {array}\n */\nexport var stableSort = function stableSort(array, compareFn) {\n // Using `.bind(compareFn)` on the wrapped anonymous function improves\n // performance by avoiding the function call setup. We don't use an arrow\n // function here as it binds `this` to the `stableSort` context rather than\n // the `compareFn` context, which wouldn't give us the performance increase.\n return array.map(function (a, index) {\n return [index, a];\n }).sort(function (a, b) {\n return this(a[1], b[1]) || a[0] - b[0];\n }.bind(compareFn)).map(function (e) {\n return e[1];\n });\n};","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});","import Compressor from \"compressorjs\";\n\nexport const useInputImageRenderer = (inputEl, callback) => {\n const inputImageRenderer = () => {\n const file = inputEl.files[0];\n new Compressor(file, {\n width: 200,\n height: 200,\n quality: 0.2,\n // The compression process is asynchronous,\n // which means you have to access the `result` in the `success` hook function.\n success(result) {\n var reader = new FileReader();\n reader.readAsDataURL(result);\n reader.onload = () => {\n callback(reader.result);\n };\n },\n error(err) {},\n });\n };\n return {\n inputImageRenderer,\n };\n};\n\nexport const _ = null;\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 Ripple = {\n bind: function(el, binding){\n\n // Default values.\n var props = {\n event: 'mousedown',\n transition: 600\n };\n\n setProps(Object.keys(binding.modifiers),props);\n\n el.addEventListener(props.event, function(event) {\n rippler(event, el, binding.value);\n });\n\n var bg = binding.value || Ripple.color || 'rgba(0, 0, 0, 0.35)';\n var zIndex = Ripple.zIndex || '9999';\n\n function rippler(event, el) {\n var target = el;\n // Get border to avoid offsetting on ripple container position\n var targetBorder = parseInt((getComputedStyle(target).borderWidth).replace('px', ''));\n\n // Get necessary variables\n var rect = target.getBoundingClientRect(),\n left = rect.left,\n top = rect.top,\n width = target.offsetWidth,\n height = target.offsetHeight,\n dx = event.clientX - left,\n dy = event.clientY - top,\n maxX = Math.max(dx, width - dx),\n maxY = Math.max(dy, height - dy),\n style = window.getComputedStyle(target),\n radius = Math.sqrt((maxX * maxX) + (maxY * maxY)),\n border = (targetBorder > 0 ) ? targetBorder : 0;\n\n // Create the ripple and its container\n var ripple = document.createElement(\"div\"),\n rippleContainer = document.createElement(\"div\");\n rippleContainer.className = 'ripple-container';\n ripple.className = 'ripple';\n\n //Styles for ripple\n ripple.style.marginTop= '0px';\n ripple.style.marginLeft= '0px';\n ripple.style.width= '1px';\n ripple.style.height= '1px';\n ripple.style.transition= 'all ' + props.transition + 'ms cubic-bezier(0.4, 0, 0.2, 1)';\n ripple.style.borderRadius= '50%';\n ripple.style.pointerEvents= 'none';\n ripple.style.position= 'relative';\n ripple.style.zIndex= zIndex;\n ripple.style.backgroundColor = bg;\n\n //Styles for rippleContainer\n rippleContainer.style.position= 'absolute';\n rippleContainer.style.left = 0 - border + 'px';\n rippleContainer.style.top = 0 - border + 'px';\n rippleContainer.style.height = '0';\n rippleContainer.style.width = '0';\n rippleContainer.style.pointerEvents = 'none';\n rippleContainer.style.overflow = 'hidden';\n\n // Store target position to change it after\n var storedTargetPosition = ((target.style.position).length > 0) ? target.style.position : getComputedStyle(target).position;\n // Change target position to relative to guarantee ripples correct positioning\n if (storedTargetPosition !== 'relative') {\n target.style.position = 'relative';\n }\n\n rippleContainer.appendChild(ripple);\n target.appendChild(rippleContainer);\n\n ripple.style.marginLeft = dx + \"px\";\n ripple.style.marginTop = dy + \"px\";\n\n // No need to set positioning because ripple should be child of target and to it's relative position.\n // rippleContainer.style.left = left + (((window.pageXOffset || document.scrollLeft) - (document.clientLeft || 0)) || 0) + \"px\";\n // rippleContainer.style.top = top + (((window.pageYOffset || document.scrollTop) - (document.clientTop || 0)) || 0) + \"px\";\n rippleContainer.style.width = width + \"px\";\n rippleContainer.style.height = height + \"px\";\n rippleContainer.style.borderTopLeftRadius = style.borderTopLeftRadius;\n rippleContainer.style.borderTopRightRadius = style.borderTopRightRadius;\n rippleContainer.style.borderBottomLeftRadius = style.borderBottomLeftRadius;\n rippleContainer.style.borderBottomRightRadius = style.borderBottomRightRadius;\n\n rippleContainer.style.direction = 'ltr';\n\n setTimeout(function() {\n ripple.style.width = radius * 2 + \"px\";\n ripple.style.height = radius * 2 + \"px\";\n ripple.style.marginLeft = dx - radius + \"px\";\n ripple.style.marginTop = dy - radius + \"px\";\n }, 0);\n\n function clearRipple() {\n setTimeout(function() {\n ripple.style.backgroundColor = \"rgba(0, 0, 0, 0)\";\n }, 250);\n\n // Timeout set to get a smooth removal of the ripple\n setTimeout(function() {\n rippleContainer.parentNode.removeChild(rippleContainer);\n }, 850);\n\n el.removeEventListener('mouseup', clearRipple, false);\n\n // After removing event set position to target to it's original one\n // Timeout it's needed to avoid jerky effect of ripple jumping out parent target\n setTimeout(function () {\n\n var clearPosition = true;\n for(var i = 0; i < target.childNodes.length; i++) {\n if(target.childNodes[i].className === 'ripple-container') {\n clearPosition = false;\n }\n }\n\n if(clearPosition) {\n if(storedTargetPosition !== 'static') {\n target.style.position = storedTargetPosition;\n } else {\n target.style.position = '';\n }\n }\n\n }, props.transition + 250)\n }\n\n if(event.type === 'mousedown') {\n el.addEventListener('mouseup', clearRipple, false);\n } else {\n clearRipple();\n }\n }\n }\n};\n\nfunction setProps(modifiers,props) {\n modifiers.forEach(function(item) {\n if(isNaN(Number(item)))\n props.event = item;\n else\n props.transition = item;\n });\n}\n\nexport default Ripple;","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":""}