{"version":3,"sources":["webpack:///./node_modules/bootstrap-vue/esm/components/spinner/spinner.js","webpack:///./node_modules/bootstrap-vue/esm/mixins/form-selection.js","webpack:///./node_modules/bootstrap-vue/esm/mixins/form-validity.js","webpack:///./node_modules/bootstrap-vue/esm/mixins/form-text.js","webpack:///./node_modules/bootstrap-vue/esm/utils/css-escape.js","webpack:///./node_modules/bootstrap-vue/esm/components/layout/form-row.js","webpack:///./node_modules/bootstrap-vue/esm/components/form/form-text.js","webpack:///./node_modules/bootstrap-vue/esm/components/form/form-invalid-feedback.js","webpack:///./node_modules/bootstrap-vue/esm/components/form/form-valid-feedback.js","webpack:///./node_modules/bootstrap-vue/esm/components/form-group/form-group.js"],"names":["_defineProperty","obj","key","value","Object","defineProperty","enumerable","configurable","writable","props","label","role","small","tag","type","variant","BSpinner","extend","name","functional","render","h","_ref","_class","data","slots","scopedSlots","$slots","$scopedSlots","$label","staticClass","attrs","class","concat","formSelectionMixin","computed","selectionStart","cache","get","this","$refs","input","set","val","selectionEnd","selectionDirection","methods","select","_this$$refs$input","apply","arguments","setSelectionRange","_this$$refs$input2","setRangeText","_this$$refs$input3","formValidityMixin","validity","validationMessage","willValidate","setCustomValidity","checkValidity","reportValidity","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","push","_objectSpread","target","i","length","source","forEach","getOwnPropertyDescriptors","defineProperties","_makeModelMixin","defaultValue","event","modelMixin","mixin","modelProps","MODEL_PROP_NAME","prop","MODEL_EVENT_NAME","ariaInvalid","autocomplete","debounce","formatter","lazy","lazyFormatter","number","placeholder","plaintext","readonly","trim","formTextMixin","mixins","localValue","vModelValue","modifyValue","computedClass","isRange","isColor","sizeFormClass","stateClass","computedDebounce","hasFormatter","watch","newValue","stringifyValue","modifiedValue","clearDebounce","created","$_inputDebounceTimer","mounted","$on","beforeDestroy","clearTimeout","formatValue","force","undefined","updateValue","_this","doUpdate","$emit","$input","setTimeout","onInput","composing","formattedValue","defaultPrevented","propagation","onChange","onBlur","focus","disabled","$el","blur","escapeChar","firstCharCode","charCodeAt","split","reduce","result","char","index","charCode","toString","BFormRow","children","id","inline","textVariant","BFormText","ariaLive","forceShow","state","tooltip","BFormInvalidFeedback","show","BFormValidFeedback","INPUTS","INPUT_SELECTOR","map","v","join","LEGEND_INTERACTIVE_ELEMENTS","breakpoint","description","feedbackAriaLive","invalidFeedback","labelClass","labelFor","labelSize","labelSrOnly","validFeedback","validated","BFormGroup","ariaDescribedby","contentColProps","getColProps","$props","labelAlignClasses","getAlignClasses","labelColProps","isHorizontal","oldValue","updateAriaDescribedby","$nextTick","prefix","propValue","identity","content","attr","newIds","oldIds","ids","array","indexOf","onLegendClick","tagName","inputs","computedState","normalizeSlot","safeId","isFieldset","labelContent","labelId","labelTag","for","on","click","tabindex","$invalidFeedback","invalidFeedbackContent","invalidFeedbackId","$validFeedback","validFeedbackContent","validFeedbackId","$description","descriptionContent","descriptionId","$content","ref","computedAriaInvalid"],"mappings":"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","file":"js/chunk-ecc47f60.a49d78b9.js","sourcesContent":["function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue, mergeData } from '../../vue';\nimport { NAME_SPINNER } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../constants/props';\nimport { SLOT_NAME_LABEL } from '../../constants/slots';\nimport { normalizeSlot } from '../../utils/normalize-slot';\nimport { makeProp, makePropsConfigurable } from '../../utils/props'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n label: makeProp(PROP_TYPE_STRING),\n role: makeProp(PROP_TYPE_STRING, 'status'),\n small: makeProp(PROP_TYPE_BOOLEAN, false),\n tag: makeProp(PROP_TYPE_STRING, 'span'),\n type: makeProp(PROP_TYPE_STRING, 'border'),\n variant: makeProp(PROP_TYPE_STRING)\n}, NAME_SPINNER); // --- Main component ---\n// @vue/component\n\nexport var BSpinner = /*#__PURE__*/Vue.extend({\n name: NAME_SPINNER,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var _class;\n\n var props = _ref.props,\n data = _ref.data,\n slots = _ref.slots,\n scopedSlots = _ref.scopedSlots;\n var $slots = slots();\n var $scopedSlots = scopedSlots || {};\n var $label = normalizeSlot(SLOT_NAME_LABEL, {}, $scopedSlots, $slots) || props.label;\n\n if ($label) {\n $label = h('span', {\n staticClass: 'sr-only'\n }, $label);\n }\n\n return h(props.tag, mergeData(data, {\n attrs: {\n role: $label ? props.role || 'status' : null,\n 'aria-hidden': $label ? null : 'true'\n },\n class: (_class = {}, _defineProperty(_class, \"spinner-\".concat(props.type), props.type), _defineProperty(_class, \"spinner-\".concat(props.type, \"-sm\"), props.small), _defineProperty(_class, \"text-\".concat(props.variant), props.variant), _class)\n }), [$label || h()]);\n }\n});","import { Vue } from '../vue'; // @vue/component\n\nexport var formSelectionMixin = Vue.extend({\n computed: {\n selectionStart: {\n // Expose selectionStart for formatters, etc\n cache: false,\n\n /* istanbul ignore next */\n get: function get() {\n return this.$refs.input.selectionStart;\n },\n\n /* istanbul ignore next */\n set: function set(val) {\n this.$refs.input.selectionStart = val;\n }\n },\n selectionEnd: {\n // Expose selectionEnd for formatters, etc\n cache: false,\n\n /* istanbul ignore next */\n get: function get() {\n return this.$refs.input.selectionEnd;\n },\n\n /* istanbul ignore next */\n set: function set(val) {\n this.$refs.input.selectionEnd = val;\n }\n },\n selectionDirection: {\n // Expose selectionDirection for formatters, etc\n cache: false,\n\n /* istanbul ignore next */\n get: function get() {\n return this.$refs.input.selectionDirection;\n },\n\n /* istanbul ignore next */\n set: function set(val) {\n this.$refs.input.selectionDirection = val;\n }\n }\n },\n methods: {\n /* istanbul ignore next */\n select: function select() {\n var _this$$refs$input;\n\n // For external handler that may want a select() method\n (_this$$refs$input = this.$refs.input).select.apply(_this$$refs$input, arguments);\n },\n\n /* istanbul ignore next */\n setSelectionRange: function setSelectionRange() {\n var _this$$refs$input2;\n\n // For external handler that may want a setSelectionRange(a,b,c) method\n (_this$$refs$input2 = this.$refs.input).setSelectionRange.apply(_this$$refs$input2, arguments);\n },\n\n /* istanbul ignore next */\n setRangeText: function setRangeText() {\n var _this$$refs$input3;\n\n // For external handler that may want a setRangeText(a,b,c) method\n (_this$$refs$input3 = this.$refs.input).setRangeText.apply(_this$$refs$input3, arguments);\n }\n }\n});","import { Vue } from '../vue'; // @vue/component\n\nexport var formValidityMixin = Vue.extend({\n computed: {\n validity: {\n // Expose validity property\n cache: false,\n\n /* istanbul ignore next */\n get: function get() {\n return this.$refs.input.validity;\n }\n },\n validationMessage: {\n // Expose validationMessage property\n cache: false,\n\n /* istanbul ignore next */\n get: function get() {\n return this.$refs.input.validationMessage;\n }\n },\n willValidate: {\n // Expose willValidate property\n cache: false,\n\n /* istanbul ignore next */\n get: function get() {\n return this.$refs.input.willValidate;\n }\n }\n },\n methods: {\n /* istanbul ignore next */\n setCustomValidity: function setCustomValidity() {\n var _this$$refs$input;\n\n // For external handler that may want a setCustomValidity(...) method\n return (_this$$refs$input = this.$refs.input).setCustomValidity.apply(_this$$refs$input, arguments);\n },\n\n /* istanbul ignore next */\n checkValidity: function checkValidity() {\n var _this$$refs$input2;\n\n // For external handler that may want a checkValidity(...) method\n return (_this$$refs$input2 = this.$refs.input).checkValidity.apply(_this$$refs$input2, arguments);\n },\n\n /* istanbul ignore next */\n reportValidity: function reportValidity() {\n var _this$$refs$input3;\n\n // For external handler that may want a reportValidity(...) method\n return (_this$$refs$input3 = this.$refs.input).reportValidity.apply(_this$$refs$input3, arguments);\n }\n }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Vue } from '../vue';\nimport { EVENT_NAME_BLUR, EVENT_NAME_CHANGE, EVENT_NAME_INPUT, EVENT_NAME_UPDATE, HOOK_EVENT_NAME_BEFORE_DESTROY } from '../constants/events';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_BOOLEAN_STRING, PROP_TYPE_FUNCTION, PROP_TYPE_NUMBER_STRING, PROP_TYPE_STRING } from '../constants/props';\nimport { attemptBlur, attemptFocus } from '../utils/dom';\nimport { stopEvent } from '../utils/events';\nimport { mathMax } from '../utils/math';\nimport { makeModelMixin } from '../utils/model';\nimport { toInteger, toFloat } from '../utils/number';\nimport { sortKeys } from '../utils/object';\nimport { hasPropFunction, makeProp, makePropsConfigurable } from '../utils/props';\nimport { toString } from '../utils/string'; // --- Constants ---\n\nvar _makeModelMixin = makeModelMixin('value', {\n type: PROP_TYPE_NUMBER_STRING,\n defaultValue: '',\n event: EVENT_NAME_UPDATE\n}),\n modelMixin = _makeModelMixin.mixin,\n modelProps = _makeModelMixin.props,\n MODEL_PROP_NAME = _makeModelMixin.prop,\n MODEL_EVENT_NAME = _makeModelMixin.event;\n\nexport { MODEL_PROP_NAME, MODEL_EVENT_NAME }; // --- Props ---\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread({}, modelProps), {}, {\n ariaInvalid: makeProp(PROP_TYPE_BOOLEAN_STRING, false),\n autocomplete: makeProp(PROP_TYPE_STRING),\n // Debounce timeout (in ms). Not applicable with `lazy` prop\n debounce: makeProp(PROP_TYPE_NUMBER_STRING, 0),\n formatter: makeProp(PROP_TYPE_FUNCTION),\n // Only update the `v-model` on blur/change events\n lazy: makeProp(PROP_TYPE_BOOLEAN, false),\n lazyFormatter: makeProp(PROP_TYPE_BOOLEAN, false),\n number: makeProp(PROP_TYPE_BOOLEAN, false),\n placeholder: makeProp(PROP_TYPE_STRING),\n plaintext: makeProp(PROP_TYPE_BOOLEAN, false),\n readonly: makeProp(PROP_TYPE_BOOLEAN, false),\n trim: makeProp(PROP_TYPE_BOOLEAN, false)\n})), 'formTextControls'); // --- Mixin ---\n// @vue/component\n\nexport var formTextMixin = Vue.extend({\n mixins: [modelMixin],\n props: props,\n data: function data() {\n var value = this[MODEL_PROP_NAME];\n return {\n localValue: toString(value),\n vModelValue: this.modifyValue(value)\n };\n },\n computed: {\n computedClass: function computedClass() {\n var plaintext = this.plaintext,\n type = this.type;\n var isRange = type === 'range';\n var isColor = type === 'color';\n return [{\n // Range input needs class `custom-range`\n 'custom-range': isRange,\n // `plaintext` not supported by `type=\"range\"` or `type=\"color\"`\n 'form-control-plaintext': plaintext && !isRange && !isColor,\n // `form-control` not used by `type=\"range\"` or `plaintext`\n // Always used by `type=\"color\"`\n 'form-control': isColor || !plaintext && !isRange\n }, this.sizeFormClass, this.stateClass];\n },\n computedDebounce: function computedDebounce() {\n // Ensure we have a positive number equal to or greater than 0\n return mathMax(toInteger(this.debounce, 0), 0);\n },\n hasFormatter: function hasFormatter() {\n return hasPropFunction(this.formatter);\n }\n },\n watch: _defineProperty({}, MODEL_PROP_NAME, function (newValue) {\n var stringifyValue = toString(newValue);\n var modifiedValue = this.modifyValue(newValue);\n\n if (stringifyValue !== this.localValue || modifiedValue !== this.vModelValue) {\n // Clear any pending debounce timeout, as we are overwriting the user input\n this.clearDebounce(); // Update the local values\n\n this.localValue = stringifyValue;\n this.vModelValue = modifiedValue;\n }\n }),\n created: function created() {\n // Create private non-reactive props\n this.$_inputDebounceTimer = null;\n },\n mounted: function mounted() {\n // Set up destroy handler\n this.$on(HOOK_EVENT_NAME_BEFORE_DESTROY, this.clearDebounce);\n },\n beforeDestroy: function beforeDestroy() {\n this.clearDebounce();\n },\n methods: {\n clearDebounce: function clearDebounce() {\n clearTimeout(this.$_inputDebounceTimer);\n this.$_inputDebounceTimer = null;\n },\n formatValue: function formatValue(value, event) {\n var force = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n value = toString(value);\n\n if (this.hasFormatter && (!this.lazyFormatter || force)) {\n value = this.formatter(value, event);\n }\n\n return value;\n },\n modifyValue: function modifyValue(value) {\n value = toString(value); // Emulate `.trim` modifier behaviour\n\n if (this.trim) {\n value = value.trim();\n } // Emulate `.number` modifier behaviour\n\n\n if (this.number) {\n value = toFloat(value, value);\n }\n\n return value;\n },\n updateValue: function updateValue(value) {\n var _this = this;\n\n var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var lazy = this.lazy;\n\n if (lazy && !force) {\n return;\n } // Make sure to always clear the debounce when `updateValue()`\n // is called, even when the v-model hasn't changed\n\n\n this.clearDebounce(); // Define the shared update logic in a method to be able to use\n // it for immediate and debounced value changes\n\n var doUpdate = function doUpdate() {\n value = _this.modifyValue(value);\n\n if (value !== _this.vModelValue) {\n _this.vModelValue = value;\n\n _this.$emit(MODEL_EVENT_NAME, value);\n } else if (_this.hasFormatter) {\n // When the `vModelValue` hasn't changed but the actual input value\n // is out of sync, make sure to change it to the given one\n // Usually caused by browser autocomplete and how it triggers the\n // change or input event, or depending on the formatter function\n // https://github.com/bootstrap-vue/bootstrap-vue/issues/2657\n // https://github.com/bootstrap-vue/bootstrap-vue/issues/3498\n\n /* istanbul ignore next: hard to test */\n var $input = _this.$refs.input;\n /* istanbul ignore if: hard to test out of sync value */\n\n if ($input && value !== $input.value) {\n $input.value = value;\n }\n }\n }; // Only debounce the value update when a value greater than `0`\n // is set and we are not in lazy mode or this is a forced update\n\n\n var debounce = this.computedDebounce;\n\n if (debounce > 0 && !lazy && !force) {\n this.$_inputDebounceTimer = setTimeout(doUpdate, debounce);\n } else {\n // Immediately update the v-model\n doUpdate();\n }\n },\n onInput: function onInput(event) {\n // `event.target.composing` is set by Vue\n // https://github.com/vuejs/vue/blob/dev/src/platforms/web/runtime/directives/model.js\n // TODO: Is this needed now with the latest Vue?\n\n /* istanbul ignore if: hard to test composition events */\n if (event.target.composing) {\n return;\n }\n\n var value = event.target.value;\n var formattedValue = this.formatValue(value, event); // Exit when the `formatter` function strictly returned `false`\n // or prevented the input event\n\n /* istanbul ignore next */\n\n if (formattedValue === false || event.defaultPrevented) {\n stopEvent(event, {\n propagation: false\n });\n return;\n }\n\n this.localValue = formattedValue;\n this.updateValue(formattedValue);\n this.$emit(EVENT_NAME_INPUT, formattedValue);\n },\n onChange: function onChange(event) {\n var value = event.target.value;\n var formattedValue = this.formatValue(value, event); // Exit when the `formatter` function strictly returned `false`\n // or prevented the input event\n\n /* istanbul ignore next */\n\n if (formattedValue === false || event.defaultPrevented) {\n stopEvent(event, {\n propagation: false\n });\n return;\n }\n\n this.localValue = formattedValue;\n this.updateValue(formattedValue, true);\n this.$emit(EVENT_NAME_CHANGE, formattedValue);\n },\n onBlur: function onBlur(event) {\n // Apply the `localValue` on blur to prevent cursor jumps\n // on mobile browsers (e.g. caused by autocomplete)\n var value = event.target.value;\n var formattedValue = this.formatValue(value, event, true);\n\n if (formattedValue !== false) {\n // We need to use the modified value here to apply the\n // `.trim` and `.number` modifiers properly\n this.localValue = toString(this.modifyValue(formattedValue)); // We pass the formatted value here since the `updateValue` method\n // handles the modifiers itself\n\n this.updateValue(formattedValue, true);\n } // Emit native blur event\n\n\n this.$emit(EVENT_NAME_BLUR, event);\n },\n focus: function focus() {\n // For external handler that may want a focus method\n if (!this.disabled) {\n attemptFocus(this.$el);\n }\n },\n blur: function blur() {\n // For external handler that may want a blur method\n if (!this.disabled) {\n attemptBlur(this.$el);\n }\n }\n }\n});","import { toString } from './string';\n\nvar escapeChar = function escapeChar(value) {\n return '\\\\' + value;\n}; // The `cssEscape()` util is based on this `CSS.escape()` polyfill:\n// https://github.com/mathiasbynens/CSS.escape\n\n\nexport var cssEscape = function cssEscape(value) {\n value = toString(value);\n var length = value.length;\n var firstCharCode = value.charCodeAt(0);\n return value.split('').reduce(function (result, char, index) {\n var charCode = value.charCodeAt(index); // If the character is NULL (U+0000), use (U+FFFD) as replacement\n\n if (charCode === 0x0000) {\n return result + \"\\uFFFD\";\n } // If the character ...\n\n\n if ( // ... is U+007F OR\n charCode === 0x007f || // ... is in the range [\\1-\\1F] (U+0001 to U+001F) OR ...\n charCode >= 0x0001 && charCode <= 0x001f || // ... is the first character and is in the range [0-9] (U+0030 to U+0039) OR ...\n index === 0 && charCode >= 0x0030 && charCode <= 0x0039 || // ... is the second character and is in the range [0-9] (U+0030 to U+0039)\n // and the first character is a `-` (U+002D) ...\n index === 1 && charCode >= 0x0030 && charCode <= 0x0039 && firstCharCode === 0x002d) {\n // ... https://drafts.csswg.org/cssom/#escape-a-character-as-code-point\n return result + escapeChar(\"\".concat(charCode.toString(16), \" \"));\n } // If the character ...\n\n\n if ( // ... is the first character AND ...\n index === 0 && // ... is a `-` (U+002D) AND ...\n charCode === 0x002d && // ... there is no second character ...\n length === 1) {\n // ... use the escaped character\n return result + escapeChar(char);\n } // If the character ...\n\n\n if ( // ... is greater than or equal to U+0080 OR ...\n charCode >= 0x0080 || // ... is `-` (U+002D) OR ...\n charCode === 0x002d || // ... is `_` (U+005F) OR ...\n charCode === 0x005f || // ... is in the range [0-9] (U+0030 to U+0039) OR ...\n charCode >= 0x0030 && charCode <= 0x0039 || // ... is in the range [A-Z] (U+0041 to U+005A) OR ...\n charCode >= 0x0041 && charCode <= 0x005a || // ... is in the range [a-z] (U+0061 to U+007A) ...\n charCode >= 0x0061 && charCode <= 0x007a) {\n // ... use the character itself\n return result + char;\n } // Otherwise use the escaped character\n // See: https://drafts.csswg.org/cssom/#escape-a-character\n\n\n return result + escapeChar(char);\n }, '');\n};","import { Vue, mergeData } from '../../vue';\nimport { NAME_FORM_ROW } 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_FORM_ROW); // --- Main component ---\n// @vue/component\n\nexport var BFormRow = /*#__PURE__*/Vue.extend({\n name: NAME_FORM_ROW,\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: 'form-row'\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_FORM_TEXT } 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 tag: makeProp(PROP_TYPE_STRING, 'small'),\n textVariant: makeProp(PROP_TYPE_STRING, 'muted')\n}, NAME_FORM_TEXT); // --- Main component ---\n// @vue/component\n\nexport var BFormText = /*#__PURE__*/Vue.extend({\n name: NAME_FORM_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 class: _defineProperty({\n 'form-text': !props.inline\n }, \"text-\".concat(props.textVariant), props.textVariant),\n attrs: {\n id: props.id\n }\n }), children);\n }\n});","import { Vue, mergeData } from '../../vue';\nimport { NAME_FORM_INVALID_FEEDBACK } 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 ariaLive: makeProp(PROP_TYPE_STRING),\n forceShow: makeProp(PROP_TYPE_BOOLEAN, false),\n id: makeProp(PROP_TYPE_STRING),\n role: makeProp(PROP_TYPE_STRING),\n // Tri-state prop: `true`, `false`, or `null`\n state: makeProp(PROP_TYPE_BOOLEAN, null),\n tag: makeProp(PROP_TYPE_STRING, 'div'),\n tooltip: makeProp(PROP_TYPE_BOOLEAN, false)\n}, NAME_FORM_INVALID_FEEDBACK); // --- Main component ---\n// @vue/component\n\nexport var BFormInvalidFeedback = /*#__PURE__*/Vue.extend({\n name: NAME_FORM_INVALID_FEEDBACK,\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 tooltip = props.tooltip,\n ariaLive = props.ariaLive;\n var show = props.forceShow === true || props.state === false;\n return h(props.tag, mergeData(data, {\n class: {\n 'd-block': show,\n 'invalid-feedback': !tooltip,\n 'invalid-tooltip': tooltip\n },\n attrs: {\n id: props.id || null,\n role: props.role || null,\n 'aria-live': ariaLive || null,\n 'aria-atomic': ariaLive ? 'true' : null\n }\n }), children);\n }\n});","import { Vue, mergeData } from '../../vue';\nimport { NAME_FORM_VALID_FEEDBACK } 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 ariaLive: makeProp(PROP_TYPE_STRING),\n forceShow: makeProp(PROP_TYPE_BOOLEAN, false),\n id: makeProp(PROP_TYPE_STRING),\n role: makeProp(PROP_TYPE_STRING),\n // Tri-state prop: `true`, `false`, or `null`\n state: makeProp(PROP_TYPE_BOOLEAN, null),\n tag: makeProp(PROP_TYPE_STRING, 'div'),\n tooltip: makeProp(PROP_TYPE_BOOLEAN, false)\n}, NAME_FORM_VALID_FEEDBACK); // --- Main component ---\n// @vue/component\n\nexport var BFormValidFeedback = /*#__PURE__*/Vue.extend({\n name: NAME_FORM_VALID_FEEDBACK,\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 tooltip = props.tooltip,\n ariaLive = props.ariaLive;\n var show = props.forceShow === true || props.state === true;\n return h(props.tag, mergeData(data, {\n class: {\n 'd-block': show,\n 'valid-feedback': !tooltip,\n 'valid-tooltip': tooltip\n },\n attrs: {\n id: props.id || null,\n role: props.role || null,\n 'aria-live': ariaLive || null,\n 'aria-atomic': ariaLive ? 'true' : null\n }\n }), children);\n }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { NAME_FORM_GROUP } from '../../constants/components';\nimport { IS_BROWSER } from '../../constants/env';\nimport { PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_BOOLEAN, PROP_TYPE_BOOLEAN_NUMBER_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { RX_SPACE_SPLIT } from '../../constants/regex';\nimport { SLOT_NAME_DEFAULT, SLOT_NAME_DESCRIPTION, SLOT_NAME_INVALID_FEEDBACK, SLOT_NAME_LABEL, SLOT_NAME_VALID_FEEDBACK } from '../../constants/slots';\nimport { arrayIncludes } from '../../utils/array';\nimport { getBreakpointsUpCached } from '../../utils/config';\nimport { cssEscape } from '../../utils/css-escape';\nimport { select, selectAll, isVisible, setAttr, removeAttr, getAttr, attemptFocus } from '../../utils/dom';\nimport { identity } from '../../utils/identity';\nimport { isBoolean } from '../../utils/inspect';\nimport { toInteger } from '../../utils/number';\nimport { create, keys, sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable, suffixPropName } from '../../utils/props';\nimport { formStateMixin, props as formStateProps } from '../../mixins/form-state';\nimport { idMixin, props as idProps } from '../../mixins/id';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { BCol } from '../layout/col';\nimport { BFormRow } from '../layout/form-row';\nimport { BFormText } from '../form/form-text';\nimport { BFormInvalidFeedback } from '../form/form-invalid-feedback';\nimport { BFormValidFeedback } from '../form/form-valid-feedback'; // --- Constants ---\n\nvar INPUTS = ['input', 'select', 'textarea']; // Selector for finding first input in the form group\n\nvar INPUT_SELECTOR = INPUTS.map(function (v) {\n return \"\".concat(v, \":not([disabled])\");\n}).join(); // A list of interactive elements (tag names) inside ``'s legend\n\nvar LEGEND_INTERACTIVE_ELEMENTS = [].concat(INPUTS, ['a', 'button', 'label']); // --- Props ---\n// Prop generator for lazy generation of props\n\nexport var generateProps = function generateProps() {\n return makePropsConfigurable(sortKeys(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, idProps), formStateProps), getBreakpointsUpCached().reduce(function (props, breakpoint) {\n // i.e. 'content-cols', 'content-cols-sm', 'content-cols-md', ...\n props[suffixPropName(breakpoint, 'contentCols')] = makeProp(PROP_TYPE_BOOLEAN_NUMBER_STRING); // i.e. 'label-align', 'label-align-sm', 'label-align-md', ...\n\n props[suffixPropName(breakpoint, 'labelAlign')] = makeProp(PROP_TYPE_STRING); // i.e. 'label-cols', 'label-cols-sm', 'label-cols-md', ...\n\n props[suffixPropName(breakpoint, 'labelCols')] = makeProp(PROP_TYPE_BOOLEAN_NUMBER_STRING);\n return props;\n }, create(null))), {}, {\n description: makeProp(PROP_TYPE_STRING),\n disabled: makeProp(PROP_TYPE_BOOLEAN, false),\n feedbackAriaLive: makeProp(PROP_TYPE_STRING, 'assertive'),\n invalidFeedback: makeProp(PROP_TYPE_STRING),\n label: makeProp(PROP_TYPE_STRING),\n labelClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n labelFor: makeProp(PROP_TYPE_STRING),\n labelSize: makeProp(PROP_TYPE_STRING),\n labelSrOnly: makeProp(PROP_TYPE_BOOLEAN, false),\n tooltip: makeProp(PROP_TYPE_BOOLEAN, false),\n validFeedback: makeProp(PROP_TYPE_STRING),\n validated: makeProp(PROP_TYPE_BOOLEAN, false)\n })), NAME_FORM_GROUP);\n}; // --- Main component ---\n// We do not use `Vue.extend()` here as that would evaluate the props\n// immediately, which we do not want to happen\n// @vue/component\n\nexport var BFormGroup = {\n name: NAME_FORM_GROUP,\n mixins: [idMixin, formStateMixin, normalizeSlotMixin],\n\n get props() {\n // Allow props to be lazy evaled on first access and\n // then they become a non-getter afterwards\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/get#Smart_self-overwriting_lazy_getters\n delete this.props; // eslint-disable-next-line no-return-assign\n\n return this.props = generateProps();\n },\n\n data: function data() {\n return {\n ariaDescribedby: null\n };\n },\n computed: {\n contentColProps: function contentColProps() {\n return this.getColProps(this.$props, 'content');\n },\n labelAlignClasses: function labelAlignClasses() {\n return this.getAlignClasses(this.$props, 'label');\n },\n labelColProps: function labelColProps() {\n return this.getColProps(this.$props, 'label');\n },\n isHorizontal: function isHorizontal() {\n // Determine if the form group will be rendered horizontal\n // based on the existence of 'content-col' or 'label-col' props\n return keys(this.contentColProps).length > 0 || keys(this.labelColProps).length > 0;\n }\n },\n watch: {\n ariaDescribedby: function ariaDescribedby(newValue, oldValue) {\n if (newValue !== oldValue) {\n this.updateAriaDescribedby(newValue, oldValue);\n }\n }\n },\n mounted: function mounted() {\n var _this = this;\n\n this.$nextTick(function () {\n // Set `aria-describedby` on the input specified by `labelFor`\n // We do this in a `$nextTick()` to ensure the children have finished rendering\n _this.updateAriaDescribedby(_this.ariaDescribedby);\n });\n },\n methods: {\n getAlignClasses: function getAlignClasses(props, prefix) {\n return getBreakpointsUpCached().reduce(function (result, breakpoint) {\n var propValue = props[suffixPropName(breakpoint, \"\".concat(prefix, \"Align\"))] || null;\n\n if (propValue) {\n result.push(['text', breakpoint, propValue].filter(identity).join('-'));\n }\n\n return result;\n }, []);\n },\n getColProps: function getColProps(props, prefix) {\n return getBreakpointsUpCached().reduce(function (result, breakpoint) {\n var propValue = props[suffixPropName(breakpoint, \"\".concat(prefix, \"Cols\"))]; // Handle case where the prop's value is an empty string,\n // which represents `true`\n\n propValue = propValue === '' ? true : propValue || false;\n\n if (!isBoolean(propValue) && propValue !== 'auto') {\n // Convert to column size to number\n propValue = toInteger(propValue, 0); // Ensure column size is greater than `0`\n\n propValue = propValue > 0 ? propValue : false;\n } // Add the prop to the list of props to give to ``\n // If breakpoint is '' (`${prefix}Cols` is `true`), then we use\n // the 'col' prop to make equal width at 'xs'\n\n\n if (propValue) {\n result[breakpoint || (isBoolean(propValue) ? 'col' : 'cols')] = propValue;\n }\n\n return result;\n }, {});\n },\n // Sets the `aria-describedby` attribute on the input if `labelFor` is set\n // Optionally accepts a string of IDs to remove as the second parameter\n // Preserves any `aria-describedby` value(s) user may have on input\n updateAriaDescribedby: function updateAriaDescribedby(newValue, oldValue) {\n var labelFor = this.labelFor;\n\n if (IS_BROWSER && labelFor) {\n // We need to escape `labelFor` since it can be user-provided\n var $input = select(\"#\".concat(cssEscape(labelFor)), this.$refs.content);\n\n if ($input) {\n var attr = 'aria-describedby';\n var newIds = (newValue || '').split(RX_SPACE_SPLIT);\n var oldIds = (oldValue || '').split(RX_SPACE_SPLIT); // Update ID list, preserving any original IDs\n // and ensuring the ID's are unique\n\n var ids = (getAttr($input, attr) || '').split(RX_SPACE_SPLIT).filter(function (id) {\n return !arrayIncludes(oldIds, id);\n }).concat(newIds).filter(function (id, index, ids) {\n return ids.indexOf(id) === index;\n }).filter(identity).join(' ').trim();\n\n if (ids) {\n setAttr($input, attr, ids);\n } else {\n removeAttr($input, attr);\n }\n }\n }\n },\n onLegendClick: function onLegendClick(event) {\n // Don't do anything if `labelFor` is set\n\n /* istanbul ignore next: clicking a label will focus the input, so no need to test */\n if (this.labelFor) {\n return;\n }\n\n var target = event.target;\n var tagName = target ? target.tagName : ''; // If clicked an interactive element inside legend,\n // we just let the default happen\n\n /* istanbul ignore next */\n\n if (LEGEND_INTERACTIVE_ELEMENTS.indexOf(tagName) !== -1) {\n return;\n } // If only a single input, focus it, emulating label behaviour\n\n\n var inputs = selectAll(INPUT_SELECTOR, this.$refs.content).filter(isVisible);\n\n if (inputs.length === 1) {\n attemptFocus(inputs[0]);\n }\n }\n },\n render: function render(h) {\n var state = this.computedState,\n feedbackAriaLive = this.feedbackAriaLive,\n isHorizontal = this.isHorizontal,\n labelFor = this.labelFor,\n normalizeSlot = this.normalizeSlot,\n safeId = this.safeId,\n tooltip = this.tooltip;\n var id = safeId();\n var isFieldset = !labelFor;\n var $label = h();\n var labelContent = normalizeSlot(SLOT_NAME_LABEL) || this.label;\n var labelId = labelContent ? safeId('_BV_label_') : null;\n\n if (labelContent || isHorizontal) {\n var labelSize = this.labelSize,\n labelColProps = this.labelColProps;\n var labelTag = isFieldset ? 'legend' : 'label';\n\n if (this.labelSrOnly) {\n if (labelContent) {\n $label = h(labelTag, {\n class: 'sr-only',\n attrs: {\n id: labelId,\n for: labelFor || null\n }\n }, [labelContent]);\n }\n\n $label = h(isHorizontal ? BCol : 'div', {\n props: isHorizontal ? labelColProps : {}\n }, [$label]);\n } else {\n $label = h(isHorizontal ? BCol : labelTag, {\n on: isFieldset ? {\n click: this.onLegendClick\n } : {},\n props: isHorizontal ? _objectSpread(_objectSpread({}, labelColProps), {}, {\n tag: labelTag\n }) : {},\n attrs: {\n id: labelId,\n for: labelFor || null,\n // We add a `tabindex` to legend so that screen readers\n // will properly read the `aria-labelledby` in IE\n tabindex: isFieldset ? '-1' : null\n },\n class: [// Hide the focus ring on the legend\n isFieldset ? 'bv-no-focus-ring' : '', // When horizontal or if a legend is rendered, add 'col-form-label' class\n // for correct sizing as Bootstrap has inconsistent font styling for\n // legend in non-horizontal form groups\n // See: https://github.com/twbs/bootstrap/issues/27805\n isHorizontal || isFieldset ? 'col-form-label' : '', // Emulate label padding top of `0` on legend when not horizontal\n !isHorizontal && isFieldset ? 'pt-0' : '', // If not horizontal and not a legend, we add 'd-block' class to label\n // so that label-align works\n !isHorizontal && !isFieldset ? 'd-block' : '', labelSize ? \"col-form-label-\".concat(labelSize) : '', this.labelAlignClasses, this.labelClass]\n }, [labelContent]);\n }\n }\n\n var $invalidFeedback = h();\n var invalidFeedbackContent = normalizeSlot(SLOT_NAME_INVALID_FEEDBACK) || this.invalidFeedback;\n var invalidFeedbackId = invalidFeedbackContent ? safeId('_BV_feedback_invalid_') : null;\n\n if (invalidFeedbackContent) {\n $invalidFeedback = h(BFormInvalidFeedback, {\n props: {\n ariaLive: feedbackAriaLive,\n id: invalidFeedbackId,\n role: feedbackAriaLive ? 'alert' : null,\n // If state is explicitly `false`, always show the feedback\n state: state,\n tooltip: tooltip\n },\n attrs: {\n tabindex: invalidFeedbackContent ? '-1' : null\n }\n }, [invalidFeedbackContent]);\n }\n\n var $validFeedback = h();\n var validFeedbackContent = normalizeSlot(SLOT_NAME_VALID_FEEDBACK) || this.validFeedback;\n var validFeedbackId = validFeedbackContent ? safeId('_BV_feedback_valid_') : null;\n\n if (validFeedbackContent) {\n $validFeedback = h(BFormValidFeedback, {\n props: {\n ariaLive: feedbackAriaLive,\n id: validFeedbackId,\n role: feedbackAriaLive ? 'alert' : null,\n // If state is explicitly `true`, always show the feedback\n state: state,\n tooltip: tooltip\n },\n attrs: {\n tabindex: validFeedbackContent ? '-1' : null\n }\n }, [validFeedbackContent]);\n }\n\n var $description = h();\n var descriptionContent = normalizeSlot(SLOT_NAME_DESCRIPTION) || this.description;\n var descriptionId = descriptionContent ? safeId('_BV_description_') : null;\n\n if (descriptionContent) {\n $description = h(BFormText, {\n attrs: {\n id: descriptionId,\n tabindex: '-1'\n }\n }, [descriptionContent]);\n } // Update `ariaDescribedby`\n // Screen readers will read out any content linked to by `aria-describedby`\n // even if the content is hidden with `display: none;`, hence we only include\n // feedback IDs if the form group's state is explicitly valid or invalid\n\n\n var ariaDescribedby = this.ariaDescribedby = [descriptionId, state === false ? invalidFeedbackId : null, state === true ? validFeedbackId : null].filter(identity).join(' ') || null;\n var $content = h(isHorizontal ? BCol : 'div', {\n props: isHorizontal ? this.contentColProps : {},\n ref: 'content'\n }, [normalizeSlot(SLOT_NAME_DEFAULT, {\n ariaDescribedby: ariaDescribedby,\n descriptionId: descriptionId,\n id: id,\n labelId: labelId\n }) || h(), $invalidFeedback, $validFeedback, $description]); // Return it wrapped in a form group\n // Note: Fieldsets do not support adding `row` or `form-row` directly\n // to them due to browser specific render issues, so we move the `form-row`\n // to an inner wrapper div when horizontal and using a fieldset\n\n return h(isFieldset ? 'fieldset' : isHorizontal ? BFormRow : 'div', {\n staticClass: 'form-group',\n class: [{\n 'was-validated': this.validated\n }, this.stateClass],\n attrs: {\n id: id,\n disabled: isFieldset ? this.disabled : null,\n role: isFieldset ? null : 'group',\n 'aria-invalid': this.computedAriaInvalid,\n // Only apply `aria-labelledby` if we are a horizontal fieldset\n // as the legend is no longer a direct child of fieldset\n 'aria-labelledby': isFieldset && isHorizontal ? labelId : null\n }\n }, isHorizontal && isFieldset ? [h(BFormRow, [$label, $content])] : [$label, $content]);\n }\n};"],"sourceRoot":""}