{"version":3,"sources":["webpack:///./node_modules/bootstrap-vue/esm/components/tooltip/index.js","webpack:///./node_modules/bootstrap-vue/esm/components/tooltip/helpers/bv-tooltip.js","webpack:///./node_modules/bootstrap-vue/esm/components/tooltip/tooltip.js","webpack:///./node_modules/bootstrap-vue/esm/components/tooltip/helpers/bv-popper.js","webpack:///./node_modules/bootstrap-vue/esm/components/tooltip/helpers/bv-tooltip-template.js"],"names":["TooltipPlugin","components","BTooltip","plugins","VBTooltipPlugin","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","obj","value","configurable","writable","EvtOpts","passive","capture","templateData","title","content","variant","customClass","triggers","placement","fallbackPlacement","container","noFade","boundary","boundaryPadding","offset","delay","arrowPadding","interactive","disabled","id","html","BVTooltip","extend","name","props","data","activeTrigger","hover","click","focus","localShow","computed","templateType","computedId","this","concat","_uid","computedDelay","show","hide","Math","max","parseInt","computedTriggers","Boolean","join","trim","toLowerCase","split","sort","isWithActiveTrigger","trigger","computedTemplateData","watch","newTriggers","oldTriggers","_this","$nextTick","unListen","listen","handleTemplateUpdate","newVal","disable","enable","created","_this2","$_tip","$_hoverTimeout","$_hoverState","$_visibleInterval","$_enabled","$_noop","bind","$parent","$once","$destroy","getTarget","document","body","scopeId","updated","deactivated","forceHide","beforeDestroy","setWhileOpenListeners","clearHoverTimeout","clearVisibilityInterval","destroyTemplate","methods","getTemplate","updateData","_this3","undefined","titleUpdated","prop","fixTitle","createTemplateAndShow","getContainer","Template","$tip","parent","propsData","getPlacementTarget","getBoundary","onTemplateShow","onTemplateShown","onTemplateHide","onTemplateHidden","$on","handleEvent","$mount","appendChild","createElement","hideTemplate","clearActiveTriggers","localPlacementTarget","_unused","removeAriaDescribedby","restoreTitle","getTemplateElement","$el","_this4","dropdownOpen","showEvt","buildEvent","cancelable","emitEvent","defaultPrevented","addAriaDescribedby","force","tip","hideEvt","prevHoverState","leave","replace","getTargetId","isInModal","isDropdown","clearTimeout","clearInterval","desc","_this5","d","type","opts","relatedTarget","componentId","vueTarget","bvEvt","evtName","$root","$emit","_this6","el","setRootListener","_this7","evt","on","method","doHide","doShow","doDisable","doEnable","setModalListener","setDropdownListener","visibleCheck","setOnTouchStartListener","_this8","setInterval","parentNode","_this9","documentElement","children","__vue__","enter","evtTarget","toggle","_this10","setTimeout","_this11","NAME","String","Function","required","Array","default","validator","every","v","Number","noninteractive","localTitle","localContent","templateTitleContent","_show","oldVal","$_bv_toolpop","updateContent","$off","doOpen","doClose","mounted","Component","getComponent","$toolpop","_scopeId","onShow","onShown","onHide","onHidden","onDisabled","onEnabled","setTitle","$scopedSlots","val","setContent","render","h","AttachmentMap","AUTO","TOP","RIGHT","BOTTOM","LEFT","TOPLEFT","TOPRIGHT","RIGHTTOP","RIGHTBOTTOM","BOTTOMLEFT","BOTTOMRIGHT","LEFTTOP","LEFTBOTTOM","OffsetMap","BVPopper","attachment","getAttachment","popperConfig","modifiers","getOffset","flip","behavior","arrow","element","preventOverflow","padding","boundariesElement","onCreate","originalPlacement","popperPlacementChange","onUpdate","$_popper","popperCreate","beforeMount","popperUpdate","popperDestroy","destroyed","removeChild","toUpperCase","$refs","arrowOffset","parseFloat","width","destroy","scheduleUpdate","renderTemplate","appear","beforeEnter","afterEnter","beforeLeave","afterLeave","BVTooltipTemplate","extends","mixins","templateClasses","_ref","templateAttributes","role","tabindex","scopedStyleAttrs","templateListeners","mouseenter","mouseleave","focusin","focusout","$title","domProps","innerHTML","staticClass","class","attrs","ref"],"mappings":"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","file":"js/app~adf558c4.efba80b0.js","sourcesContent":["import { BTooltip } from './tooltip';\nimport { VBTooltipPlugin } from '../../directives/tooltip';\nimport { pluginFactory } from '../../utils/plugins';\nvar TooltipPlugin =\n/*#__PURE__*/\npluginFactory({\n components: {\n BTooltip: BTooltip\n },\n plugins: {\n VBTooltipPlugin: VBTooltipPlugin\n }\n});\nexport { TooltipPlugin, BTooltip };","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// Tooltip \"Class\" (Built as a renderless Vue instance)\n//\n// Handles trigger events, etc.\n// Instantiates template on demand\nimport Vue from '../../../utils/vue';\nimport getScopId from '../../../utils/get-scope-id';\nimport looseEqual from '../../../utils/loose-equal';\nimport noop from '../../../utils/noop';\nimport { arrayIncludes, concat, from as arrayFrom } from '../../../utils/array';\nimport { isElement, isDisabled, isVisible, closest, contains, select, getById, hasClass, getAttr, hasAttr, setAttr, removeAttr, eventOn, eventOff } from '../../../utils/dom';\nimport { isFunction, isNumber, isPlainObject, isString, isUndefined, isUndefinedOrNull } from '../../../utils/inspect';\nimport { keys } from '../../../utils/object';\nimport { warn } from '../../../utils/warn';\nimport { BvEvent } from '../../../utils/bv-event.class';\nimport { BVTooltipTemplate } from './bv-tooltip-template';\nvar NAME = 'BVTooltip'; // Modal container selector for appending tooltip/popover\n\nvar MODAL_SELECTOR = '.modal-content'; // Modal `$root` hidden event\n\nvar MODAL_CLOSE_EVENT = 'bv::modal::hidden'; // For dropdown sniffing\n\nvar DROPDOWN_CLASS = 'dropdown';\nvar DROPDOWN_OPEN_SELECTOR = '.dropdown-menu.show'; // Options for Native Event Listeners (since we never call preventDefault)\n\nvar EvtOpts = {\n passive: true,\n capture: false\n}; // Data specific to popper and template\n// We don't use props, as we need reactivity (we can't pass reactive props)\n\nvar templateData = {\n // Text string or Scoped slot function\n title: '',\n // Text string or Scoped slot function\n content: '',\n // String\n variant: null,\n // String, Array, Object\n customClass: null,\n // String or array of Strings (overwritten by BVPopper)\n triggers: '',\n // String (overwritten by BVPopper)\n placement: 'auto',\n // String or array of strings\n fallbackPlacement: 'flip',\n // Element or Component reference (or function that returns element) of\n // the element that will have the trigger events bound, and is also\n // default element for positioning\n target: null,\n // HTML ID, Element or Component reference\n container: null,\n // 'body'\n // Boolean\n noFade: false,\n // 'scrollParent', 'viewport', 'window', Element, or Component reference\n boundary: 'scrollParent',\n // Tooltip/popover will try and stay away from\n // boundary edge by this many pixels (Number)\n boundaryPadding: 5,\n // Arrow offset (Number)\n offset: 0,\n // Hover/focus delay (Number or Object)\n delay: 0,\n // Arrow of Tooltip/popover will try and stay away from\n // the edge of tooltip/popover edge by this many pixels\n arrowPadding: 6,\n // Interactive state (Boolean)\n interactive: true,\n // Disabled state (Boolean)\n disabled: false,\n // ID to use for tooltip/popover\n id: null,\n // Flag used by directives only, for HTML content\n html: false\n}; // @vue/component\n\nexport var BVTooltip =\n/*#__PURE__*/\nVue.extend({\n name: NAME,\n props: {// None\n },\n data: function data() {\n return _objectSpread({}, templateData, {\n // State management data\n activeTrigger: {\n // manual: false,\n hover: false,\n click: false,\n focus: false\n },\n localShow: false\n });\n },\n computed: {\n templateType: function templateType() {\n // Overwritten by BVPopover\n return 'tooltip';\n },\n computedId: function computedId() {\n return this.id || \"__bv_\".concat(this.templateType, \"_\").concat(this._uid, \"__\");\n },\n computedDelay: function computedDelay() {\n // Normalizes delay into object form\n var delay = {\n show: 0,\n hide: 0\n };\n\n if (isPlainObject(this.delay)) {\n delay.show = Math.max(parseInt(this.delay.show, 10) || 0, 0);\n delay.hide = Math.max(parseInt(this.delay.hide, 10) || 0, 0);\n } else if (isNumber(this.delay) || isString(this.delay)) {\n delay.show = delay.hide = Math.max(parseInt(this.delay, 10) || 0, 0);\n }\n\n return delay;\n },\n computedTriggers: function computedTriggers() {\n // Returns the triggers in sorted array form\n // TODO: Switch this to object form for easier lookup\n return concat(this.triggers).filter(Boolean).join(' ').trim().toLowerCase().split(/\\s+/).sort();\n },\n isWithActiveTrigger: function isWithActiveTrigger() {\n for (var trigger in this.activeTrigger) {\n if (this.activeTrigger[trigger]) {\n return true;\n }\n }\n\n return false;\n },\n computedTemplateData: function computedTemplateData() {\n return {\n title: this.title,\n content: this.content,\n variant: this.variant,\n customClass: this.customClass,\n noFade: this.noFade,\n interactive: this.interactive\n };\n }\n },\n watch: {\n computedTriggers: function computedTriggers(newTriggers, oldTriggers) {\n var _this = this;\n\n // Triggers have changed, so re-register them\n\n /* istanbul ignore next */\n if (!looseEqual(newTriggers, oldTriggers)) {\n this.$nextTick(function () {\n // Disable trigger listeners\n _this.unListen(); // Clear any active triggers that are no longer in the list of triggers\n\n\n oldTriggers.forEach(function (trigger) {\n if (!arrayIncludes(newTriggers, trigger)) {\n if (_this.activeTrigger[trigger]) {\n _this.activeTrigger[trigger] = false;\n }\n }\n }); // Re-enable the trigger listeners\n\n _this.listen();\n });\n }\n },\n computedTemplateData: function computedTemplateData() {\n // If any of the while open reactive \"props\" change,\n // ensure that the template updates accordingly\n this.handleTemplateUpdate();\n },\n disabled: function disabled(newVal) {\n newVal ? this.disable() : this.enable();\n }\n },\n created: function created() {\n var _this2 = this;\n\n // Create non-reactive properties\n this.$_tip = null;\n this.$_hoverTimeout = null;\n this.$_hoverState = '';\n this.$_visibleInterval = null;\n this.$_enabled = !this.disabled;\n this.$_noop = noop.bind(this); // Destroy ourselves when the parent is destroyed\n\n if (this.$parent) {\n this.$parent.$once('hook:beforeDestroy', this.$destroy);\n }\n\n this.$nextTick(function () {\n var target = _this2.getTarget();\n\n if (target && contains(document.body, target)) {\n // Copy the parent's scoped style attribute\n _this2.scopeId = getScopId(_this2.$parent); // Set up all trigger handlers and listeners\n\n _this2.listen();\n } else {\n /* istanbul ignore next */\n warn('Unable to find target element in document.', _this2.templateType);\n }\n });\n },\n updated: function updated()\n /* istanbul ignore next */\n {\n // Usually called when the slots/data changes\n this.$nextTick(this.handleTemplateUpdate);\n },\n deactivated: function deactivated()\n /* istanbul ignore next */\n {\n // In a keepalive that has been deactivated, so hide\n // the tooltip/popover if it is showing\n this.forceHide();\n },\n beforeDestroy: function beforeDestroy()\n /* istanbul ignore next */\n {\n // Remove all handler/listeners\n this.unListen();\n this.setWhileOpenListeners(false); // Clear any timeouts/intervals\n\n this.clearHoverTimeout();\n this.clearVisibilityInterval(); // Destroy the template\n\n this.destroyTemplate();\n },\n methods: {\n // --- Methods for creating and destroying the template ---\n getTemplate: function getTemplate() {\n // Overridden by BVPopover\n return BVTooltipTemplate;\n },\n updateData: function updateData() {\n var _this3 = this;\n\n var data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n // Method for updating popper/template data\n // We only update data if it exists, and has not changed\n var titleUpdated = false;\n keys(templateData).forEach(function (prop) {\n if (!isUndefined(data[prop]) && _this3[prop] !== data[prop]) {\n _this3[prop] = data[prop];\n\n if (prop === 'title') {\n titleUpdated = true;\n }\n }\n });\n\n if (titleUpdated && this.localShow) {\n // If the title has updated, we may need to handle the title\n // attribute on the trigger target. We only do this while the\n // template is open\n this.fixTitle();\n }\n },\n createTemplateAndShow: function createTemplateAndShow() {\n // Creates the template instance and show it\n var container = this.getContainer();\n var Template = this.getTemplate();\n var $tip = this.$_tip = new Template({\n parent: this,\n // The following is not reactive to changes in the props data\n propsData: {\n // These values cannot be changed while template is showing\n id: this.computedId,\n html: this.html,\n placement: this.placement,\n fallbackPlacement: this.fallbackPlacement,\n target: this.getPlacementTarget(),\n boundary: this.getBoundary(),\n // Ensure the following are integers\n offset: parseInt(this.offset, 10) || 0,\n arrowPadding: parseInt(this.arrowPadding, 10) || 0,\n boundaryPadding: parseInt(this.boundaryPadding, 10) || 0\n }\n }); // We set the initial reactive data (values that can be changed while open)\n\n this.handleTemplateUpdate(); // Template transition phase events (handled once only)\n // When the template has mounted, but not visibly shown yet\n\n $tip.$once('show', this.onTemplateShow); // When the template has completed showing\n\n $tip.$once('shown', this.onTemplateShown); // When the template has started to hide\n\n $tip.$once('hide', this.onTemplateHide); // When the template has completed hiding\n\n $tip.$once('hidden', this.onTemplateHidden); // When the template gets destroyed for any reason\n\n $tip.$once('hook:destroyed', this.destroyTemplate); // Convenience events from template\n // To save us from manually adding/removing DOM\n // listeners to tip element when it is open\n\n $tip.$on('focusin', this.handleEvent);\n $tip.$on('focusout', this.handleEvent);\n $tip.$on('mouseenter', this.handleEvent);\n $tip.$on('mouseleave', this.handleEvent); // Mount (which triggers the `show`)\n\n $tip.$mount(container.appendChild(document.createElement('div'))); // Template will automatically remove its markup from DOM when hidden\n },\n hideTemplate: function hideTemplate() {\n // Trigger the template to start hiding\n // The template will emit the `hide` event after this and\n // then emit the `hidden` event once it is fully hidden\n // The `hook:destroyed` will also be called (safety measure)\n this.$_tip && this.$_tip.hide(); // Clear out any stragging active triggers\n\n this.clearActiveTriggers(); // Reset the hover state\n\n this.$_hoverState = '';\n },\n // Destroy the template instance and reset state\n destroyTemplate: function destroyTemplate() {\n this.setWhileOpenListeners(false);\n this.clearHoverTimeout();\n this.$_hoverState = '';\n this.clearActiveTriggers();\n this.localPlacementTarget = null;\n\n try {\n this.$_tip && this.$_tip.$destroy();\n } catch (_unused) {}\n\n this.$_tip = null;\n this.removeAriaDescribedby();\n this.restoreTitle();\n this.localShow = false;\n },\n getTemplateElement: function getTemplateElement() {\n return this.$_tip ? this.$_tip.$el : null;\n },\n handleTemplateUpdate: function handleTemplateUpdate() {\n var _this4 = this;\n\n // Update our template title/content \"props\"\n // So that the template updates accordingly\n var $tip = this.$_tip;\n\n if ($tip) {\n var props = ['title', 'content', 'variant', 'customClass', 'noFade', 'interactive']; // Only update the values if they have changed\n\n props.forEach(function (prop) {\n if ($tip[prop] !== _this4[prop]) {\n $tip[prop] = _this4[prop];\n }\n });\n }\n },\n // --- Show/Hide handlers ---\n // Show the tooltip\n show: function show() {\n var target = this.getTarget();\n\n if (!target || !contains(document.body, target) || !isVisible(target) || this.dropdownOpen() || (isUndefinedOrNull(this.title) || this.title === '') && (isUndefinedOrNull(this.content) || this.content === '')) {\n // If trigger element isn't in the DOM or is not visible, or\n // is on an open dropdown toggle, or has no content, then\n // we exit without showing\n return;\n } // If tip already exists, exit early\n\n\n if (this.$_tip || this.localShow) {\n /* istanbul ignore next */\n return;\n } // In the process of showing\n\n\n this.localShow = true; // Create a cancelable BvEvent\n\n var showEvt = this.buildEvent('show', {\n cancelable: true\n });\n this.emitEvent(showEvt); // Don't show if event cancelled\n\n /* istanbul ignore next: ignore for now */\n\n if (showEvt.defaultPrevented) {\n // Destroy the template (if for some reason it was created)\n\n /* istanbul ignore next */\n this.destroyTemplate();\n /* istanbul ignore next */\n\n return;\n } // Fix the title attribute on target\n\n\n this.fixTitle(); // Set aria-describedby on target\n\n this.addAriaDescribedby(); // Create and show the tooltip\n\n this.createTemplateAndShow();\n },\n hide: function hide() {\n var force = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n // Hide the tooltip\n var tip = this.getTemplateElement();\n\n if (!tip || !this.localShow) {\n /* istanbul ignore next */\n this.restoreTitle();\n /* istanbul ignore next */\n\n return;\n } // Emit cancelable BvEvent 'hide'\n // We disable cancelling if `force` is true\n\n\n var hideEvt = this.buildEvent('hide', {\n cancelable: !force\n });\n this.emitEvent(hideEvt);\n /* istanbul ignore next: ignore for now */\n\n if (hideEvt.defaultPrevented) {\n // Don't hide if event cancelled\n\n /* istanbul ignore next */\n return;\n } // Tell the template to hide\n\n\n this.hideTemplate();\n },\n forceHide: function forceHide() {\n // Forcefully hides/destroys the template, regardless of any active triggers\n var tip = this.getTemplateElement();\n\n if (!tip || !this.localShow) {\n /* istanbul ignore next */\n return;\n } // Disable while open listeners/watchers\n // This is also done in the template `hide` evt handler\n\n\n this.setWhileOpenListeners(false); // Clear any hover enter/leave event\n\n this.clearHoverTimeout();\n this.$_hoverState = '';\n this.clearActiveTriggers(); // Disable the fade animation on the template\n\n if (this.$_tip) {\n this.$_tip.noFade = true;\n } // Hide the tip (with force = true)\n\n\n this.hide(true);\n },\n enable: function enable() {\n this.$_enabled = true; // Create a non-cancelable BvEvent\n\n this.emitEvent(this.buildEvent('enabled'));\n },\n disable: function disable() {\n this.$_enabled = false; // Create a non-cancelable BvEvent\n\n this.emitEvent(this.buildEvent('disabled'));\n },\n // --- Handlers for template events ---\n // When template is inserted into DOM, but not yet shown\n onTemplateShow: function onTemplateShow() {\n // Enable while open listeners/watchers\n this.setWhileOpenListeners(true);\n },\n // When template show transition completes\n onTemplateShown: function onTemplateShown() {\n var prevHoverState = this.$_hoverState;\n this.$_hoverState = '';\n\n if (prevHoverState === 'out') {\n this.leave(null);\n } // Emit a non-cancelable BvEvent 'shown'\n\n\n this.emitEvent(this.buildEvent('shown'));\n },\n // When template is starting to hide\n onTemplateHide: function onTemplateHide() {\n // Disable while open listeners/watchers\n this.setWhileOpenListeners(false);\n },\n // When template has completed closing (just before it self destructs)\n onTemplateHidden: function onTemplateHidden() {\n // Destroy the template\n this.destroyTemplate(); // Emit a non-cancelable BvEvent 'shown'\n\n this.emitEvent(this.buildEvent('hidden', {}));\n },\n // --- Utility methods ---\n getTarget: function getTarget() {\n // Handle case where target may be a component ref\n var target = this.target ? this.target.$el || this.target : null; // If an ID\n\n target = isString(target) ? getById(target.replace(/^#/, '')) : target; // If a function\n\n target = isFunction(target) ? target() : target; // If an element ref\n\n return isElement(target) ? target : null;\n },\n getPlacementTarget: function getPlacementTarget() {\n // This is the target that the tooltip will be placed on, which may not\n // necessarily be the same element that has the trigger event listeners\n // For now, this is the same as target\n // TODO:\n // Add in child selector support\n // Add in visibility checks for this element\n // Fallback to target if not found\n return this.getTarget();\n },\n getTargetId: function getTargetId() {\n // Returns the ID of the trigger element\n var target = this.getTarget();\n return target && target.id ? target.id : null;\n },\n getContainer: function getContainer() {\n // Handle case where container may be a component ref\n var container = this.container ? this.container.$el || this.container : false;\n var body = document.body;\n var target = this.getTarget(); // If we are in a modal, we append to the modal instead\n // of body, unless a container is specified\n // TODO:\n // Template should periodically check to see if it is in dom\n // And if not, self destruct (if container got v-if'ed out of DOM)\n // Or this could possibly be part of the visibility check\n\n return container === false ? closest(MODAL_SELECTOR, target) || body : isString(container) ? getById(container.replace(/^#/, '')) || body : body;\n },\n getBoundary: function getBoundary() {\n return this.boundary ? this.boundary.$el || this.boundary : 'scrollParent';\n },\n isInModal: function isInModal() {\n var target = this.getTarget();\n return target && closest(MODAL_SELECTOR, target);\n },\n isDropdown: function isDropdown() {\n // Returns true if trigger is a dropdown\n var target = this.getTarget();\n return target && hasClass(target, DROPDOWN_CLASS);\n },\n dropdownOpen: function dropdownOpen() {\n // Returns true if trigger is a dropdown and the dropdown menu is open\n var target = this.getTarget();\n return this.isDropdown() && target && select(DROPDOWN_OPEN_SELECTOR, target);\n },\n clearHoverTimeout: function clearHoverTimeout() {\n if (this.$_hoverTimeout) {\n clearTimeout(this.$_hoverTimeout);\n this.$_hoverTimeout = null;\n }\n },\n clearVisibilityInterval: function clearVisibilityInterval() {\n if (this.$_visibleInterval) {\n clearInterval(this.$_visibleInterval);\n this.$_visibleInterval = null;\n }\n },\n clearActiveTriggers: function clearActiveTriggers() {\n for (var trigger in this.activeTrigger) {\n this.activeTrigger[trigger] = false;\n }\n },\n addAriaDescribedby: function addAriaDescribedby() {\n // Add aria-describedby on trigger element, without removing any other IDs\n var target = this.getTarget();\n var desc = getAttr(target, 'aria-describedby') || '';\n desc = desc.split(/\\s+/).concat(this.computedId).join(' ').trim(); // Update/add aria-described by\n\n setAttr(target, 'aria-describedby', desc);\n },\n removeAriaDescribedby: function removeAriaDescribedby() {\n var _this5 = this;\n\n // Remove aria-describedby on trigger element, without removing any other IDs\n var target = this.getTarget();\n var desc = getAttr(target, 'aria-describedby') || '';\n desc = desc.split(/\\s+/).filter(function (d) {\n return d !== _this5.computedId;\n }).join(' ').trim(); // Update or remove aria-describedby\n\n if (desc) {\n /* istanbul ignore next */\n setAttr(target, 'aria-describedby', desc);\n } else {\n removeAttr(target, 'aria-describedby');\n }\n },\n fixTitle: function fixTitle() {\n // If the target has a title attribute, null it out and\n // store on data-title\n var target = this.getTarget();\n\n if (target && getAttr(target, 'title')) {\n // We only update title attribute if it has a value\n setAttr(target, 'data-original-title', getAttr(target, 'title') || '');\n setAttr(target, 'title', '');\n }\n },\n restoreTitle: function restoreTitle() {\n // If target had a title, restore the title attribute\n // and remove the data-title attribute\n var target = this.getTarget();\n\n if (target && hasAttr(target, 'data-original-title')) {\n setAttr(target, 'title', getAttr(target, 'data-original-title') || '');\n removeAttr(target, 'data-original-title');\n }\n },\n // --- BvEvent helpers ---\n buildEvent: function buildEvent(type) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n // Defaults to a non-cancellable event\n return new BvEvent(type, _objectSpread({\n cancelable: false,\n target: this.getTarget(),\n relatedTarget: this.getTemplateElement() || null,\n componentId: this.computedId,\n vueTarget: this\n }, opts));\n },\n emitEvent: function emitEvent(bvEvt) {\n // Emits a BvEvent on $root and this instance\n var evtName = bvEvt.type;\n var $root = this.$root;\n\n if ($root && $root.$emit) {\n // Emit an event on $root\n $root.$emit(\"bv::\".concat(this.templateType, \"::\").concat(evtName), bvEvt);\n }\n\n this.$emit(evtName, bvEvt);\n },\n // --- Event handler setup methods ---\n listen: function listen() {\n var _this6 = this;\n\n // Enable trigger event handlers\n var el = this.getTarget();\n\n if (!el) {\n /* istanbul ignore next */\n return;\n } // Listen for global show/hide events\n\n\n this.setRootListener(true); // Set up our listeners on the target trigger element\n\n this.computedTriggers.forEach(function (trigger) {\n if (trigger === 'click') {\n eventOn(el, 'click', _this6.handleEvent, EvtOpts);\n } else if (trigger === 'focus') {\n eventOn(el, 'focusin', _this6.handleEvent, EvtOpts);\n eventOn(el, 'focusout', _this6.handleEvent, EvtOpts);\n } else if (trigger === 'blur') {\n // Used to close $tip when element looses focus\n\n /* istanbul ignore next */\n eventOn(el, 'focusout', _this6.handleEvent, EvtOpts);\n } else if (trigger === 'hover') {\n eventOn(el, 'mouseenter', _this6.handleEvent, EvtOpts);\n eventOn(el, 'mouseleave', _this6.handleEvent, EvtOpts);\n }\n }, this);\n },\n unListen: function unListen()\n /* istanbul ignore next */\n {\n var _this7 = this;\n\n // Remove trigger event handlers\n var events = ['click', 'focusin', 'focusout', 'mouseenter', 'mouseleave'];\n var target = this.getTarget(); // Stop listening for global show/hide/enable/disable events\n\n this.setRootListener(false); // Clear out any active target listeners\n\n events.forEach(function (evt) {\n target && eventOff(target, evt, _this7.handleEvent, EvtOpts);\n }, this);\n },\n setRootListener: function setRootListener(on) {\n // Listen for global `bv::{hide|show}::{tooltip|popover}` hide request event\n var $root = this.$root;\n\n if ($root) {\n var method = on ? '$on' : '$off';\n var type = this.templateType;\n $root[method](\"bv::hide::\".concat(type), this.doHide);\n $root[method](\"bv::show::\".concat(type), this.doShow);\n $root[method](\"bv::disable::\".concat(type), this.doDisable);\n $root[method](\"bv::enable::\".concat(type), this.doEnable);\n }\n },\n setWhileOpenListeners: function setWhileOpenListeners(on) {\n // Events that are only registered when the template is showing\n // Modal close events\n this.setModalListener(on); // Dropdown open events (if we are attached to a dropdown)\n\n this.setDropdownListener(on); // Periodic $element visibility check\n // For handling when tip target is in , tabs, carousel, etc\n\n this.visibleCheck(on); // On-touch start listeners\n\n this.setOnTouchStartListener(on);\n },\n // Handler for periodic visibility check\n visibleCheck: function visibleCheck(on) {\n var _this8 = this;\n\n this.clearVisibilityInterval();\n var target = this.getTarget();\n var tip = this.getTemplateElement();\n\n if (on) {\n this.$_visibleInterval = setInterval(function () {\n if (tip && _this8.localShow && (!target.parentNode || !isVisible(target))) {\n // Target element is no longer visible or not in DOM, so force-hide the tooltip\n _this8.forceHide();\n }\n }, 100);\n }\n },\n setModalListener: function setModalListener(on) {\n // Handle case where tooltip/target is in a modal\n if (this.isInModal()) {\n // We can listen for modal hidden events on `$root`\n this.$root[on ? '$on' : '$off'](MODAL_CLOSE_EVENT, this.forceHide);\n }\n },\n setOnTouchStartListener: function setOnTouchStartListener(on)\n /* istanbul ignore next: JSDOM doesn't support `ontouchstart` */\n {\n var _this9 = this;\n\n // If this is a touch-enabled device we add extra empty\n // `mouseover` listeners to the body's immediate children\n // Only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement) {\n var method = on ? eventOn : eventOff;\n arrayFrom(document.body.children).forEach(function (el) {\n method(el, 'mouseover', _this9.$_noop);\n });\n }\n },\n setDropdownListener: function setDropdownListener(on) {\n var target = this.getTarget();\n\n if (!target || !this.$root || !this.isDropdown) {\n return;\n } // We can listen for dropdown shown events on its instance\n // TODO:\n // We could grab the ID from the dropdown, and listen for\n // $root events for that particular dropdown id\n // Dropdown shown and hidden events will need to emit\n // Note: Dropdown auto-ID happens in a `$nextTick()` after mount\n // So the ID lookup would need to be done in a `$nextTick()`\n\n\n if (target.__vue__) {\n target.__vue__[on ? '$on' : '$off']('shown', this.forceHide);\n }\n },\n // --- Event handlers ---\n handleEvent: function handleEvent(evt) {\n // General trigger event handler\n // target is the trigger element\n var target = this.getTarget();\n\n if (!target || isDisabled(target) || !this.$_enabled || this.dropdownOpen()) {\n // If disabled or not enabled, or if a dropdown that is open, don't do anything\n // If tip is shown before element gets disabled, then tip will not\n // close until no longer disabled or forcefully closed\n return;\n }\n\n var type = evt.type;\n var triggers = this.computedTriggers;\n\n if (type === 'click' && arrayIncludes(triggers, 'click')) {\n this.click(evt);\n } else if (type === 'mouseenter' && arrayIncludes(triggers, 'hover')) {\n // `mouseenter` is a non-bubbling event\n this.enter(evt);\n } else if (type === 'focusin' && arrayIncludes(triggers, 'focus')) {\n // `focusin` is a bubbling event\n // `evt` includes `relatedTarget` (element loosing focus)\n this.enter(evt);\n } else if (type === 'focusout' && (arrayIncludes(triggers, 'focus') || arrayIncludes(triggers, 'blur')) || type === 'mouseleave' && arrayIncludes(triggers, 'hover')) {\n // `focusout` is a bubbling event\n // `mouseleave` is a non-bubbling event\n // `tip` is the template (will be null if not open)\n var tip = this.getTemplateElement(); // `evtTarget` is the element which is loosing focus/hover and\n\n var evtTarget = evt.target; // `relatedTarget` is the element gaining focus/hover\n\n var relatedTarget = evt.relatedTarget;\n /* istanbul ignore next */\n\n if ( // From tip to target\n tip && contains(tip, evtTarget) && contains(target, relatedTarget) || // From target to tip\n tip && contains(target, evtTarget) && contains(tip, relatedTarget) || // Within tip\n tip && contains(tip, evtTarget) && contains(tip, relatedTarget) || // Within target\n contains(target, evtTarget) && contains(target, relatedTarget)) {\n // If focus/hover moves within `tip` and `target`, don't trigger a leave\n return;\n } // Otherwise trigger a leave\n\n\n this.leave(evt);\n }\n },\n doHide: function doHide(id) {\n // Programmatically hide tooltip or popover\n if (!id || this.getTargetId() === id || this.computedId === id) {\n // Close all tooltips or popovers, or this specific tip (with ID)\n this.forceHide();\n }\n },\n doShow: function doShow(id) {\n // Programmatically show tooltip or popover\n if (!id || this.getTargetId() === id || this.computedId === id) {\n // Open all tooltips or popovers, or this specific tip (with ID)\n this.show();\n }\n },\n doDisable: function doDisable(id)\n /*istanbul ignore next: ignore for now */\n {\n // Programmatically disable tooltip or popover\n if (!id || this.getTargetId() === id || this.computedId === id) {\n // Disable all tooltips or popovers (no ID), or this specific tip (with ID)\n this.disable();\n }\n },\n doEnable: function doEnable(id)\n /*istanbul ignore next: ignore for now */\n {\n // Programmatically enable tooltip or popover\n if (!id || this.getTargetId() === id || this.computedId === id) {\n // Enable all tooltips or popovers (no ID), or this specific tip (with ID)\n this.enable();\n }\n },\n click: function click(evt) {\n if (!this.$_enabled || this.dropdownOpen()) {\n /* istanbul ignore next */\n return;\n }\n\n this.activeTrigger.click = !this.activeTrigger.click;\n\n if (this.isWithActiveTrigger) {\n this.enter(null);\n } else {\n /* istanbul ignore next */\n this.leave(null);\n }\n },\n toggle: function toggle()\n /* istanbul ignore next */\n {\n // Manual toggle handler\n if (!this.$_enabled || this.dropdownOpen()) {\n /* istanbul ignore next */\n return;\n } // Should we register as an active trigger?\n // this.activeTrigger.manual = !this.activeTrigger.manual\n\n\n if (this.localShow) {\n this.leave(null);\n } else {\n this.enter(null);\n }\n },\n enter: function enter() {\n var _this10 = this;\n\n var evt = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n\n // Opening trigger handler\n // Note: Click events are sent with evt === null\n if (evt) {\n this.activeTrigger[evt.type === 'focusin' ? 'focus' : 'hover'] = true;\n }\n /* istanbul ignore next */\n\n\n if (this.localShow || this.$_hoverState === 'in') {\n this.$_hoverState = 'in';\n return;\n }\n\n this.clearHoverTimeout();\n this.$_hoverState = 'in';\n\n if (!this.computedDelay.show) {\n this.show();\n } else {\n // Hide any title attribute while enter delay is active\n this.fixTitle();\n this.$_hoverTimeout = setTimeout(function () {\n /* istanbul ignore else */\n if (_this10.$_hoverState === 'in') {\n _this10.show();\n } else if (!_this10.localShow) {\n _this10.restoreTitle();\n }\n }, this.computedDelay.show);\n }\n },\n leave: function leave() {\n var _this11 = this;\n\n var evt = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n\n // Closing trigger handler\n // Note: Click events are sent with evt === null\n if (evt) {\n this.activeTrigger[evt.type === 'focusout' ? 'focus' : 'hover'] = false;\n /* istanbul ignore next */\n\n if (evt.type === 'focusout' && arrayIncludes(this.computedTriggers, 'blur')) {\n // Special case for `blur`: we clear out the other triggers\n this.activeTrigger.click = false;\n this.activeTrigger.hover = false;\n }\n }\n /* istanbul ignore next: ignore for now */\n\n\n if (this.isWithActiveTrigger) {\n return;\n }\n\n this.clearHoverTimeout();\n this.$_hoverState = 'out';\n\n if (!this.computedDelay.hide) {\n this.hide();\n } else {\n this.$_hoverTimeout = setTimeout(function () {\n if (_this11.$_hoverState === 'out') {\n _this11.hide();\n }\n }, this.computedDelay.hide);\n }\n }\n }\n});","import Vue from '../../utils/vue';\nimport getScopId from '../../utils/get-scope-id';\nimport { isArray, arrayIncludes } from '../../utils/array';\nimport { getComponentConfig } from '../../utils/config';\nimport { isString, isUndefinedOrNull } from '../../utils/inspect';\nimport { HTMLElement, SVGElement } from '../../utils/safe-types';\nimport { BVTooltip } from './helpers/bv-tooltip';\nvar NAME = 'BTooltip'; // @vue/component\n\nexport var BTooltip =\n/*#__PURE__*/\nVue.extend({\n name: NAME,\n props: {\n title: {\n type: String // default: undefined\n\n },\n // Added in by BPopover\n // content: {\n // type: String,\n // default: undefined\n // },\n target: {\n // String ID of element, or element/component reference\n // Or function that returns one of the above\n type: [String, HTMLElement, SVGElement, Function, Object],\n // default: undefined,\n required: true\n },\n triggers: {\n type: [String, Array],\n default: 'hover focus'\n },\n placement: {\n type: String,\n default: 'top'\n },\n fallbackPlacement: {\n type: [String, Array],\n default: 'flip',\n validator: function validator(value) {\n return isArray(value) && value.every(function (v) {\n return isString(v);\n }) || arrayIncludes(['flip', 'clockwise', 'counterclockwise'], value);\n }\n },\n variant: {\n type: String,\n default: function _default() {\n return getComponentConfig(NAME, 'variant');\n }\n },\n customClass: {\n type: String,\n default: function _default() {\n return getComponentConfig(NAME, 'customClass');\n }\n },\n delay: {\n type: [Number, Object, String],\n default: function _default() {\n return getComponentConfig(NAME, 'delay');\n }\n },\n boundary: {\n // String: scrollParent, window, or viewport\n // Element: element reference\n // Object: Vue component\n type: [String, HTMLElement, Object],\n default: function _default() {\n return getComponentConfig(NAME, 'boundary');\n }\n },\n boundaryPadding: {\n type: [Number, String],\n default: function _default() {\n return getComponentConfig(NAME, 'boundaryPadding');\n }\n },\n offset: {\n type: [Number, String],\n default: 0\n },\n noFade: {\n type: Boolean,\n default: false\n },\n container: {\n // String: HTML ID of container, if null body is used (default)\n // HTMLElement: element reference reference\n // Object: Vue Component\n type: [String, HTMLElement, Object] // default: undefined\n\n },\n show: {\n type: Boolean,\n default: false\n },\n noninteractive: {\n type: Boolean,\n default: false\n },\n disabled: {\n type: Boolean,\n default: false\n },\n id: {\n // ID to use for tooltip element\n // If not provided on will automatically be generated\n type: String,\n default: null\n }\n },\n data: function data() {\n return {\n localShow: this.show,\n localTitle: '',\n localContent: ''\n };\n },\n computed: {\n templateData: function templateData() {\n // Data that will be passed to the template and popper\n return {\n // We use massaged versions of the title and content props/slots\n title: this.localTitle,\n content: this.localContent,\n // Pass these props as is\n target: this.target,\n triggers: this.triggers,\n placement: this.placement,\n fallbackPlacement: this.fallbackPlacement,\n variant: this.variant,\n customClass: this.customClass,\n container: this.container,\n boundary: this.boundary,\n boundaryPadding: this.boundaryPadding,\n delay: this.delay,\n offset: this.offset,\n noFade: this.noFade,\n interactive: !this.noninteractive,\n disabled: this.disabled,\n id: this.id\n };\n },\n templateTitleContent: function templateTitleContent() {\n // Used to watch for changes to the title and content props\n return {\n title: this.title,\n content: this.content\n };\n }\n },\n watch: {\n show: function show(_show, oldVal) {\n if (_show !== oldVal && _show !== this.localShow && this.$_bv_toolpop) {\n if (_show) {\n this.$_bv_toolpop.show();\n } else {\n // We use `forceHide()` to override any active triggers\n this.$_bv_toolpop.forceHide();\n }\n }\n },\n disabled: function disabled(newVal, oldVal) {\n if (newVal) {\n this.doDisable();\n } else {\n this.doEnable();\n }\n },\n localShow: function localShow(show, oldVal) {\n // TODO: May need to be done in a `$nextTick()`\n this.$emit('update:show', show);\n },\n templateData: function templateData(newVal, oldVal) {\n var _this = this;\n\n this.$nextTick(function () {\n if (_this.$_bv_toolpop) {\n _this.$_bv_toolpop.updateData(_this.templateData);\n }\n });\n },\n // Watchers for title/content props (prop changes do not trigger the `updated()` hook)\n templateTitleContent: function templateTitleContent(newVal, oldVal) {\n this.$nextTick(this.updateContent);\n }\n },\n created: function created() {\n // Non reactive properties\n this.$_bv_toolpop = null;\n },\n updated: function updated() {\n // Update the `propData` object\n // Done in a `$nextTick()` to ensure slot(s) have updated\n this.$nextTick(this.updateContent);\n },\n beforeDestroy: function beforeDestroy() {\n // Shutdown our local event listeners\n this.$off('open', this.doOpen);\n this.$off('close', this.doClose);\n this.$off('disable', this.doDisable);\n this.$off('enable', this.doEnable); // Destroy the tip instance\n\n this.$_bv_toolpop && this.$_bv_toolpop.$destroy();\n this.$_bv_toolpop = null;\n },\n mounted: function mounted() {\n var _this2 = this;\n\n // Instantiate a new BVTooltip instance\n // Done in a `$nextTick()` to ensure DOM has completed rendering\n // so that target can be found\n this.$nextTick(function () {\n // Load the on demand child instance\n var Component = _this2.getComponent(); // Ensure we have initial content\n\n\n _this2.updateContent(); // Pass down the scoped style attribute if available\n\n\n var scopeId = getScopId(_this2) || getScopId(_this2.$parent); // Create the instance\n\n var $toolpop = _this2.$_bv_toolpop = new Component({\n parent: _this2,\n // Pass down the scoped style ID\n _scopeId: scopeId || undefined\n }); // Set the initial data\n\n $toolpop.updateData(_this2.templateData); // Set listeners\n\n $toolpop.$on('show', _this2.onShow);\n $toolpop.$on('shown', _this2.onShown);\n $toolpop.$on('hide', _this2.onHide);\n $toolpop.$on('hidden', _this2.onHidden);\n $toolpop.$on('disabled', _this2.onDisabled);\n $toolpop.$on('enabled', _this2.onEnabled); // Initially disabled?\n\n if (_this2.disabled) {\n // Initially disabled\n _this2.doDisable();\n } // Listen to open signals from others\n\n\n _this2.$on('open', _this2.doOpen); // Listen to close signals from others\n\n\n _this2.$on('close', _this2.doClose); // Listen to disable signals from others\n\n\n _this2.$on('disable', _this2.doDisable); // Listen to enable signals from others\n\n\n _this2.$on('enable', _this2.doEnable); // Initially show tooltip?\n\n\n if (_this2.localShow) {\n _this2.$_bv_toolpop && _this2.$_bv_toolpop.show();\n }\n });\n },\n methods: {\n getComponent: function getComponent() {\n // Overridden by BPopover\n return BVTooltip;\n },\n updateContent: function updateContent() {\n // Overridden by BPopover\n // Tooltip: Default slot is `title`\n // Popover: Default slot is `content`, `title` slot is title\n // We pass a scoped slot function reference by default (Vue v2.6x)\n // And pass the title prop as a fallback\n this.setTitle(this.$scopedSlots.default || this.title);\n },\n // Helper methods for `updateContent()`\n setTitle: function setTitle(val) {\n val = isUndefinedOrNull(val) ? '' : val; // We only update the value if it has changed\n\n if (this.localTitle !== val) {\n this.localTitle = val;\n }\n },\n setContent: function setContent(val) {\n val = isUndefinedOrNull(val) ? '' : val; // We only update the value if it has changed\n\n if (this.localContent !== val) {\n this.localContent = val;\n }\n },\n // --- Template event handlers ---\n onShow: function onShow(bvEvt) {\n // Placeholder\n this.$emit('show', bvEvt);\n\n if (bvEvt) {\n this.localShow = !bvEvt.defaultPrevented;\n }\n },\n onShown: function onShown(bvEvt) {\n // Tip is now showing\n this.localShow = true;\n this.$emit('shown', bvEvt);\n },\n onHide: function onHide(bvEvt) {\n this.$emit('hide', bvEvt);\n },\n onHidden: function onHidden(bvEvt) {\n // Tip is no longer showing\n this.$emit('hidden', bvEvt);\n this.localShow = false;\n },\n onDisabled: function onDisabled(bvEvt) {\n // Prevent possible endless loop if user mistakenly\n // fires `disabled` instead of `disable`\n if (bvEvt && bvEvt.type === 'disabled') {\n this.$emit('update:disabled', true);\n this.$emit('disabled', bvEvt);\n }\n },\n onEnabled: function onEnabled(bvEvt) {\n // Prevent possible endless loop if user mistakenly\n // fires `enabled` instead of `enable`\n if (bvEvt && bvEvt.type === 'enabled') {\n this.$emit('update:disabled', false);\n this.$emit('enabled', bvEvt);\n }\n },\n // --- Local event listeners ---\n doOpen: function doOpen() {\n !this.localShow && this.$_bv_toolpop && this.$_bv_toolpop.show();\n },\n doClose: function doClose() {\n this.localShow && this.$_bv_toolpop && this.$_bv_toolpop.hide();\n },\n doDisable: function doDisable(evt) {\n this.$_bv_toolpop && this.$_bv_toolpop.disable();\n },\n doEnable: function doEnable() {\n this.$_bv_toolpop && this.$_bv_toolpop.enable();\n }\n },\n render: function render(h) {\n // Always renders a comment node\n // TODO:\n // Future: Possibly render a target slot (single root element)\n // which we can apply the listeners to (pass `this.$el` to BVTooltip)\n return h();\n }\n});","// Base on-demand component for tooltip / popover templates\n//\n// Currently:\n// Responsible for positioning and transitioning the template\n// Templates are only instantiated when shown, and destroyed when hidden\n//\nimport Vue from '../../../utils/vue';\nimport Popper from 'popper.js';\nimport { getCS, select } from '../../../utils/dom';\nimport { HTMLElement, SVGElement } from '../../../utils/safe-types';\nimport { BVTransition } from '../../../utils/bv-transition';\nvar NAME = 'BVPopper';\nvar AttachmentMap = {\n AUTO: 'auto',\n TOP: 'top',\n RIGHT: 'right',\n BOTTOM: 'bottom',\n LEFT: 'left',\n TOPLEFT: 'top',\n TOPRIGHT: 'top',\n RIGHTTOP: 'right',\n RIGHTBOTTOM: 'right',\n BOTTOMLEFT: 'bottom',\n BOTTOMRIGHT: 'bottom',\n LEFTTOP: 'left',\n LEFTBOTTOM: 'left'\n};\nvar OffsetMap = {\n AUTO: 0,\n TOPLEFT: -1,\n TOP: 0,\n TOPRIGHT: +1,\n RIGHTTOP: -1,\n RIGHT: 0,\n RIGHTBOTTOM: +1,\n BOTTOMLEFT: -1,\n BOTTOM: 0,\n BOTTOMRIGHT: +1,\n LEFTTOP: -1,\n LEFT: 0,\n LEFTBOTTOM: +1\n}; // @vue/component\n\nexport var BVPopper =\n/*#__PURE__*/\nVue.extend({\n name: NAME,\n props: {\n target: {\n // Element that the tooltip/popover is positioned relative to\n type: [HTMLElement, SVGElement],\n default: null\n },\n placement: {\n type: String,\n default: 'top'\n },\n fallbackPlacement: {\n type: [String, Array],\n default: 'flip'\n },\n offset: {\n type: Number,\n default: 0\n },\n boundary: {\n // 'scrollParent', 'viewport', 'window', or Element\n type: [String, HTMLElement],\n default: 'scrollParent'\n },\n boundaryPadding: {\n // Tooltip/popover will try and stay away from\n // boundary edge by this many pixels\n type: Number,\n default: 5\n },\n arrowPadding: {\n // The minimum distance (in `px`) from the edge of the\n // tooltip/popover that the arrow can be positioned\n type: Number,\n default: 6\n }\n },\n data: function data() {\n return {\n // reactive props set by parent\n noFade: false,\n // State related data\n localShow: true,\n attachment: this.getAttachment(this.placement)\n };\n },\n computed: {\n templateType: function templateType()\n /* istanbul ignore next */\n {\n // Overridden by template component\n return 'unknown';\n },\n popperConfig: function popperConfig() {\n var _this = this;\n\n var placement = this.placement;\n return {\n placement: this.getAttachment(placement),\n modifiers: {\n offset: {\n offset: this.getOffset(placement)\n },\n flip: {\n behavior: this.fallbackPlacement\n },\n // `arrow.element` can also be a reference to an HTML Element\n // maybe we should make this a `$ref` in the templates?\n arrow: {\n element: '.arrow'\n },\n preventOverflow: {\n padding: this.boundaryPadding,\n boundariesElement: this.boundary\n }\n },\n onCreate: function onCreate(data) {\n // Handle flipping arrow classes\n if (data.originalPlacement !== data.placement) {\n /* istanbul ignore next: can't test in JSDOM */\n _this.popperPlacementChange(data);\n }\n },\n onUpdate: function onUpdate(data) {\n // Handle flipping arrow classes\n _this.popperPlacementChange(data);\n }\n };\n }\n },\n created: function created() {\n var _this2 = this;\n\n // Note: We are created on-demand, and should be guaranteed that\n // DOM is rendered/ready by the time the created hook runs\n this.$_popper = null; // Ensure we show as we mount\n\n this.localShow = true; // Create popper instance before shown\n\n this.$on('show', function (el) {\n _this2.popperCreate(el);\n }); // Self destruct once hidden\n\n this.$on('hidden', function () {\n _this2.$nextTick(_this2.$destroy);\n }); // If parent is destroyed, ensure we are destroyed\n\n this.$parent.$once('hook:destroyed', this.$destroy);\n },\n beforeMount: function beforeMount() {\n // Ensure that the attachment position is correct before mounting\n // as our propsData is added after `new Template({...})`\n this.attachment = this.getAttachment(this.placement);\n },\n mounted: function mounted() {// TBD\n },\n updated: function updated() {\n // Update popper if needed\n // TODO: Should this be a watcher on `this.popperConfig` instead?\n this.popperUpdate();\n },\n beforeDestroy: function beforeDestroy() {\n this.popperDestroy();\n },\n destroyed: function destroyed() {\n // Make sure template is removed from DOM\n var el = this.$el;\n el && el.parentNode && el.parentNode.removeChild(el);\n },\n methods: {\n // \"Public\" method to trigger hide template\n hide: function hide() {\n this.localShow = false;\n },\n // Private\n getAttachment: function getAttachment(placement) {\n return AttachmentMap[String(placement).toUpperCase()] || 'auto';\n },\n getOffset: function getOffset(placement) {\n if (!this.offset) {\n // Could set a ref for the arrow element\n var arrow = this.$refs.arrow || select('.arrow', this.$el);\n var arrowOffset = (parseFloat(getCS(arrow).width) || 0) + (parseFloat(this.arrowPadding) || 0);\n\n switch (OffsetMap[String(placement).toUpperCase()] || 0) {\n case +1:\n /* istanbul ignore next: can't test in JSDOM */\n return \"+50%p - \".concat(arrowOffset, \"px\");\n\n case -1:\n /* istanbul ignore next: can't test in JSDOM */\n return \"-50%p + \".concat(arrowOffset, \"px\");\n\n default:\n return 0;\n }\n }\n /* istanbul ignore next */\n\n\n return this.offset;\n },\n popperCreate: function popperCreate(el) {\n this.popperDestroy(); // We use `el` rather than `this.$el` just in case the original\n // mountpoint root element type was changed by the template\n\n this.$_popper = new Popper(this.target, el, this.popperConfig);\n },\n popperDestroy: function popperDestroy() {\n this.$_popper && this.$_popper.destroy();\n this.$_popper = null;\n },\n popperUpdate: function popperUpdate() {\n this.$_popper && this.$_popper.scheduleUpdate();\n },\n popperPlacementChange: function popperPlacementChange(data) {\n // Callback used by popper to adjust the arrow placement\n this.attachment = this.getAttachment(data.placement);\n },\n renderTemplate: function renderTemplate(h)\n /* istanbul ignore next */\n {\n // Will be overridden by templates\n return h('div');\n }\n },\n render: function render(h) {\n var _this3 = this;\n\n // Note: `show` and 'fade' classes are only appled during transition\n return h(BVTransition, {\n // Transitions as soon as mounted\n props: {\n appear: true,\n noFade: this.noFade\n },\n on: {\n // Events used by parent component/instance\n beforeEnter: function beforeEnter(el) {\n return _this3.$emit('show', el);\n },\n afterEnter: function afterEnter(el) {\n return _this3.$emit('shown', el);\n },\n beforeLeave: function beforeLeave(el) {\n return _this3.$emit('hide', el);\n },\n afterLeave: function afterLeave(el) {\n return _this3.$emit('hidden', el);\n }\n }\n }, [this.localShow ? this.renderTemplate(h) : h()]);\n }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport Vue from '../../../utils/vue';\nimport scopedStyleAttrsMixin from '../../../mixins/scoped-style-attrs';\nimport { isFunction, isUndefinedOrNull } from '../../../utils/inspect';\nimport { BVPopper } from './bv-popper';\nvar NAME = 'BVTooltipTemplate'; // @vue/component\n\nexport var BVTooltipTemplate =\n/*#__PURE__*/\nVue.extend({\n name: NAME,\n extends: BVPopper,\n mixins: [scopedStyleAttrsMixin],\n props: {\n // Other non-reactive (while open) props are pulled in from BVPopper\n id: {\n type: String,\n default: null\n },\n html: {\n // Used only by the directive versions\n type: Boolean,\n default: false\n }\n },\n data: function data() {\n // We use data, rather than props to ensure reactivity\n // Parent component will directly set this data\n return {\n title: '',\n content: '',\n variant: null,\n customClass: null,\n interactive: true\n };\n },\n computed: {\n templateType: function templateType() {\n return 'tooltip';\n },\n templateClasses: function templateClasses() {\n var _ref;\n\n return [(_ref = {\n // Disables pointer events to hide the tooltip when the user\n // hovers over its content\n noninteractive: !this.interactive\n }, _defineProperty(_ref, \"b-\".concat(this.templateType, \"-\").concat(this.variant), this.variant), _defineProperty(_ref, \"bs-\".concat(this.templateType, \"-\").concat(this.attachment), this.attachment), _ref), this.customClass];\n },\n templateAttributes: function templateAttributes() {\n return _objectSpread({\n id: this.id,\n role: 'tooltip',\n tabindex: '-1'\n }, this.scopedStyleAttrs);\n },\n templateListeners: function templateListeners() {\n var _this = this;\n\n // Used for hover/focus trigger listeners\n return {\n mouseenter: function mouseenter(evt) {\n /* istanbul ignore next: difficult to test in JSDOM */\n _this.$emit('mouseenter', evt);\n },\n mouseleave: function mouseleave(evt) {\n /* istanbul ignore next: difficult to test in JSDOM */\n _this.$emit('mouseleave', evt);\n },\n focusin: function focusin(evt) {\n /* istanbul ignore next: difficult to test in JSDOM */\n _this.$emit('focusin', evt);\n },\n focusout: function focusout(evt) {\n /* istanbul ignore next: difficult to test in JSDOM */\n _this.$emit('focusout', evt);\n }\n };\n }\n },\n methods: {\n renderTemplate: function renderTemplate(h) {\n // Title can be a scoped slot function\n var $title = isFunction(this.title) ? this.title({}) : isUndefinedOrNull(this.title) ? h() : this.title; // Directive versions only\n\n var domProps = this.html && !isFunction(this.title) ? {\n innerHTML: this.title\n } : {};\n return h('div', {\n staticClass: 'tooltip b-tooltip',\n class: this.templateClasses,\n attrs: this.templateAttributes,\n on: this.templateListeners\n }, [h('div', {\n ref: 'arrow',\n staticClass: 'arrow'\n }), h('div', {\n staticClass: 'tooltip-inner',\n domProps: domProps\n }, [$title])]);\n }\n }\n});"],"sourceRoot":""}