{"version":3,"file":"js/chunk-vendors-1e8a303f.ce4015bcfa6bdbec.js","mappings":"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","sources":["webpack://prochip-licensing-ui/../src/components/ResizeObserver.vue","webpack://prochip-licensing-ui/../src/utils/compatibility.js","webpack://prochip-licensing-ui/../src/index.js","webpack://prochip-licensing-ui/./node_modules/v-tooltip/dist/v-tooltip.esm.js","webpack://prochip-licensing-ui/./node_modules/vue-axios/dist/vue-axios.esm.min.js","webpack://prochip-licensing-ui/./node_modules/vue-loader/dist/exportHelper.js","webpack://prochip-licensing-ui/./node_modules/vue-router/dist/vue-router.esm-bundler.js","webpack://prochip-licensing-ui/./node_modules/vue3-cookies/dist/index.js","webpack://prochip-licensing-ui/./node_modules/vue3-header-footer/src/components/TheHeader.vue","webpack://prochip-licensing-ui/./node_modules/vue3-header-footer/src/components/TheHeader.vue?50ff","webpack://prochip-licensing-ui/./node_modules/vue3-header-footer/src/components/TheFooter.vue","webpack://prochip-licensing-ui/./node_modules/vue3-header-footer/src/components/TheFooter.vue?c296","webpack://prochip-licensing-ui/./node_modules/vue3-header-footer/src/App.vue","webpack://prochip-licensing-ui/./node_modules/vue3-header-footer/src/App.vue?74d9"],"sourcesContent":["\n\n\n\n\n","export function getInternetExplorerVersion () {\n const ua = window.navigator.userAgent\n\n const msie = ua.indexOf('MSIE ')\n if (msie > 0) {\n // IE 10 or older => return version number\n return parseInt(ua.substring(msie + 5, ua.indexOf('.', msie)), 10)\n }\n\n const trident = ua.indexOf('Trident/')\n if (trident > 0) {\n // IE 11 => return version number\n const rv = ua.indexOf('rv:')\n return parseInt(ua.substring(rv + 3, ua.indexOf('.', rv)), 10)\n }\n\n const edge = ua.indexOf('Edge/')\n if (edge > 0) {\n // Edge (IE 12+) => return version number\n return parseInt(ua.substring(edge + 5, ua.indexOf('.', edge)), 10)\n }\n\n // other browser\n return -1\n}\n","import ResizeObserver from './components/ResizeObserver.vue'\n\n// Install the components\nexport function install (Vue) {\n // eslint-disable-next-line vue/component-definition-name-casing\n Vue.component('resize-observer', ResizeObserver)\n Vue.component('ResizeObserver', ResizeObserver)\n}\n\nexport {\n ResizeObserver,\n}\n\n// Plugin\nconst plugin = {\n // eslint-disable-next-line no-undef\n version: VERSION,\n install,\n}\n\nexport default plugin\n\n// Auto-install\nlet GlobalVue = null\nif (typeof window !== 'undefined') {\n GlobalVue = window.Vue\n} else if (typeof global !== 'undefined') {\n GlobalVue = global.Vue\n}\nif (GlobalVue) {\n GlobalVue.use(plugin)\n}\n","import _typeof from '@babel/runtime/helpers/typeof';\nimport _defineProperty from '@babel/runtime/helpers/defineProperty';\nimport _classCallCheck from '@babel/runtime/helpers/classCallCheck';\nimport _createClass from '@babel/runtime/helpers/createClass';\nimport Popper from 'popper.js';\nimport isEqual from 'lodash/isEqual';\nimport { ResizeObserver } from 'vue-resize';\nimport merge from 'lodash/merge';\n\nvar SVGAnimatedString = function SVGAnimatedString() {};\n\nif (typeof window !== 'undefined') {\n SVGAnimatedString = window.SVGAnimatedString;\n}\n\nfunction convertToArray(value) {\n if (typeof value === 'string') {\n value = value.split(' ');\n }\n\n return value;\n}\n/**\n * Add classes to an element.\n * This method checks to ensure that the classes don't already exist before adding them.\n * It uses el.className rather than classList in order to be IE friendly.\n * @param {object} el - The element to add the classes to.\n * @param {classes} string - List of space separated classes to be added to the element.\n */\n\nfunction addClasses(el, classes) {\n var newClasses = convertToArray(classes);\n var classList;\n\n if (el.className instanceof SVGAnimatedString) {\n classList = convertToArray(el.className.baseVal);\n } else {\n classList = convertToArray(el.className);\n }\n\n newClasses.forEach(function (newClass) {\n if (classList.indexOf(newClass) === -1) {\n classList.push(newClass);\n }\n });\n\n if (el instanceof SVGElement) {\n el.setAttribute('class', classList.join(' '));\n } else {\n el.className = classList.join(' ');\n }\n}\n/**\n * Remove classes from an element.\n * It uses el.className rather than classList in order to be IE friendly.\n * @export\n * @param {any} el The element to remove the classes from.\n * @param {any} classes List of space separated classes to be removed from the element.\n */\n\nfunction removeClasses(el, classes) {\n var newClasses = convertToArray(classes);\n var classList;\n\n if (el.className instanceof SVGAnimatedString) {\n classList = convertToArray(el.className.baseVal);\n } else {\n classList = convertToArray(el.className);\n }\n\n newClasses.forEach(function (newClass) {\n var index = classList.indexOf(newClass);\n\n if (index !== -1) {\n classList.splice(index, 1);\n }\n });\n\n if (el instanceof SVGElement) {\n el.setAttribute('class', classList.join(' '));\n } else {\n el.className = classList.join(' ');\n }\n}\nvar supportsPassive = false;\n\nif (typeof window !== 'undefined') {\n supportsPassive = false;\n\n try {\n var opts = Object.defineProperty({}, 'passive', {\n get: function get() {\n supportsPassive = true;\n }\n });\n window.addEventListener('test', null, opts);\n } catch (e) {}\n}\n\nfunction ownKeys$2(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$2(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$2(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$2(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\nvar DEFAULT_OPTIONS = {\n container: false,\n delay: 0,\n html: false,\n placement: 'top',\n title: '',\n template: '
',\n trigger: 'hover focus',\n offset: 0\n};\nvar openTooltips = [];\n\nvar Tooltip = /*#__PURE__*/function () {\n /**\n * Create a new Tooltip.js instance\n * @class Tooltip\n * @param {HTMLElement} reference - The DOM node used as reference of the tooltip (it can be a jQuery element).\n * @param {Object} options\n * @param {String} options.placement=bottom\n * Placement of the popper accepted values: `top(-start, -end), right(-start, -end), bottom(-start, -end),\n * left(-start, -end)`\n * @param {HTMLElement|String|false} options.container=false - Append the tooltip to a specific element.\n * @param {Number|Object} options.delay=0\n * Delay showing and hiding the tooltip (ms) - does not apply to manual trigger type.\n * If a number is supplied, delay is applied to both hide/show.\n * Object structure is: `{ show: 500, hide: 100 }`\n * @param {Boolean} options.html=false - Insert HTML into the tooltip. If false, the content will inserted with `innerText`.\n * @param {String|PlacementFunction} options.placement='top' - One of the allowed placements, or a function returning one of them.\n * @param {String} [options.template='
']\n * Base HTML to used when creating the tooltip.\n * The tooltip's `title` will be injected into the `.tooltip-inner` or `.tooltip__inner`.\n * `.tooltip-arrow` or `.tooltip__arrow` will become the tooltip's arrow.\n * The outermost wrapper element should have the `.tooltip` class.\n * @param {String|HTMLElement|TitleFunction} options.title='' - Default title value if `title` attribute isn't present.\n * @param {String} [options.trigger='hover focus']\n * How tooltip is triggered - click, hover, focus, manual.\n * You may pass multiple triggers; separate them with a space. `manual` cannot be combined with any other trigger.\n * @param {HTMLElement} options.boundariesElement\n * The element used as boundaries for the tooltip. For more information refer to Popper.js'\n * [boundariesElement docs](https://popper.js.org/popper-documentation.html)\n * @param {Number|String} options.offset=0 - Offset of the tooltip relative to its reference. For more information refer to Popper.js'\n * [offset docs](https://popper.js.org/popper-documentation.html)\n * @param {Object} options.popperOptions={} - Popper options, will be passed directly to popper instance. For more information refer to Popper.js'\n * [options docs](https://popper.js.org/popper-documentation.html)\n * @param {string} [options.ariaId] Id used for accessibility\n * @return {Object} instance - The generated tooltip instance\n */\n function Tooltip(_reference, _options) {\n var _this = this;\n\n _classCallCheck(this, Tooltip);\n\n _defineProperty(this, \"_events\", []);\n\n _defineProperty(this, \"_setTooltipNodeEvent\", function (evt, reference, delay, options) {\n var relatedreference = evt.relatedreference || evt.toElement || evt.relatedTarget;\n\n var callback = function callback(evt2) {\n var relatedreference2 = evt2.relatedreference || evt2.toElement || evt2.relatedTarget; // Remove event listener after call\n\n _this._tooltipNode.removeEventListener(evt.type, callback); // If the new reference is not the reference element\n\n\n if (!reference.contains(relatedreference2)) {\n // Schedule to hide tooltip\n _this._scheduleHide(reference, options.delay, options, evt2);\n }\n };\n\n if (_this._tooltipNode.contains(relatedreference)) {\n // listen to mouseleave on the tooltip element to be able to hide the tooltip\n _this._tooltipNode.addEventListener(evt.type, callback);\n\n return true;\n }\n\n return false;\n });\n\n // apply user options over default ones\n _options = _objectSpread$2(_objectSpread$2({}, DEFAULT_OPTIONS), _options);\n _reference.jquery && (_reference = _reference[0]);\n this.show = this.show.bind(this);\n this.hide = this.hide.bind(this); // cache reference and options\n\n this.reference = _reference;\n this.options = _options; // set initial state\n\n this._isOpen = false;\n\n this._init();\n } //\n // Public methods\n //\n\n /**\n * Reveals an element's tooltip. This is considered a \"manual\" triggering of the tooltip.\n * Tooltips with zero-length titles are never displayed.\n * @method Tooltip#show\n * @memberof Tooltip\n */\n\n\n _createClass(Tooltip, [{\n key: \"show\",\n value: function show() {\n this._show(this.reference, this.options);\n }\n /**\n * Hides an element’s tooltip. This is considered a “manual” triggering of the tooltip.\n * @method Tooltip#hide\n * @memberof Tooltip\n */\n\n }, {\n key: \"hide\",\n value: function hide() {\n this._hide();\n }\n /**\n * Hides and destroys an element’s tooltip.\n * @method Tooltip#dispose\n * @memberof Tooltip\n */\n\n }, {\n key: \"dispose\",\n value: function dispose() {\n this._dispose();\n }\n /**\n * Toggles an element’s tooltip. This is considered a “manual” triggering of the tooltip.\n * @method Tooltip#toggle\n * @memberof Tooltip\n */\n\n }, {\n key: \"toggle\",\n value: function toggle() {\n if (this._isOpen) {\n return this.hide();\n } else {\n return this.show();\n }\n }\n }, {\n key: \"setClasses\",\n value: function setClasses(classes) {\n this._classes = classes;\n }\n }, {\n key: \"setContent\",\n value: function setContent(content) {\n this.options.title = content;\n\n if (this._tooltipNode) {\n this._setContent(content, this.options);\n }\n }\n }, {\n key: \"setOptions\",\n value: function setOptions(options) {\n var classesUpdated = false;\n var classes = options && options.classes || directive.options.defaultClass;\n\n if (!isEqual(this._classes, classes)) {\n this.setClasses(classes);\n classesUpdated = true;\n }\n\n options = getOptions(options);\n var needPopperUpdate = false;\n var needRestart = false;\n\n if (this.options.offset !== options.offset || this.options.placement !== options.placement) {\n needPopperUpdate = true;\n }\n\n if (this.options.template !== options.template || this.options.trigger !== options.trigger || this.options.container !== options.container || classesUpdated) {\n needRestart = true;\n }\n\n for (var key in options) {\n this.options[key] = options[key];\n }\n\n if (this._tooltipNode) {\n if (needRestart) {\n var isOpen = this._isOpen;\n this.dispose();\n\n this._init();\n\n if (isOpen) {\n this.show();\n }\n } else if (needPopperUpdate) {\n this.popperInstance.update();\n }\n }\n } //\n // Private methods\n //\n\n }, {\n key: \"_init\",\n value: function _init() {\n // get events list\n var events = typeof this.options.trigger === 'string' ? this.options.trigger.split(' ') : [];\n this._isDisposed = false;\n this._enableDocumentTouch = events.indexOf('manual') === -1;\n events = events.filter(function (trigger) {\n return ['click', 'hover', 'focus'].indexOf(trigger) !== -1;\n }); // set event listeners\n\n this._setEventListeners(this.reference, events, this.options); // title attribute\n\n\n this.$_originalTitle = this.reference.getAttribute('title');\n this.reference.removeAttribute('title');\n this.reference.setAttribute('data-original-title', this.$_originalTitle);\n }\n /**\n * Creates a new tooltip node\n * @memberof Tooltip\n * @private\n * @param {HTMLElement} reference\n * @param {String} template\n * @param {String|HTMLElement|TitleFunction} title\n * @param {Boolean} allowHtml\n * @return {HTMLelement} tooltipNode\n */\n\n }, {\n key: \"_create\",\n value: function _create(reference, template) {\n var _this2 = this;\n\n // create tooltip element\n var tooltipGenerator = window.document.createElement('div');\n tooltipGenerator.innerHTML = template.trim();\n var tooltipNode = tooltipGenerator.childNodes[0]; // add unique ID to our tooltip (needed for accessibility reasons)\n\n tooltipNode.id = this.options.ariaId || \"tooltip_\".concat(Math.random().toString(36).substr(2, 10)); // Initially hide the tooltip\n // The attribute will be switched in a next frame so\n // CSS transitions can play\n\n tooltipNode.setAttribute('aria-hidden', 'true');\n\n if (this.options.autoHide && this.options.trigger.indexOf('hover') !== -1) {\n tooltipNode.addEventListener('mouseenter', function (evt) {\n return _this2._scheduleHide(reference, _this2.options.delay, _this2.options, evt);\n });\n tooltipNode.addEventListener('click', function (evt) {\n return _this2._scheduleHide(reference, _this2.options.delay, _this2.options, evt);\n });\n } // return the generated tooltip node\n\n\n return tooltipNode;\n }\n }, {\n key: \"_setContent\",\n value: function _setContent(content, options) {\n var _this3 = this;\n\n this.asyncContent = false;\n\n this._applyContent(content, options).then(function () {\n if (!_this3.popperInstance) return;\n\n _this3.popperInstance.update();\n });\n }\n }, {\n key: \"_applyContent\",\n value: function _applyContent(title, options) {\n var _this4 = this;\n\n return new Promise(function (resolve, reject) {\n var allowHtml = options.html;\n var rootNode = _this4._tooltipNode;\n if (!rootNode) return;\n var titleNode = rootNode.querySelector(_this4.options.innerSelector);\n\n if (title.nodeType === 1) {\n // if title is a node, append it only if allowHtml is true\n if (allowHtml) {\n while (titleNode.firstChild) {\n titleNode.removeChild(titleNode.firstChild);\n }\n\n titleNode.appendChild(title);\n }\n } else if (typeof title === 'function') {\n // if title is a function, call it and set innerText or innerHtml depending by `allowHtml` value\n var result = title();\n\n if (result && typeof result.then === 'function') {\n _this4.asyncContent = true;\n options.loadingClass && addClasses(rootNode, options.loadingClass);\n\n if (options.loadingContent) {\n _this4._applyContent(options.loadingContent, options);\n }\n\n result.then(function (asyncResult) {\n options.loadingClass && removeClasses(rootNode, options.loadingClass);\n return _this4._applyContent(asyncResult, options);\n }).then(resolve).catch(reject);\n } else {\n _this4._applyContent(result, options).then(resolve).catch(reject);\n }\n\n return;\n } else {\n // if it's just a simple text, set innerText or innerHtml depending by `allowHtml` value\n allowHtml ? titleNode.innerHTML = title : titleNode.innerText = title;\n }\n\n resolve();\n });\n }\n }, {\n key: \"_show\",\n value: function _show(reference, options) {\n if (options && typeof options.container === 'string') {\n var container = document.querySelector(options.container);\n if (!container) return;\n }\n\n clearTimeout(this._disposeTimer);\n options = Object.assign({}, options);\n delete options.offset;\n var updateClasses = true;\n\n if (this._tooltipNode) {\n addClasses(this._tooltipNode, this._classes);\n updateClasses = false;\n }\n\n var result = this._ensureShown(reference, options);\n\n if (updateClasses && this._tooltipNode) {\n addClasses(this._tooltipNode, this._classes);\n }\n\n addClasses(reference, ['v-tooltip-open']);\n return result;\n }\n }, {\n key: \"_ensureShown\",\n value: function _ensureShown(reference, options) {\n var _this5 = this;\n\n // don't show if it's already visible\n if (this._isOpen) {\n return this;\n }\n\n this._isOpen = true;\n openTooltips.push(this); // if the tooltipNode already exists, just show it\n\n if (this._tooltipNode) {\n this._tooltipNode.style.display = '';\n\n this._tooltipNode.setAttribute('aria-hidden', 'false');\n\n this.popperInstance.enableEventListeners();\n this.popperInstance.update();\n\n if (this.asyncContent) {\n this._setContent(options.title, options);\n }\n\n return this;\n } // get title\n\n\n var title = reference.getAttribute('title') || options.title; // don't show tooltip if no title is defined\n\n if (!title) {\n return this;\n } // create tooltip node\n\n\n var tooltipNode = this._create(reference, options.template);\n\n this._tooltipNode = tooltipNode; // Add `aria-describedby` to our reference element for accessibility reasons\n\n reference.setAttribute('aria-describedby', tooltipNode.id); // append tooltip to container\n\n var container = this._findContainer(options.container, reference);\n\n this._append(tooltipNode, container);\n\n var popperOptions = _objectSpread$2(_objectSpread$2({}, options.popperOptions), {}, {\n placement: options.placement\n });\n\n popperOptions.modifiers = _objectSpread$2(_objectSpread$2({}, popperOptions.modifiers), {}, {\n arrow: {\n element: this.options.arrowSelector\n }\n });\n\n if (options.boundariesElement) {\n popperOptions.modifiers.preventOverflow = {\n boundariesElement: options.boundariesElement\n };\n }\n\n this.popperInstance = new Popper(reference, tooltipNode, popperOptions);\n\n this._setContent(title, options); // Fix position\n\n\n requestAnimationFrame(function () {\n if (!_this5._isDisposed && _this5.popperInstance) {\n _this5.popperInstance.update(); // Show the tooltip\n\n\n requestAnimationFrame(function () {\n if (!_this5._isDisposed) {\n _this5._isOpen && tooltipNode.setAttribute('aria-hidden', 'false');\n } else {\n _this5.dispose();\n }\n });\n } else {\n _this5.dispose();\n }\n });\n return this;\n }\n }, {\n key: \"_noLongerOpen\",\n value: function _noLongerOpen() {\n var index = openTooltips.indexOf(this);\n\n if (index !== -1) {\n openTooltips.splice(index, 1);\n }\n }\n }, {\n key: \"_hide\",\n value: function _hide()\n /* reference, options */\n {\n var _this6 = this;\n\n // don't hide if it's already hidden\n if (!this._isOpen) {\n return this;\n }\n\n this._isOpen = false;\n\n this._noLongerOpen(); // hide tooltipNode\n\n\n this._tooltipNode.style.display = 'none';\n\n this._tooltipNode.setAttribute('aria-hidden', 'true');\n\n if (this.popperInstance) {\n this.popperInstance.disableEventListeners();\n }\n\n clearTimeout(this._disposeTimer);\n var disposeTime = directive.options.disposeTimeout;\n\n if (disposeTime !== null) {\n this._disposeTimer = setTimeout(function () {\n if (_this6._tooltipNode) {\n _this6._tooltipNode.removeEventListener('mouseenter', _this6.hide);\n\n _this6._tooltipNode.removeEventListener('click', _this6.hide); // Don't remove popper instance, just the HTML element\n\n\n _this6._removeTooltipNode();\n }\n }, disposeTime);\n }\n\n removeClasses(this.reference, ['v-tooltip-open']);\n return this;\n }\n }, {\n key: \"_removeTooltipNode\",\n value: function _removeTooltipNode() {\n if (!this._tooltipNode) return;\n var parentNode = this._tooltipNode.parentNode;\n\n if (parentNode) {\n parentNode.removeChild(this._tooltipNode);\n this.reference.removeAttribute('aria-describedby');\n }\n\n this._tooltipNode = null;\n }\n }, {\n key: \"_dispose\",\n value: function _dispose() {\n var _this7 = this;\n\n this._isDisposed = true;\n this.reference.removeAttribute('data-original-title');\n\n if (this.$_originalTitle) {\n this.reference.setAttribute('title', this.$_originalTitle);\n } // remove event listeners first to prevent any unexpected behaviour\n\n\n this._events.forEach(function (_ref) {\n var func = _ref.func,\n event = _ref.event;\n\n _this7.reference.removeEventListener(event, func);\n });\n\n this._events = [];\n\n if (this._tooltipNode) {\n this._hide();\n\n this._tooltipNode.removeEventListener('mouseenter', this.hide);\n\n this._tooltipNode.removeEventListener('click', this.hide); // destroy instance\n\n\n this.popperInstance.destroy(); // destroy tooltipNode if removeOnDestroy is not set, as popperInstance.destroy() already removes the element\n\n if (!this.popperInstance.options.removeOnDestroy) {\n this._removeTooltipNode();\n }\n } else {\n this._noLongerOpen();\n }\n\n return this;\n }\n }, {\n key: \"_findContainer\",\n value: function _findContainer(container, reference) {\n // if container is a query, get the relative element\n if (typeof container === 'string') {\n container = window.document.querySelector(container);\n } else if (container === false) {\n // if container is `false`, set it to reference parent\n container = reference.parentNode;\n }\n\n return container;\n }\n /**\n * Append tooltip to container\n * @memberof Tooltip\n * @private\n * @param {HTMLElement} tooltip\n * @param {HTMLElement|String|false} container\n */\n\n }, {\n key: \"_append\",\n value: function _append(tooltipNode, container) {\n container.appendChild(tooltipNode);\n }\n }, {\n key: \"_setEventListeners\",\n value: function _setEventListeners(reference, events, options) {\n var _this8 = this;\n\n var directEvents = [];\n var oppositeEvents = [];\n events.forEach(function (event) {\n switch (event) {\n case 'hover':\n directEvents.push('mouseenter');\n oppositeEvents.push('mouseleave');\n if (_this8.options.hideOnTargetClick) oppositeEvents.push('click');\n break;\n\n case 'focus':\n directEvents.push('focus');\n oppositeEvents.push('blur');\n if (_this8.options.hideOnTargetClick) oppositeEvents.push('click');\n break;\n\n case 'click':\n directEvents.push('click');\n oppositeEvents.push('click');\n break;\n }\n }); // schedule show tooltip\n\n directEvents.forEach(function (event) {\n var func = function func(evt) {\n if (_this8._isOpen === true) {\n return;\n }\n\n evt.usedByTooltip = true;\n\n _this8._scheduleShow(reference, options.delay, options, evt);\n };\n\n _this8._events.push({\n event: event,\n func: func\n });\n\n reference.addEventListener(event, func);\n }); // schedule hide tooltip\n\n oppositeEvents.forEach(function (event) {\n var func = function func(evt) {\n if (evt.usedByTooltip === true) {\n return;\n }\n\n _this8._scheduleHide(reference, options.delay, options, evt);\n };\n\n _this8._events.push({\n event: event,\n func: func\n });\n\n reference.addEventListener(event, func);\n });\n }\n }, {\n key: \"_onDocumentTouch\",\n value: function _onDocumentTouch(event) {\n if (this._enableDocumentTouch) {\n this._scheduleHide(this.reference, this.options.delay, this.options, event);\n }\n }\n }, {\n key: \"_scheduleShow\",\n value: function _scheduleShow(reference, delay, options\n /*, evt */\n ) {\n var _this9 = this;\n\n // defaults to 0\n var computedDelay = delay && delay.show || delay || 0;\n clearTimeout(this._scheduleTimer);\n this._scheduleTimer = window.setTimeout(function () {\n return _this9._show(reference, options);\n }, computedDelay);\n }\n }, {\n key: \"_scheduleHide\",\n value: function _scheduleHide(reference, delay, options, evt) {\n var _this10 = this;\n\n // defaults to 0\n var computedDelay = delay && delay.hide || delay || 0;\n clearTimeout(this._scheduleTimer);\n this._scheduleTimer = window.setTimeout(function () {\n if (_this10._isOpen === false) {\n return;\n }\n\n if (!_this10._tooltipNode.ownerDocument.body.contains(_this10._tooltipNode)) {\n return;\n } // if we are hiding because of a mouseleave, we must check that the new\n // reference isn't the tooltip, because in this case we don't want to hide it\n\n\n if (evt.type === 'mouseleave') {\n var isSet = _this10._setTooltipNodeEvent(evt, reference, delay, options); // if we set the new event, don't hide the tooltip yet\n // the new event will take care to hide it if necessary\n\n\n if (isSet) {\n return;\n }\n }\n\n _this10._hide(reference, options);\n }, computedDelay);\n }\n }]);\n\n return Tooltip;\n}(); // Hide tooltips on touch devices\n\nif (typeof document !== 'undefined') {\n document.addEventListener('touchstart', function (event) {\n for (var i = 0; i < openTooltips.length; i++) {\n openTooltips[i]._onDocumentTouch(event);\n }\n }, supportsPassive ? {\n passive: true,\n capture: true\n } : true);\n}\n/**\n * Placement function, its context is the Tooltip instance.\n * @memberof Tooltip\n * @callback PlacementFunction\n * @param {HTMLElement} tooltip - tooltip DOM node.\n * @param {HTMLElement} reference - reference DOM node.\n * @return {String} placement - One of the allowed placement options.\n */\n\n/**\n * Title function, its context is the Tooltip instance.\n * @memberof Tooltip\n * @callback TitleFunction\n * @return {String} placement - The desired title.\n */\n\nfunction ownKeys$1(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$1(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$1(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$1(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\nvar state = {\n enabled: true\n};\nvar positions = ['top', 'top-start', 'top-end', 'right', 'right-start', 'right-end', 'bottom', 'bottom-start', 'bottom-end', 'left', 'left-start', 'left-end'];\nvar defaultOptions = {\n // Default tooltip placement relative to target element\n defaultPlacement: 'top',\n // Default CSS classes applied to the tooltip element\n defaultClass: 'vue-tooltip-theme',\n // Default CSS classes applied to the target element of the tooltip\n defaultTargetClass: 'has-tooltip',\n // Is the content HTML by default?\n defaultHtml: true,\n // Default HTML template of the tooltip element\n // It must include `tooltip-arrow` & `tooltip-inner` CSS classes (can be configured, see below)\n // Change if the classes conflict with other libraries (for example bootstrap)\n defaultTemplate: '
',\n // Selector used to get the arrow element in the tooltip template\n defaultArrowSelector: '.tooltip-arrow, .tooltip__arrow',\n // Selector used to get the inner content element in the tooltip template\n defaultInnerSelector: '.tooltip-inner, .tooltip__inner',\n // Delay (ms)\n defaultDelay: 0,\n // Default events that trigger the tooltip\n defaultTrigger: 'hover focus',\n // Default position offset (px)\n defaultOffset: 0,\n // Default container where the tooltip will be appended\n defaultContainer: 'body',\n defaultBoundariesElement: undefined,\n defaultPopperOptions: {},\n // Class added when content is loading\n defaultLoadingClass: 'tooltip-loading',\n // Displayed when tooltip content is loading\n defaultLoadingContent: '...',\n // Hide on mouseover tooltip\n autoHide: true,\n // Close tooltip on click on tooltip target?\n defaultHideOnTargetClick: true,\n // Auto destroy tooltip DOM nodes (ms)\n disposeTimeout: 5000,\n // Options for popover\n popover: {\n defaultPlacement: 'bottom',\n // Use the `popoverClass` prop for theming\n defaultClass: 'vue-popover-theme',\n // Base class (change if conflicts with other libraries)\n defaultBaseClass: 'tooltip popover',\n // Wrapper class (contains arrow and inner)\n defaultWrapperClass: 'wrapper',\n // Inner content class\n defaultInnerClass: 'tooltip-inner popover-inner',\n // Arrow class\n defaultArrowClass: 'tooltip-arrow popover-arrow',\n // Class added when popover is open\n defaultOpenClass: 'open',\n defaultDelay: 0,\n defaultTrigger: 'click',\n defaultOffset: 0,\n defaultContainer: 'body',\n defaultBoundariesElement: undefined,\n defaultPopperOptions: {},\n // Hides if clicked outside of popover\n defaultAutoHide: true,\n // Update popper on content resize\n defaultHandleResize: true\n }\n};\nfunction getOptions(options) {\n var result = {\n placement: typeof options.placement !== 'undefined' ? options.placement : directive.options.defaultPlacement,\n delay: typeof options.delay !== 'undefined' ? options.delay : directive.options.defaultDelay,\n html: typeof options.html !== 'undefined' ? options.html : directive.options.defaultHtml,\n template: typeof options.template !== 'undefined' ? options.template : directive.options.defaultTemplate,\n arrowSelector: typeof options.arrowSelector !== 'undefined' ? options.arrowSelector : directive.options.defaultArrowSelector,\n innerSelector: typeof options.innerSelector !== 'undefined' ? options.innerSelector : directive.options.defaultInnerSelector,\n trigger: typeof options.trigger !== 'undefined' ? options.trigger : directive.options.defaultTrigger,\n offset: typeof options.offset !== 'undefined' ? options.offset : directive.options.defaultOffset,\n container: typeof options.container !== 'undefined' ? options.container : directive.options.defaultContainer,\n boundariesElement: typeof options.boundariesElement !== 'undefined' ? options.boundariesElement : directive.options.defaultBoundariesElement,\n autoHide: typeof options.autoHide !== 'undefined' ? options.autoHide : directive.options.autoHide,\n hideOnTargetClick: typeof options.hideOnTargetClick !== 'undefined' ? options.hideOnTargetClick : directive.options.defaultHideOnTargetClick,\n loadingClass: typeof options.loadingClass !== 'undefined' ? options.loadingClass : directive.options.defaultLoadingClass,\n loadingContent: typeof options.loadingContent !== 'undefined' ? options.loadingContent : directive.options.defaultLoadingContent,\n popperOptions: _objectSpread$1({}, typeof options.popperOptions !== 'undefined' ? options.popperOptions : directive.options.defaultPopperOptions)\n };\n\n if (result.offset) {\n var typeofOffset = _typeof(result.offset);\n\n var offset = result.offset; // One value -> switch\n\n if (typeofOffset === 'number' || typeofOffset === 'string' && offset.indexOf(',') === -1) {\n offset = \"0, \".concat(offset);\n }\n\n if (!result.popperOptions.modifiers) {\n result.popperOptions.modifiers = {};\n }\n\n result.popperOptions.modifiers.offset = {\n offset: offset\n };\n }\n\n if (result.trigger && result.trigger.indexOf('click') !== -1) {\n result.hideOnTargetClick = false;\n }\n\n return result;\n}\nfunction getPlacement(value, modifiers) {\n var placement = value.placement;\n\n for (var i = 0; i < positions.length; i++) {\n var pos = positions[i];\n\n if (modifiers[pos]) {\n placement = pos;\n }\n }\n\n return placement;\n}\nfunction getContent(value) {\n var type = _typeof(value);\n\n if (type === 'string') {\n return value;\n } else if (value && type === 'object') {\n return value.content;\n } else {\n return false;\n }\n}\nfunction createTooltip(el, value) {\n var modifiers = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var content = getContent(value);\n var classes = typeof value.classes !== 'undefined' ? value.classes : directive.options.defaultClass;\n\n var opts = _objectSpread$1({\n title: content\n }, getOptions(_objectSpread$1(_objectSpread$1({}, _typeof(value) === 'object' ? value : {}), {}, {\n placement: getPlacement(value, modifiers)\n })));\n\n var tooltip = el._tooltip = new Tooltip(el, opts);\n tooltip.setClasses(classes);\n tooltip._vueEl = el; // Class on target\n\n var targetClasses = typeof value.targetClasses !== 'undefined' ? value.targetClasses : directive.options.defaultTargetClass;\n el._tooltipTargetClasses = targetClasses;\n addClasses(el, targetClasses);\n return tooltip;\n}\nfunction destroyTooltip(el) {\n if (el._tooltip) {\n el._tooltip.dispose();\n\n delete el._tooltip;\n delete el._tooltipOldShow;\n }\n\n if (el._tooltipTargetClasses) {\n removeClasses(el, el._tooltipTargetClasses);\n delete el._tooltipTargetClasses;\n }\n}\nfunction bind(el, _ref) {\n var value = _ref.value;\n _ref.oldValue;\n var modifiers = _ref.modifiers;\n var content = getContent(value);\n\n if (!content || !state.enabled) {\n destroyTooltip(el);\n } else {\n var tooltip;\n\n if (el._tooltip) {\n tooltip = el._tooltip; // Content\n\n tooltip.setContent(content); // Options\n\n tooltip.setOptions(_objectSpread$1(_objectSpread$1({}, value), {}, {\n placement: getPlacement(value, modifiers)\n }));\n } else {\n tooltip = createTooltip(el, value, modifiers);\n } // Manual show\n\n\n if (typeof value.show !== 'undefined' && value.show !== el._tooltipOldShow) {\n el._tooltipOldShow = value.show;\n value.show ? tooltip.show() : tooltip.hide();\n }\n }\n}\nvar directive = {\n options: defaultOptions,\n bind: bind,\n update: bind,\n unbind: function unbind(el) {\n destroyTooltip(el);\n }\n};\n\nfunction addListeners(el) {\n el.addEventListener('click', onClick);\n el.addEventListener('touchstart', onTouchStart, supportsPassive ? {\n passive: true\n } : false);\n}\n\nfunction removeListeners(el) {\n el.removeEventListener('click', onClick);\n el.removeEventListener('touchstart', onTouchStart);\n el.removeEventListener('touchend', onTouchEnd);\n el.removeEventListener('touchcancel', onTouchCancel);\n}\n\nfunction onClick(event) {\n var el = event.currentTarget;\n event.closePopover = !el.$_vclosepopover_touch;\n event.closeAllPopover = el.$_closePopoverModifiers && !!el.$_closePopoverModifiers.all;\n}\n\nfunction onTouchStart(event) {\n if (event.changedTouches.length === 1) {\n var el = event.currentTarget;\n el.$_vclosepopover_touch = true;\n var touch = event.changedTouches[0];\n el.$_vclosepopover_touchPoint = touch;\n el.addEventListener('touchend', onTouchEnd);\n el.addEventListener('touchcancel', onTouchCancel);\n }\n}\n\nfunction onTouchEnd(event) {\n var el = event.currentTarget;\n el.$_vclosepopover_touch = false;\n\n if (event.changedTouches.length === 1) {\n var touch = event.changedTouches[0];\n var firstTouch = el.$_vclosepopover_touchPoint;\n event.closePopover = Math.abs(touch.screenY - firstTouch.screenY) < 20 && Math.abs(touch.screenX - firstTouch.screenX) < 20;\n event.closeAllPopover = el.$_closePopoverModifiers && !!el.$_closePopoverModifiers.all;\n }\n}\n\nfunction onTouchCancel(event) {\n var el = event.currentTarget;\n el.$_vclosepopover_touch = false;\n}\n\nvar vclosepopover = {\n bind: function bind(el, _ref) {\n var value = _ref.value,\n modifiers = _ref.modifiers;\n el.$_closePopoverModifiers = modifiers;\n\n if (typeof value === 'undefined' || value) {\n addListeners(el);\n }\n },\n update: function update(el, _ref2) {\n var value = _ref2.value,\n oldValue = _ref2.oldValue,\n modifiers = _ref2.modifiers;\n el.$_closePopoverModifiers = modifiers;\n\n if (value !== oldValue) {\n if (typeof value === 'undefined' || value) {\n addListeners(el);\n } else {\n removeListeners(el);\n }\n }\n },\n unbind: function unbind(el) {\n removeListeners(el);\n }\n};\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction getDefault(key) {\n var value = directive.options.popover[key];\n\n if (typeof value === 'undefined') {\n return directive.options[key];\n }\n\n return value;\n}\n\nvar isIOS = false;\n\nif (typeof window !== 'undefined' && typeof navigator !== 'undefined') {\n isIOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;\n}\n\nvar openPopovers = [];\n\nvar Element = function Element() {};\n\nif (typeof window !== 'undefined') {\n Element = window.Element;\n}\n\nvar script = {\n name: 'VPopover',\n components: {\n ResizeObserver: ResizeObserver\n },\n props: {\n open: {\n type: Boolean,\n default: false\n },\n disabled: {\n type: Boolean,\n default: false\n },\n placement: {\n type: String,\n default: function _default() {\n return getDefault('defaultPlacement');\n }\n },\n delay: {\n type: [String, Number, Object],\n default: function _default() {\n return getDefault('defaultDelay');\n }\n },\n offset: {\n type: [String, Number],\n default: function _default() {\n return getDefault('defaultOffset');\n }\n },\n trigger: {\n type: String,\n default: function _default() {\n return getDefault('defaultTrigger');\n }\n },\n container: {\n type: [String, Object, Element, Boolean],\n default: function _default() {\n return getDefault('defaultContainer');\n }\n },\n boundariesElement: {\n type: [String, Element],\n default: function _default() {\n return getDefault('defaultBoundariesElement');\n }\n },\n popperOptions: {\n type: Object,\n default: function _default() {\n return getDefault('defaultPopperOptions');\n }\n },\n popoverClass: {\n type: [String, Array],\n default: function _default() {\n return getDefault('defaultClass');\n }\n },\n popoverBaseClass: {\n type: [String, Array],\n default: function _default() {\n return directive.options.popover.defaultBaseClass;\n }\n },\n popoverInnerClass: {\n type: [String, Array],\n default: function _default() {\n return directive.options.popover.defaultInnerClass;\n }\n },\n popoverWrapperClass: {\n type: [String, Array],\n default: function _default() {\n return directive.options.popover.defaultWrapperClass;\n }\n },\n popoverArrowClass: {\n type: [String, Array],\n default: function _default() {\n return directive.options.popover.defaultArrowClass;\n }\n },\n autoHide: {\n type: Boolean,\n default: function _default() {\n return directive.options.popover.defaultAutoHide;\n }\n },\n handleResize: {\n type: Boolean,\n default: function _default() {\n return directive.options.popover.defaultHandleResize;\n }\n },\n openGroup: {\n type: String,\n default: null\n },\n openClass: {\n type: [String, Array],\n default: function _default() {\n return directive.options.popover.defaultOpenClass;\n }\n },\n ariaId: {\n default: null\n }\n },\n data: function data() {\n return {\n isOpen: false,\n id: Math.random().toString(36).substr(2, 10)\n };\n },\n computed: {\n cssClass: function cssClass() {\n return _defineProperty({}, this.openClass, this.isOpen);\n },\n popoverId: function popoverId() {\n return \"popover_\".concat(this.ariaId != null ? this.ariaId : this.id);\n }\n },\n watch: {\n open: function open(val) {\n if (val) {\n this.show();\n } else {\n this.hide();\n }\n },\n disabled: function disabled(val, oldVal) {\n if (val !== oldVal) {\n if (val) {\n this.hide();\n } else if (this.open) {\n this.show();\n }\n }\n },\n container: function container(val) {\n if (this.isOpen && this.popperInstance) {\n var popoverNode = this.$refs.popover;\n var reference = this.$refs.trigger;\n var container = this.$_findContainer(this.container, reference);\n\n if (!container) {\n console.warn('No container for popover', this);\n return;\n }\n\n container.appendChild(popoverNode);\n this.popperInstance.scheduleUpdate();\n }\n },\n trigger: function trigger(val) {\n this.$_removeEventListeners();\n this.$_addEventListeners();\n },\n placement: function placement(val) {\n var _this = this;\n\n this.$_updatePopper(function () {\n _this.popperInstance.options.placement = val;\n });\n },\n offset: '$_restartPopper',\n boundariesElement: '$_restartPopper',\n popperOptions: {\n handler: '$_restartPopper',\n deep: true\n }\n },\n created: function created() {\n this.$_isDisposed = false;\n this.$_mounted = false;\n this.$_events = [];\n this.$_preventOpen = false;\n },\n mounted: function mounted() {\n var popoverNode = this.$refs.popover;\n popoverNode.parentNode && popoverNode.parentNode.removeChild(popoverNode);\n this.$_init();\n\n if (this.open) {\n this.show();\n }\n },\n deactivated: function deactivated() {\n this.hide();\n },\n beforeDestroy: function beforeDestroy() {\n this.dispose();\n },\n methods: {\n show: function show() {\n var _this2 = this;\n\n var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n event = _ref2.event;\n _ref2.skipDelay;\n var _ref2$force = _ref2.force,\n force = _ref2$force === void 0 ? false : _ref2$force;\n\n if (force || !this.disabled) {\n this.$_scheduleShow(event);\n this.$emit('show');\n }\n\n this.$emit('update:open', true);\n this.$_beingShowed = true;\n requestAnimationFrame(function () {\n _this2.$_beingShowed = false;\n });\n },\n hide: function hide() {\n var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n event = _ref3.event;\n _ref3.skipDelay;\n\n this.$_scheduleHide(event);\n this.$emit('hide');\n this.$emit('update:open', false);\n },\n dispose: function dispose() {\n this.$_isDisposed = true;\n this.$_removeEventListeners();\n this.hide({\n skipDelay: true\n });\n\n if (this.popperInstance) {\n this.popperInstance.destroy(); // destroy tooltipNode if removeOnDestroy is not set, as popperInstance.destroy() already removes the element\n\n if (!this.popperInstance.options.removeOnDestroy) {\n var popoverNode = this.$refs.popover;\n popoverNode.parentNode && popoverNode.parentNode.removeChild(popoverNode);\n }\n }\n\n this.$_mounted = false;\n this.popperInstance = null;\n this.isOpen = false;\n this.$emit('dispose');\n },\n $_init: function $_init() {\n if (this.trigger.indexOf('manual') === -1) {\n this.$_addEventListeners();\n }\n },\n $_show: function $_show() {\n var _this3 = this;\n\n var reference = this.$refs.trigger;\n var popoverNode = this.$refs.popover;\n clearTimeout(this.$_disposeTimer); // Already open\n\n if (this.isOpen) {\n return;\n } // Popper is already initialized\n\n\n if (this.popperInstance) {\n this.isOpen = true;\n this.popperInstance.enableEventListeners();\n this.popperInstance.scheduleUpdate();\n }\n\n if (!this.$_mounted) {\n var container = this.$_findContainer(this.container, reference);\n\n if (!container) {\n console.warn('No container for popover', this);\n return;\n }\n\n container.appendChild(popoverNode);\n this.$_mounted = true;\n this.isOpen = false;\n\n if (this.popperInstance) {\n requestAnimationFrame(function () {\n if (!_this3.hidden) {\n _this3.isOpen = true;\n }\n });\n }\n }\n\n if (!this.popperInstance) {\n var popperOptions = _objectSpread(_objectSpread({}, this.popperOptions), {}, {\n placement: this.placement\n });\n\n popperOptions.modifiers = _objectSpread(_objectSpread({}, popperOptions.modifiers), {}, {\n arrow: _objectSpread(_objectSpread({}, popperOptions.modifiers && popperOptions.modifiers.arrow), {}, {\n element: this.$refs.arrow\n })\n });\n\n if (this.offset) {\n var offset = this.$_getOffset();\n popperOptions.modifiers.offset = _objectSpread(_objectSpread({}, popperOptions.modifiers && popperOptions.modifiers.offset), {}, {\n offset: offset\n });\n }\n\n if (this.boundariesElement) {\n popperOptions.modifiers.preventOverflow = _objectSpread(_objectSpread({}, popperOptions.modifiers && popperOptions.modifiers.preventOverflow), {}, {\n boundariesElement: this.boundariesElement\n });\n }\n\n this.popperInstance = new Popper(reference, popoverNode, popperOptions); // Fix position\n\n requestAnimationFrame(function () {\n if (_this3.hidden) {\n _this3.hidden = false;\n\n _this3.$_hide();\n\n return;\n }\n\n if (!_this3.$_isDisposed && _this3.popperInstance) {\n _this3.popperInstance.scheduleUpdate(); // Show the tooltip\n\n\n requestAnimationFrame(function () {\n if (_this3.hidden) {\n _this3.hidden = false;\n\n _this3.$_hide();\n\n return;\n }\n\n if (!_this3.$_isDisposed) {\n _this3.isOpen = true;\n } else {\n _this3.dispose();\n }\n });\n } else {\n _this3.dispose();\n }\n });\n }\n\n var openGroup = this.openGroup;\n\n if (openGroup) {\n var popover;\n\n for (var i = 0; i < openPopovers.length; i++) {\n popover = openPopovers[i];\n\n if (popover.openGroup !== openGroup) {\n popover.hide();\n popover.$emit('close-group');\n }\n }\n }\n\n openPopovers.push(this);\n this.$emit('apply-show');\n },\n $_hide: function $_hide() {\n var _this4 = this;\n\n // Already hidden\n if (!this.isOpen) {\n return;\n }\n\n var index = openPopovers.indexOf(this);\n\n if (index !== -1) {\n openPopovers.splice(index, 1);\n }\n\n this.isOpen = false;\n\n if (this.popperInstance) {\n this.popperInstance.disableEventListeners();\n }\n\n clearTimeout(this.$_disposeTimer);\n var disposeTime = directive.options.popover.disposeTimeout || directive.options.disposeTimeout;\n\n if (disposeTime !== null) {\n this.$_disposeTimer = setTimeout(function () {\n var popoverNode = _this4.$refs.popover;\n\n if (popoverNode) {\n // Don't remove popper instance, just the HTML element\n popoverNode.parentNode && popoverNode.parentNode.removeChild(popoverNode);\n _this4.$_mounted = false;\n }\n }, disposeTime);\n }\n\n this.$emit('apply-hide');\n },\n $_findContainer: function $_findContainer(container, reference) {\n // if container is a query, get the relative element\n if (typeof container === 'string') {\n container = window.document.querySelector(container);\n } else if (container === false) {\n // if container is `false`, set it to reference parent\n container = reference.parentNode;\n }\n\n return container;\n },\n $_getOffset: function $_getOffset() {\n var typeofOffset = _typeof(this.offset);\n\n var offset = this.offset; // One value -> switch\n\n if (typeofOffset === 'number' || typeofOffset === 'string' && offset.indexOf(',') === -1) {\n offset = \"0, \".concat(offset);\n }\n\n return offset;\n },\n $_addEventListeners: function $_addEventListeners() {\n var _this5 = this;\n\n var reference = this.$refs.trigger;\n var directEvents = [];\n var oppositeEvents = [];\n var events = typeof this.trigger === 'string' ? this.trigger.split(' ').filter(function (trigger) {\n return ['click', 'hover', 'focus'].indexOf(trigger) !== -1;\n }) : [];\n events.forEach(function (event) {\n switch (event) {\n case 'hover':\n directEvents.push('mouseenter');\n oppositeEvents.push('mouseleave');\n break;\n\n case 'focus':\n directEvents.push('focus');\n oppositeEvents.push('blur');\n break;\n\n case 'click':\n directEvents.push('click');\n oppositeEvents.push('click');\n break;\n }\n }); // schedule show tooltip\n\n directEvents.forEach(function (event) {\n var func = function func(event) {\n if (_this5.isOpen) {\n return;\n }\n\n event.usedByTooltip = true;\n !_this5.$_preventOpen && _this5.show({\n event: event\n });\n _this5.hidden = false;\n };\n\n _this5.$_events.push({\n event: event,\n func: func\n });\n\n reference.addEventListener(event, func);\n }); // schedule hide tooltip\n\n oppositeEvents.forEach(function (event) {\n var func = function func(event) {\n if (event.usedByTooltip) {\n return;\n }\n\n _this5.hide({\n event: event\n });\n\n _this5.hidden = true;\n };\n\n _this5.$_events.push({\n event: event,\n func: func\n });\n\n reference.addEventListener(event, func);\n });\n },\n $_scheduleShow: function $_scheduleShow() {\n var skipDelay = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n clearTimeout(this.$_scheduleTimer);\n\n if (skipDelay) {\n this.$_show();\n } else {\n // defaults to 0\n var computedDelay = parseInt(this.delay && this.delay.show || this.delay || 0);\n this.$_scheduleTimer = setTimeout(this.$_show.bind(this), computedDelay);\n }\n },\n $_scheduleHide: function $_scheduleHide() {\n var _this6 = this;\n\n var event = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n var skipDelay = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n clearTimeout(this.$_scheduleTimer);\n\n if (skipDelay) {\n this.$_hide();\n } else {\n // defaults to 0\n var computedDelay = parseInt(this.delay && this.delay.hide || this.delay || 0);\n this.$_scheduleTimer = setTimeout(function () {\n if (!_this6.isOpen) {\n return;\n } // if we are hiding because of a mouseleave, we must check that the new\n // reference isn't the tooltip, because in this case we don't want to hide it\n\n\n if (event && event.type === 'mouseleave') {\n var isSet = _this6.$_setTooltipNodeEvent(event); // if we set the new event, don't hide the tooltip yet\n // the new event will take care to hide it if necessary\n\n\n if (isSet) {\n return;\n }\n }\n\n _this6.$_hide();\n }, computedDelay);\n }\n },\n $_setTooltipNodeEvent: function $_setTooltipNodeEvent(event) {\n var _this7 = this;\n\n var reference = this.$refs.trigger;\n var popoverNode = this.$refs.popover;\n var relatedreference = event.relatedreference || event.toElement || event.relatedTarget;\n\n var callback = function callback(event2) {\n var relatedreference2 = event2.relatedreference || event2.toElement || event2.relatedTarget; // Remove event listener after call\n\n popoverNode.removeEventListener(event.type, callback); // If the new reference is not the reference element\n\n if (!reference.contains(relatedreference2)) {\n // Schedule to hide tooltip\n _this7.hide({\n event: event2\n });\n }\n };\n\n if (popoverNode.contains(relatedreference)) {\n // listen to mouseleave on the tooltip element to be able to hide the tooltip\n popoverNode.addEventListener(event.type, callback);\n return true;\n }\n\n return false;\n },\n $_removeEventListeners: function $_removeEventListeners() {\n var reference = this.$refs.trigger;\n this.$_events.forEach(function (_ref4) {\n var func = _ref4.func,\n event = _ref4.event;\n reference.removeEventListener(event, func);\n });\n this.$_events = [];\n },\n $_updatePopper: function $_updatePopper(cb) {\n if (this.popperInstance) {\n cb();\n if (this.isOpen) this.popperInstance.scheduleUpdate();\n }\n },\n $_restartPopper: function $_restartPopper() {\n if (this.popperInstance) {\n var isOpen = this.isOpen;\n this.dispose();\n this.$_isDisposed = false;\n this.$_init();\n\n if (isOpen) {\n this.show({\n skipDelay: true,\n force: true\n });\n }\n }\n },\n $_handleGlobalClose: function $_handleGlobalClose(event) {\n var _this8 = this;\n\n var touch = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n if (this.$_beingShowed) return;\n this.hide({\n event: event\n });\n\n if (event.closePopover) {\n this.$emit('close-directive');\n } else {\n this.$emit('auto-hide');\n }\n\n if (touch) {\n this.$_preventOpen = true;\n setTimeout(function () {\n _this8.$_preventOpen = false;\n }, 300);\n }\n },\n $_handleResize: function $_handleResize() {\n if (this.isOpen && this.popperInstance) {\n this.popperInstance.scheduleUpdate();\n this.$emit('resize');\n }\n }\n }\n};\n\nif (typeof document !== 'undefined' && typeof window !== 'undefined') {\n if (isIOS) {\n document.addEventListener('touchend', handleGlobalTouchend, supportsPassive ? {\n passive: true,\n capture: true\n } : true);\n } else {\n window.addEventListener('click', handleGlobalClick, true);\n }\n}\n\nfunction handleGlobalClick(event) {\n handleGlobalClose(event);\n}\n\nfunction handleGlobalTouchend(event) {\n handleGlobalClose(event, true);\n}\n\nfunction handleGlobalClose(event) {\n var touch = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var _loop = function _loop(i) {\n var popover = openPopovers[i];\n\n if (popover.$refs.popover) {\n var contains = popover.$refs.popover.contains(event.target);\n requestAnimationFrame(function () {\n if (event.closeAllPopover || event.closePopover && contains || popover.autoHide && !contains) {\n popover.$_handleGlobalClose(event, touch);\n }\n });\n }\n };\n\n // Delay so that close directive has time to set values\n for (var i = 0; i < openPopovers.length; i++) {\n _loop(i);\n }\n}\n\nfunction normalizeComponent(template, style, script, scopeId, isFunctionalTemplate, moduleIdentifier /* server only */, shadowMode, createInjector, createInjectorSSR, createInjectorShadow) {\r\n if (typeof shadowMode !== 'boolean') {\r\n createInjectorSSR = createInjector;\r\n createInjector = shadowMode;\r\n shadowMode = false;\r\n }\r\n // Vue.extend constructor export interop.\r\n const options = typeof script === 'function' ? script.options : script;\r\n // render functions\r\n if (template && template.render) {\r\n options.render = template.render;\r\n options.staticRenderFns = template.staticRenderFns;\r\n options._compiled = true;\r\n // functional template\r\n if (isFunctionalTemplate) {\r\n options.functional = true;\r\n }\r\n }\r\n // scopedId\r\n if (scopeId) {\r\n options._scopeId = scopeId;\r\n }\r\n let hook;\r\n if (moduleIdentifier) {\r\n // server build\r\n hook = function (context) {\r\n // 2.3 injection\r\n context =\r\n context || // cached call\r\n (this.$vnode && this.$vnode.ssrContext) || // stateful\r\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext); // functional\r\n // 2.2 with runInNewContext: true\r\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\r\n context = __VUE_SSR_CONTEXT__;\r\n }\r\n // inject component styles\r\n if (style) {\r\n style.call(this, createInjectorSSR(context));\r\n }\r\n // register component module identifier for async chunk inference\r\n if (context && context._registeredComponents) {\r\n context._registeredComponents.add(moduleIdentifier);\r\n }\r\n };\r\n // used by ssr in case component is cached and beforeCreate\r\n // never gets called\r\n options._ssrRegister = hook;\r\n }\r\n else if (style) {\r\n hook = shadowMode\r\n ? function (context) {\r\n style.call(this, createInjectorShadow(context, this.$root.$options.shadowRoot));\r\n }\r\n : function (context) {\r\n style.call(this, createInjector(context));\r\n };\r\n }\r\n if (hook) {\r\n if (options.functional) {\r\n // register for functional component in vue file\r\n const originalRender = options.render;\r\n options.render = function renderWithStyleInjection(h, context) {\r\n hook.call(context);\r\n return originalRender(h, context);\r\n };\r\n }\r\n else {\r\n // inject component registration as beforeCreate hook\r\n const existing = options.beforeCreate;\r\n options.beforeCreate = existing ? [].concat(existing, hook) : [hook];\r\n }\r\n }\r\n return script;\r\n}\n\n/* script */\nvar __vue_script__ = script;\n/* template */\n\nvar __vue_render__ = function __vue_render__() {\n var _vm = this;\n\n var _h = _vm.$createElement;\n\n var _c = _vm._self._c || _h;\n\n return _c(\"div\", {\n staticClass: \"v-popover\",\n class: _vm.cssClass\n }, [_c(\"div\", {\n ref: \"trigger\",\n staticClass: \"trigger\",\n staticStyle: {\n display: \"inline-block\"\n },\n attrs: {\n \"aria-describedby\": _vm.isOpen ? _vm.popoverId : undefined,\n tabindex: _vm.trigger.indexOf(\"focus\") !== -1 ? 0 : undefined\n }\n }, [_vm._t(\"default\")], 2), _vm._v(\" \"), _c(\"div\", {\n ref: \"popover\",\n class: [_vm.popoverBaseClass, _vm.popoverClass, _vm.cssClass],\n style: {\n visibility: _vm.isOpen ? \"visible\" : \"hidden\"\n },\n attrs: {\n id: _vm.popoverId,\n \"aria-hidden\": _vm.isOpen ? \"false\" : \"true\",\n tabindex: _vm.autoHide ? 0 : undefined\n },\n on: {\n keyup: function keyup($event) {\n if (!$event.type.indexOf(\"key\") && _vm._k($event.keyCode, \"esc\", 27, $event.key, [\"Esc\", \"Escape\"])) {\n return null;\n }\n\n _vm.autoHide && _vm.hide();\n }\n }\n }, [_c(\"div\", {\n class: _vm.popoverWrapperClass\n }, [_c(\"div\", {\n ref: \"inner\",\n class: _vm.popoverInnerClass,\n staticStyle: {\n position: \"relative\"\n }\n }, [_c(\"div\", [_vm._t(\"popover\", null, {\n isOpen: _vm.isOpen\n })], 2), _vm._v(\" \"), _vm.handleResize ? _c(\"ResizeObserver\", {\n on: {\n notify: _vm.$_handleResize\n }\n }) : _vm._e()], 1), _vm._v(\" \"), _c(\"div\", {\n ref: \"arrow\",\n class: _vm.popoverArrowClass\n })])])]);\n};\n\nvar __vue_staticRenderFns__ = [];\n__vue_render__._withStripped = true;\n/* style */\n\nvar __vue_inject_styles__ = undefined;\n/* scoped */\n\nvar __vue_scope_id__ = undefined;\n/* module identifier */\n\nvar __vue_module_identifier__ = undefined;\n/* functional template */\n\nvar __vue_is_functional_template__ = false;\n/* style inject */\n\n/* style inject SSR */\n\n/* style inject shadow dom */\n\nvar __vue_component__ = /*#__PURE__*/normalizeComponent({\n render: __vue_render__,\n staticRenderFns: __vue_staticRenderFns__\n}, __vue_inject_styles__, __vue_script__, __vue_scope_id__, __vue_is_functional_template__, __vue_module_identifier__, false, undefined, undefined, undefined);\n\nfunction styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nvar css_248z = \".resize-observer[data-v-8859cc6c]{position:absolute;top:0;left:0;z-index:-1;width:100%;height:100%;border:none;background-color:transparent;pointer-events:none;display:block;overflow:hidden;opacity:0}.resize-observer[data-v-8859cc6c] object{display:block;position:absolute;top:0;left:0;height:100%;width:100%;overflow:hidden;pointer-events:none;z-index:-1}\";\nstyleInject(css_248z);\n\nfunction install(Vue) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (install.installed) return;\n install.installed = true;\n var finalOptions = {};\n merge(finalOptions, defaultOptions, options);\n plugin.options = finalOptions;\n directive.options = finalOptions;\n Vue.directive('tooltip', directive);\n Vue.directive('close-popover', vclosepopover);\n Vue.component('VPopover', __vue_component__);\n}\nvar VTooltip = directive;\nvar VClosePopover = vclosepopover;\nvar VPopover = __vue_component__;\nvar plugin = {\n install: install,\n\n get enabled() {\n return state.enabled;\n },\n\n set enabled(value) {\n state.enabled = value;\n }\n\n}; // Auto-install\n\nvar GlobalVue = null;\n\nif (typeof window !== 'undefined') {\n GlobalVue = window.Vue;\n} else if (typeof global !== 'undefined') {\n GlobalVue = global.Vue;\n}\n\nif (GlobalVue) {\n GlobalVue.use(plugin);\n}\n\nexport default plugin;\nexport { VClosePopover, VPopover, VTooltip, createTooltip, destroyTooltip, install };\n","function _typeof(e){return _typeof=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},_typeof(e)}function plugin(e,n){if(!e.vueAxiosInstalled){var o=isAxiosLike(n)?migrateToMultipleInstances(n):n;if(isValidConfig(o)){var t=getVueVersion(e);if(t){var i=t<3?registerOnVue2:registerOnVue3;Object.keys(o).forEach((function(n){i(e,n,o[n])})),e.vueAxiosInstalled=!0}else console.error(\"[vue-axios] unknown Vue version\")}else console.error(\"[vue-axios] configuration is invalid, expected options are either or { : }\")}}function registerOnVue2(e,n,o){Object.defineProperty(e.prototype,n,{get:function(){return o}}),e[n]=o}function registerOnVue3(e,n,o){e.config.globalProperties[n]=o,e[n]=o}function isAxiosLike(e){return e&&\"function\"==typeof e.get&&\"function\"==typeof e.post}function migrateToMultipleInstances(e){return{axios:e,$http:e}}function isValidConfig(e){return\"object\"===_typeof(e)&&Object.keys(e).every((function(n){return isAxiosLike(e[n])}))}function getVueVersion(e){return e&&e.version&&Number(e.version.split(\".\")[0])}\"object\"==(\"undefined\"==typeof exports?\"undefined\":_typeof(exports))?module.exports=plugin:\"function\"==typeof define&&define.amd?define([],(function(){return plugin})):window.Vue&&window.axios&&window.Vue.use&&Vue.use(plugin,window.axios);export{plugin as default};","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// runtime helper for setting properties on components\n// in a tree-shakable way\nexports.default = (sfc, props) => {\n const target = sfc.__vccOpts || sfc;\n for (const [key, val] of props) {\n target[key] = val;\n }\n return target;\n};\n","/*!\n * vue-router v4.0.13\n * (c) 2022 Eduardo San Martin Morote\n * @license MIT\n */\nimport { getCurrentInstance, inject, onUnmounted, onDeactivated, onActivated, computed, unref, watchEffect, defineComponent, reactive, h, provide, ref, watch, shallowRef, nextTick } from 'vue';\nimport { setupDevtoolsPlugin } from '@vue/devtools-api';\n\nconst hasSymbol = typeof Symbol === 'function' && typeof Symbol.toStringTag === 'symbol';\r\nconst PolySymbol = (name) => \r\n// vr = vue router\r\nhasSymbol\r\n ? Symbol((process.env.NODE_ENV !== 'production') ? '[vue-router]: ' + name : name)\r\n : ((process.env.NODE_ENV !== 'production') ? '[vue-router]: ' : '_vr_') + name;\r\n// rvlm = Router View Location Matched\r\n/**\r\n * RouteRecord being rendered by the closest ancestor Router View. Used for\r\n * `onBeforeRouteUpdate` and `onBeforeRouteLeave`. rvlm stands for Router View\r\n * Location Matched\r\n *\r\n * @internal\r\n */\r\nconst matchedRouteKey = /*#__PURE__*/ PolySymbol((process.env.NODE_ENV !== 'production') ? 'router view location matched' : 'rvlm');\r\n/**\r\n * Allows overriding the router view depth to control which component in\r\n * `matched` is rendered. rvd stands for Router View Depth\r\n *\r\n * @internal\r\n */\r\nconst viewDepthKey = /*#__PURE__*/ PolySymbol((process.env.NODE_ENV !== 'production') ? 'router view depth' : 'rvd');\r\n/**\r\n * Allows overriding the router instance returned by `useRouter` in tests. r\r\n * stands for router\r\n *\r\n * @internal\r\n */\r\nconst routerKey = /*#__PURE__*/ PolySymbol((process.env.NODE_ENV !== 'production') ? 'router' : 'r');\r\n/**\r\n * Allows overriding the current route returned by `useRoute` in tests. rl\r\n * stands for route location\r\n *\r\n * @internal\r\n */\r\nconst routeLocationKey = /*#__PURE__*/ PolySymbol((process.env.NODE_ENV !== 'production') ? 'route location' : 'rl');\r\n/**\r\n * Allows overriding the current route used by router-view. Internally this is\r\n * used when the `route` prop is passed.\r\n *\r\n * @internal\r\n */\r\nconst routerViewLocationKey = /*#__PURE__*/ PolySymbol((process.env.NODE_ENV !== 'production') ? 'router view location' : 'rvl');\n\nconst isBrowser = typeof window !== 'undefined';\n\nfunction isESModule(obj) {\r\n return obj.__esModule || (hasSymbol && obj[Symbol.toStringTag] === 'Module');\r\n}\r\nconst assign = Object.assign;\r\nfunction applyToParams(fn, params) {\r\n const newParams = {};\r\n for (const key in params) {\r\n const value = params[key];\r\n newParams[key] = Array.isArray(value) ? value.map(fn) : fn(value);\r\n }\r\n return newParams;\r\n}\r\nconst noop = () => { };\n\nfunction warn(msg) {\r\n // avoid using ...args as it breaks in older Edge builds\r\n const args = Array.from(arguments).slice(1);\r\n console.warn.apply(console, ['[Vue Router warn]: ' + msg].concat(args));\r\n}\n\nconst TRAILING_SLASH_RE = /\\/$/;\r\nconst removeTrailingSlash = (path) => path.replace(TRAILING_SLASH_RE, '');\r\n/**\r\n * Transforms an URI into a normalized history location\r\n *\r\n * @param parseQuery\r\n * @param location - URI to normalize\r\n * @param currentLocation - current absolute location. Allows resolving relative\r\n * paths. Must start with `/`. Defaults to `/`\r\n * @returns a normalized history location\r\n */\r\nfunction parseURL(parseQuery, location, currentLocation = '/') {\r\n let path, query = {}, searchString = '', hash = '';\r\n // Could use URL and URLSearchParams but IE 11 doesn't support it\r\n const searchPos = location.indexOf('?');\r\n const hashPos = location.indexOf('#', searchPos > -1 ? searchPos : 0);\r\n if (searchPos > -1) {\r\n path = location.slice(0, searchPos);\r\n searchString = location.slice(searchPos + 1, hashPos > -1 ? hashPos : location.length);\r\n query = parseQuery(searchString);\r\n }\r\n if (hashPos > -1) {\r\n path = path || location.slice(0, hashPos);\r\n // keep the # character\r\n hash = location.slice(hashPos, location.length);\r\n }\r\n // no search and no query\r\n path = resolveRelativePath(path != null ? path : location, currentLocation);\r\n // empty path means a relative query or hash `?foo=f`, `#thing`\r\n return {\r\n fullPath: path + (searchString && '?') + searchString + hash,\r\n path,\r\n query,\r\n hash,\r\n };\r\n}\r\n/**\r\n * Stringifies a URL object\r\n *\r\n * @param stringifyQuery\r\n * @param location\r\n */\r\nfunction stringifyURL(stringifyQuery, location) {\r\n const query = location.query ? stringifyQuery(location.query) : '';\r\n return location.path + (query && '?') + query + (location.hash || '');\r\n}\r\n/**\r\n * Strips off the base from the beginning of a location.pathname in a non\r\n * case-sensitive way.\r\n *\r\n * @param pathname - location.pathname\r\n * @param base - base to strip off\r\n */\r\nfunction stripBase(pathname, base) {\r\n // no base or base is not found at the beginning\r\n if (!base || !pathname.toLowerCase().startsWith(base.toLowerCase()))\r\n return pathname;\r\n return pathname.slice(base.length) || '/';\r\n}\r\n/**\r\n * Checks if two RouteLocation are equal. This means that both locations are\r\n * pointing towards the same {@link RouteRecord} and that all `params`, `query`\r\n * parameters and `hash` are the same\r\n *\r\n * @param a - first {@link RouteLocation}\r\n * @param b - second {@link RouteLocation}\r\n */\r\nfunction isSameRouteLocation(stringifyQuery, a, b) {\r\n const aLastIndex = a.matched.length - 1;\r\n const bLastIndex = b.matched.length - 1;\r\n return (aLastIndex > -1 &&\r\n aLastIndex === bLastIndex &&\r\n isSameRouteRecord(a.matched[aLastIndex], b.matched[bLastIndex]) &&\r\n isSameRouteLocationParams(a.params, b.params) &&\r\n stringifyQuery(a.query) === stringifyQuery(b.query) &&\r\n a.hash === b.hash);\r\n}\r\n/**\r\n * Check if two `RouteRecords` are equal. Takes into account aliases: they are\r\n * considered equal to the `RouteRecord` they are aliasing.\r\n *\r\n * @param a - first {@link RouteRecord}\r\n * @param b - second {@link RouteRecord}\r\n */\r\nfunction isSameRouteRecord(a, b) {\r\n // since the original record has an undefined value for aliasOf\r\n // but all aliases point to the original record, this will always compare\r\n // the original record\r\n return (a.aliasOf || a) === (b.aliasOf || b);\r\n}\r\nfunction isSameRouteLocationParams(a, b) {\r\n if (Object.keys(a).length !== Object.keys(b).length)\r\n return false;\r\n for (const key in a) {\r\n if (!isSameRouteLocationParamsValue(a[key], b[key]))\r\n return false;\r\n }\r\n return true;\r\n}\r\nfunction isSameRouteLocationParamsValue(a, b) {\r\n return Array.isArray(a)\r\n ? isEquivalentArray(a, b)\r\n : Array.isArray(b)\r\n ? isEquivalentArray(b, a)\r\n : a === b;\r\n}\r\n/**\r\n * Check if two arrays are the same or if an array with one single entry is the\r\n * same as another primitive value. Used to check query and parameters\r\n *\r\n * @param a - array of values\r\n * @param b - array of values or a single value\r\n */\r\nfunction isEquivalentArray(a, b) {\r\n return Array.isArray(b)\r\n ? a.length === b.length && a.every((value, i) => value === b[i])\r\n : a.length === 1 && a[0] === b;\r\n}\r\n/**\r\n * Resolves a relative path that starts with `.`.\r\n *\r\n * @param to - path location we are resolving\r\n * @param from - currentLocation.path, should start with `/`\r\n */\r\nfunction resolveRelativePath(to, from) {\r\n if (to.startsWith('/'))\r\n return to;\r\n if ((process.env.NODE_ENV !== 'production') && !from.startsWith('/')) {\r\n warn(`Cannot resolve a relative location without an absolute path. Trying to resolve \"${to}\" from \"${from}\". It should look like \"/${from}\".`);\r\n return to;\r\n }\r\n if (!to)\r\n return from;\r\n const fromSegments = from.split('/');\r\n const toSegments = to.split('/');\r\n let position = fromSegments.length - 1;\r\n let toPosition;\r\n let segment;\r\n for (toPosition = 0; toPosition < toSegments.length; toPosition++) {\r\n segment = toSegments[toPosition];\r\n // can't go below zero\r\n if (position === 1 || segment === '.')\r\n continue;\r\n if (segment === '..')\r\n position--;\r\n // found something that is not relative path\r\n else\r\n break;\r\n }\r\n return (fromSegments.slice(0, position).join('/') +\r\n '/' +\r\n toSegments\r\n .slice(toPosition - (toPosition === toSegments.length ? 1 : 0))\r\n .join('/'));\r\n}\n\nvar NavigationType;\r\n(function (NavigationType) {\r\n NavigationType[\"pop\"] = \"pop\";\r\n NavigationType[\"push\"] = \"push\";\r\n})(NavigationType || (NavigationType = {}));\r\nvar NavigationDirection;\r\n(function (NavigationDirection) {\r\n NavigationDirection[\"back\"] = \"back\";\r\n NavigationDirection[\"forward\"] = \"forward\";\r\n NavigationDirection[\"unknown\"] = \"\";\r\n})(NavigationDirection || (NavigationDirection = {}));\r\n/**\r\n * Starting location for Histories\r\n */\r\nconst START = '';\r\n// Generic utils\r\n/**\r\n * Normalizes a base by removing any trailing slash and reading the base tag if\r\n * present.\r\n *\r\n * @param base - base to normalize\r\n */\r\nfunction normalizeBase(base) {\r\n if (!base) {\r\n if (isBrowser) {\r\n // respect tag\r\n const baseEl = document.querySelector('base');\r\n base = (baseEl && baseEl.getAttribute('href')) || '/';\r\n // strip full URL origin\r\n base = base.replace(/^\\w+:\\/\\/[^\\/]+/, '');\r\n }\r\n else {\r\n base = '/';\r\n }\r\n }\r\n // ensure leading slash when it was removed by the regex above avoid leading\r\n // slash with hash because the file could be read from the disk like file://\r\n // and the leading slash would cause problems\r\n if (base[0] !== '/' && base[0] !== '#')\r\n base = '/' + base;\r\n // remove the trailing slash so all other method can just do `base + fullPath`\r\n // to build an href\r\n return removeTrailingSlash(base);\r\n}\r\n// remove any character before the hash\r\nconst BEFORE_HASH_RE = /^[^#]+#/;\r\nfunction createHref(base, location) {\r\n return base.replace(BEFORE_HASH_RE, '#') + location;\r\n}\n\nfunction getElementPosition(el, offset) {\r\n const docRect = document.documentElement.getBoundingClientRect();\r\n const elRect = el.getBoundingClientRect();\r\n return {\r\n behavior: offset.behavior,\r\n left: elRect.left - docRect.left - (offset.left || 0),\r\n top: elRect.top - docRect.top - (offset.top || 0),\r\n };\r\n}\r\nconst computeScrollPosition = () => ({\r\n left: window.pageXOffset,\r\n top: window.pageYOffset,\r\n});\r\nfunction scrollToPosition(position) {\r\n let scrollToOptions;\r\n if ('el' in position) {\r\n const positionEl = position.el;\r\n const isIdSelector = typeof positionEl === 'string' && positionEl.startsWith('#');\r\n /**\r\n * `id`s can accept pretty much any characters, including CSS combinators\r\n * like `>` or `~`. It's still possible to retrieve elements using\r\n * `document.getElementById('~')` but it needs to be escaped when using\r\n * `document.querySelector('#\\\\~')` for it to be valid. The only\r\n * requirements for `id`s are them to be unique on the page and to not be\r\n * empty (`id=\"\"`). Because of that, when passing an id selector, it should\r\n * be properly escaped for it to work with `querySelector`. We could check\r\n * for the id selector to be simple (no CSS combinators `+ >~`) but that\r\n * would make things inconsistent since they are valid characters for an\r\n * `id` but would need to be escaped when using `querySelector`, breaking\r\n * their usage and ending up in no selector returned. Selectors need to be\r\n * escaped:\r\n *\r\n * - `#1-thing` becomes `#\\31 -thing`\r\n * - `#with~symbols` becomes `#with\\\\~symbols`\r\n *\r\n * - More information about the topic can be found at\r\n * https://mathiasbynens.be/notes/html5-id-class.\r\n * - Practical example: https://mathiasbynens.be/demo/html5-id\r\n */\r\n if ((process.env.NODE_ENV !== 'production') && typeof position.el === 'string') {\r\n if (!isIdSelector || !document.getElementById(position.el.slice(1))) {\r\n try {\r\n const foundEl = document.querySelector(position.el);\r\n if (isIdSelector && foundEl) {\r\n warn(`The selector \"${position.el}\" should be passed as \"el: document.querySelector('${position.el}')\" because it starts with \"#\".`);\r\n // return to avoid other warnings\r\n return;\r\n }\r\n }\r\n catch (err) {\r\n warn(`The selector \"${position.el}\" is invalid. If you are using an id selector, make sure to escape it. You can find more information about escaping characters in selectors at https://mathiasbynens.be/notes/css-escapes or use CSS.escape (https://developer.mozilla.org/en-US/docs/Web/API/CSS/escape).`);\r\n // return to avoid other warnings\r\n return;\r\n }\r\n }\r\n }\r\n const el = typeof positionEl === 'string'\r\n ? isIdSelector\r\n ? document.getElementById(positionEl.slice(1))\r\n : document.querySelector(positionEl)\r\n : positionEl;\r\n if (!el) {\r\n (process.env.NODE_ENV !== 'production') &&\r\n warn(`Couldn't find element using selector \"${position.el}\" returned by scrollBehavior.`);\r\n return;\r\n }\r\n scrollToOptions = getElementPosition(el, position);\r\n }\r\n else {\r\n scrollToOptions = position;\r\n }\r\n if ('scrollBehavior' in document.documentElement.style)\r\n window.scrollTo(scrollToOptions);\r\n else {\r\n window.scrollTo(scrollToOptions.left != null ? scrollToOptions.left : window.pageXOffset, scrollToOptions.top != null ? scrollToOptions.top : window.pageYOffset);\r\n }\r\n}\r\nfunction getScrollKey(path, delta) {\r\n const position = history.state ? history.state.position - delta : -1;\r\n return position + path;\r\n}\r\nconst scrollPositions = new Map();\r\nfunction saveScrollPosition(key, scrollPosition) {\r\n scrollPositions.set(key, scrollPosition);\r\n}\r\nfunction getSavedScrollPosition(key) {\r\n const scroll = scrollPositions.get(key);\r\n // consume it so it's not used again\r\n scrollPositions.delete(key);\r\n return scroll;\r\n}\r\n// TODO: RFC about how to save scroll position\r\n/**\r\n * ScrollBehavior instance used by the router to compute and restore the scroll\r\n * position when navigating.\r\n */\r\n// export interface ScrollHandler {\r\n// // returns a scroll position that can be saved in history\r\n// compute(): ScrollPositionEntry\r\n// // can take an extended ScrollPositionEntry\r\n// scroll(position: ScrollPosition): void\r\n// }\r\n// export const scrollHandler: ScrollHandler = {\r\n// compute: computeScroll,\r\n// scroll: scrollToPosition,\r\n// }\n\nlet createBaseLocation = () => location.protocol + '//' + location.host;\r\n/**\r\n * Creates a normalized history location from a window.location object\r\n * @param location -\r\n */\r\nfunction createCurrentLocation(base, location) {\r\n const { pathname, search, hash } = location;\r\n // allows hash bases like #, /#, #/, #!, #!/, /#!/, or even /folder#end\r\n const hashPos = base.indexOf('#');\r\n if (hashPos > -1) {\r\n let slicePos = hash.includes(base.slice(hashPos))\r\n ? base.slice(hashPos).length\r\n : 1;\r\n let pathFromHash = hash.slice(slicePos);\r\n // prepend the starting slash to hash so the url starts with /#\r\n if (pathFromHash[0] !== '/')\r\n pathFromHash = '/' + pathFromHash;\r\n return stripBase(pathFromHash, '');\r\n }\r\n const path = stripBase(pathname, base);\r\n return path + search + hash;\r\n}\r\nfunction useHistoryListeners(base, historyState, currentLocation, replace) {\r\n let listeners = [];\r\n let teardowns = [];\r\n // TODO: should it be a stack? a Dict. Check if the popstate listener\r\n // can trigger twice\r\n let pauseState = null;\r\n const popStateHandler = ({ state, }) => {\r\n const to = createCurrentLocation(base, location);\r\n const from = currentLocation.value;\r\n const fromState = historyState.value;\r\n let delta = 0;\r\n if (state) {\r\n currentLocation.value = to;\r\n historyState.value = state;\r\n // ignore the popstate and reset the pauseState\r\n if (pauseState && pauseState === from) {\r\n pauseState = null;\r\n return;\r\n }\r\n delta = fromState ? state.position - fromState.position : 0;\r\n }\r\n else {\r\n replace(to);\r\n }\r\n // console.log({ deltaFromCurrent })\r\n // Here we could also revert the navigation by calling history.go(-delta)\r\n // this listener will have to be adapted to not trigger again and to wait for the url\r\n // to be updated before triggering the listeners. Some kind of validation function would also\r\n // need to be passed to the listeners so the navigation can be accepted\r\n // call all listeners\r\n listeners.forEach(listener => {\r\n listener(currentLocation.value, from, {\r\n delta,\r\n type: NavigationType.pop,\r\n direction: delta\r\n ? delta > 0\r\n ? NavigationDirection.forward\r\n : NavigationDirection.back\r\n : NavigationDirection.unknown,\r\n });\r\n });\r\n };\r\n function pauseListeners() {\r\n pauseState = currentLocation.value;\r\n }\r\n function listen(callback) {\r\n // setup the listener and prepare teardown callbacks\r\n listeners.push(callback);\r\n const teardown = () => {\r\n const index = listeners.indexOf(callback);\r\n if (index > -1)\r\n listeners.splice(index, 1);\r\n };\r\n teardowns.push(teardown);\r\n return teardown;\r\n }\r\n function beforeUnloadListener() {\r\n const { history } = window;\r\n if (!history.state)\r\n return;\r\n history.replaceState(assign({}, history.state, { scroll: computeScrollPosition() }), '');\r\n }\r\n function destroy() {\r\n for (const teardown of teardowns)\r\n teardown();\r\n teardowns = [];\r\n window.removeEventListener('popstate', popStateHandler);\r\n window.removeEventListener('beforeunload', beforeUnloadListener);\r\n }\r\n // setup the listeners and prepare teardown callbacks\r\n window.addEventListener('popstate', popStateHandler);\r\n window.addEventListener('beforeunload', beforeUnloadListener);\r\n return {\r\n pauseListeners,\r\n listen,\r\n destroy,\r\n };\r\n}\r\n/**\r\n * Creates a state object\r\n */\r\nfunction buildState(back, current, forward, replaced = false, computeScroll = false) {\r\n return {\r\n back,\r\n current,\r\n forward,\r\n replaced,\r\n position: window.history.length,\r\n scroll: computeScroll ? computeScrollPosition() : null,\r\n };\r\n}\r\nfunction useHistoryStateNavigation(base) {\r\n const { history, location } = window;\r\n // private variables\r\n const currentLocation = {\r\n value: createCurrentLocation(base, location),\r\n };\r\n const historyState = { value: history.state };\r\n // build current history entry as this is a fresh navigation\r\n if (!historyState.value) {\r\n changeLocation(currentLocation.value, {\r\n back: null,\r\n current: currentLocation.value,\r\n forward: null,\r\n // the length is off by one, we need to decrease it\r\n position: history.length - 1,\r\n replaced: true,\r\n // don't add a scroll as the user may have an anchor and we want\r\n // scrollBehavior to be triggered without a saved position\r\n scroll: null,\r\n }, true);\r\n }\r\n function changeLocation(to, state, replace) {\r\n /**\r\n * if a base tag is provided and we are on a normal domain, we have to\r\n * respect the provided `base` attribute because pushState() will use it and\r\n * potentially erase anything before the `#` like at\r\n * https://github.com/vuejs/router/issues/685 where a base of\r\n * `/folder/#` but a base of `/` would erase the `/folder/` section. If\r\n * there is no host, the `` tag makes no sense and if there isn't a\r\n * base tag we can just use everything after the `#`.\r\n */\r\n const hashIndex = base.indexOf('#');\r\n const url = hashIndex > -1\r\n ? (location.host && document.querySelector('base')\r\n ? base\r\n : base.slice(hashIndex)) + to\r\n : createBaseLocation() + base + to;\r\n try {\r\n // BROWSER QUIRK\r\n // NOTE: Safari throws a SecurityError when calling this function 100 times in 30 seconds\r\n history[replace ? 'replaceState' : 'pushState'](state, '', url);\r\n historyState.value = state;\r\n }\r\n catch (err) {\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n warn('Error with push/replace State', err);\r\n }\r\n else {\r\n console.error(err);\r\n }\r\n // Force the navigation, this also resets the call count\r\n location[replace ? 'replace' : 'assign'](url);\r\n }\r\n }\r\n function replace(to, data) {\r\n const state = assign({}, history.state, buildState(historyState.value.back, \r\n // keep back and forward entries but override current position\r\n to, historyState.value.forward, true), data, { position: historyState.value.position });\r\n changeLocation(to, state, true);\r\n currentLocation.value = to;\r\n }\r\n function push(to, data) {\r\n // Add to current entry the information of where we are going\r\n // as well as saving the current position\r\n const currentState = assign({}, \r\n // use current history state to gracefully handle a wrong call to\r\n // history.replaceState\r\n // https://github.com/vuejs/router/issues/366\r\n historyState.value, history.state, {\r\n forward: to,\r\n scroll: computeScrollPosition(),\r\n });\r\n if ((process.env.NODE_ENV !== 'production') && !history.state) {\r\n warn(`history.state seems to have been manually replaced without preserving the necessary values. Make sure to preserve existing history state if you are manually calling history.replaceState:\\n\\n` +\r\n `history.replaceState(history.state, '', url)\\n\\n` +\r\n `You can find more information at https://next.router.vuejs.org/guide/migration/#usage-of-history-state.`);\r\n }\r\n changeLocation(currentState.current, currentState, true);\r\n const state = assign({}, buildState(currentLocation.value, to, null), { position: currentState.position + 1 }, data);\r\n changeLocation(to, state, false);\r\n currentLocation.value = to;\r\n }\r\n return {\r\n location: currentLocation,\r\n state: historyState,\r\n push,\r\n replace,\r\n };\r\n}\r\n/**\r\n * Creates an HTML5 history. Most common history for single page applications.\r\n *\r\n * @param base -\r\n */\r\nfunction createWebHistory(base) {\r\n base = normalizeBase(base);\r\n const historyNavigation = useHistoryStateNavigation(base);\r\n const historyListeners = useHistoryListeners(base, historyNavigation.state, historyNavigation.location, historyNavigation.replace);\r\n function go(delta, triggerListeners = true) {\r\n if (!triggerListeners)\r\n historyListeners.pauseListeners();\r\n history.go(delta);\r\n }\r\n const routerHistory = assign({\r\n // it's overridden right after\r\n location: '',\r\n base,\r\n go,\r\n createHref: createHref.bind(null, base),\r\n }, historyNavigation, historyListeners);\r\n Object.defineProperty(routerHistory, 'location', {\r\n enumerable: true,\r\n get: () => historyNavigation.location.value,\r\n });\r\n Object.defineProperty(routerHistory, 'state', {\r\n enumerable: true,\r\n get: () => historyNavigation.state.value,\r\n });\r\n return routerHistory;\r\n}\n\n/**\r\n * Creates a in-memory based history. The main purpose of this history is to handle SSR. It starts in a special location that is nowhere.\r\n * It's up to the user to replace that location with the starter location by either calling `router.push` or `router.replace`.\r\n *\r\n * @param base - Base applied to all urls, defaults to '/'\r\n * @returns a history object that can be passed to the router constructor\r\n */\r\nfunction createMemoryHistory(base = '') {\r\n let listeners = [];\r\n let queue = [START];\r\n let position = 0;\r\n base = normalizeBase(base);\r\n function setLocation(location) {\r\n position++;\r\n if (position === queue.length) {\r\n // we are at the end, we can simply append a new entry\r\n queue.push(location);\r\n }\r\n else {\r\n // we are in the middle, we remove everything from here in the queue\r\n queue.splice(position);\r\n queue.push(location);\r\n }\r\n }\r\n function triggerListeners(to, from, { direction, delta }) {\r\n const info = {\r\n direction,\r\n delta,\r\n type: NavigationType.pop,\r\n };\r\n for (const callback of listeners) {\r\n callback(to, from, info);\r\n }\r\n }\r\n const routerHistory = {\r\n // rewritten by Object.defineProperty\r\n location: START,\r\n // TODO: should be kept in queue\r\n state: {},\r\n base,\r\n createHref: createHref.bind(null, base),\r\n replace(to) {\r\n // remove current entry and decrement position\r\n queue.splice(position--, 1);\r\n setLocation(to);\r\n },\r\n push(to, data) {\r\n setLocation(to);\r\n },\r\n listen(callback) {\r\n listeners.push(callback);\r\n return () => {\r\n const index = listeners.indexOf(callback);\r\n if (index > -1)\r\n listeners.splice(index, 1);\r\n };\r\n },\r\n destroy() {\r\n listeners = [];\r\n queue = [START];\r\n position = 0;\r\n },\r\n go(delta, shouldTrigger = true) {\r\n const from = this.location;\r\n const direction = \r\n // we are considering delta === 0 going forward, but in abstract mode\r\n // using 0 for the delta doesn't make sense like it does in html5 where\r\n // it reloads the page\r\n delta < 0 ? NavigationDirection.back : NavigationDirection.forward;\r\n position = Math.max(0, Math.min(position + delta, queue.length - 1));\r\n if (shouldTrigger) {\r\n triggerListeners(this.location, from, {\r\n direction,\r\n delta,\r\n });\r\n }\r\n },\r\n };\r\n Object.defineProperty(routerHistory, 'location', {\r\n enumerable: true,\r\n get: () => queue[position],\r\n });\r\n return routerHistory;\r\n}\n\n/**\r\n * Creates a hash history. Useful for web applications with no host (e.g.\r\n * `file://`) or when configuring a server to handle any URL is not possible.\r\n *\r\n * @param base - optional base to provide. Defaults to `location.pathname +\r\n * location.search` If there is a `` tag in the `head`, its value will be\r\n * ignored in favor of this parameter **but note it affects all the\r\n * history.pushState() calls**, meaning that if you use a `` tag, it's\r\n * `href` value **has to match this parameter** (ignoring anything after the\r\n * `#`).\r\n *\r\n * @example\r\n * ```js\r\n * // at https://example.com/folder\r\n * createWebHashHistory() // gives a url of `https://example.com/folder#`\r\n * createWebHashHistory('/folder/') // gives a url of `https://example.com/folder/#`\r\n * // if the `#` is provided in the base, it won't be added by `createWebHashHistory`\r\n * createWebHashHistory('/folder/#/app/') // gives a url of `https://example.com/folder/#/app/`\r\n * // you should avoid doing this because it changes the original url and breaks copying urls\r\n * createWebHashHistory('/other-folder/') // gives a url of `https://example.com/other-folder/#`\r\n *\r\n * // at file:///usr/etc/folder/index.html\r\n * // for locations with no `host`, the base is ignored\r\n * createWebHashHistory('/iAmIgnored') // gives a url of `file:///usr/etc/folder/index.html#`\r\n * ```\r\n */\r\nfunction createWebHashHistory(base) {\r\n // Make sure this implementation is fine in terms of encoding, specially for IE11\r\n // for `file://`, directly use the pathname and ignore the base\r\n // location.pathname contains an initial `/` even at the root: `https://example.com`\r\n base = location.host ? base || location.pathname + location.search : '';\r\n // allow the user to provide a `#` in the middle: `/base/#/app`\r\n if (!base.includes('#'))\r\n base += '#';\r\n if ((process.env.NODE_ENV !== 'production') && !base.endsWith('#/') && !base.endsWith('#')) {\r\n warn(`A hash base must end with a \"#\":\\n\"${base}\" should be \"${base.replace(/#.*$/, '#')}\".`);\r\n }\r\n return createWebHistory(base);\r\n}\n\nfunction isRouteLocation(route) {\r\n return typeof route === 'string' || (route && typeof route === 'object');\r\n}\r\nfunction isRouteName(name) {\r\n return typeof name === 'string' || typeof name === 'symbol';\r\n}\n\n/**\r\n * Initial route location where the router is. Can be used in navigation guards\r\n * to differentiate the initial navigation.\r\n *\r\n * @example\r\n * ```js\r\n * import { START_LOCATION } from 'vue-router'\r\n *\r\n * router.beforeEach((to, from) => {\r\n * if (from === START_LOCATION) {\r\n * // initial navigation\r\n * }\r\n * })\r\n * ```\r\n */\r\nconst START_LOCATION_NORMALIZED = {\r\n path: '/',\r\n name: undefined,\r\n params: {},\r\n query: {},\r\n hash: '',\r\n fullPath: '/',\r\n matched: [],\r\n meta: {},\r\n redirectedFrom: undefined,\r\n};\n\nconst NavigationFailureSymbol = /*#__PURE__*/ PolySymbol((process.env.NODE_ENV !== 'production') ? 'navigation failure' : 'nf');\r\n/**\r\n * Enumeration with all possible types for navigation failures. Can be passed to\r\n * {@link isNavigationFailure} to check for specific failures.\r\n */\r\nvar NavigationFailureType;\r\n(function (NavigationFailureType) {\r\n /**\r\n * An aborted navigation is a navigation that failed because a navigation\r\n * guard returned `false` or called `next(false)`\r\n */\r\n NavigationFailureType[NavigationFailureType[\"aborted\"] = 4] = \"aborted\";\r\n /**\r\n * A cancelled navigation is a navigation that failed because a more recent\r\n * navigation finished started (not necessarily finished).\r\n */\r\n NavigationFailureType[NavigationFailureType[\"cancelled\"] = 8] = \"cancelled\";\r\n /**\r\n * A duplicated navigation is a navigation that failed because it was\r\n * initiated while already being at the exact same location.\r\n */\r\n NavigationFailureType[NavigationFailureType[\"duplicated\"] = 16] = \"duplicated\";\r\n})(NavigationFailureType || (NavigationFailureType = {}));\r\n// DEV only debug messages\r\nconst ErrorTypeMessages = {\r\n [1 /* MATCHER_NOT_FOUND */]({ location, currentLocation }) {\r\n return `No match for\\n ${JSON.stringify(location)}${currentLocation\r\n ? '\\nwhile being at\\n' + JSON.stringify(currentLocation)\r\n : ''}`;\r\n },\r\n [2 /* NAVIGATION_GUARD_REDIRECT */]({ from, to, }) {\r\n return `Redirected from \"${from.fullPath}\" to \"${stringifyRoute(to)}\" via a navigation guard.`;\r\n },\r\n [4 /* NAVIGATION_ABORTED */]({ from, to }) {\r\n return `Navigation aborted from \"${from.fullPath}\" to \"${to.fullPath}\" via a navigation guard.`;\r\n },\r\n [8 /* NAVIGATION_CANCELLED */]({ from, to }) {\r\n return `Navigation cancelled from \"${from.fullPath}\" to \"${to.fullPath}\" with a new navigation.`;\r\n },\r\n [16 /* NAVIGATION_DUPLICATED */]({ from, to }) {\r\n return `Avoided redundant navigation to current location: \"${from.fullPath}\".`;\r\n },\r\n};\r\nfunction createRouterError(type, params) {\r\n // keep full error messages in cjs versions\r\n if ((process.env.NODE_ENV !== 'production') || !true) {\r\n return assign(new Error(ErrorTypeMessages[type](params)), {\r\n type,\r\n [NavigationFailureSymbol]: true,\r\n }, params);\r\n }\r\n else {\r\n return assign(new Error(), {\r\n type,\r\n [NavigationFailureSymbol]: true,\r\n }, params);\r\n }\r\n}\r\nfunction isNavigationFailure(error, type) {\r\n return (error instanceof Error &&\r\n NavigationFailureSymbol in error &&\r\n (type == null || !!(error.type & type)));\r\n}\r\nconst propertiesToLog = ['params', 'query', 'hash'];\r\nfunction stringifyRoute(to) {\r\n if (typeof to === 'string')\r\n return to;\r\n if ('path' in to)\r\n return to.path;\r\n const location = {};\r\n for (const key of propertiesToLog) {\r\n if (key in to)\r\n location[key] = to[key];\r\n }\r\n return JSON.stringify(location, null, 2);\r\n}\n\n// default pattern for a param: non greedy everything but /\r\nconst BASE_PARAM_PATTERN = '[^/]+?';\r\nconst BASE_PATH_PARSER_OPTIONS = {\r\n sensitive: false,\r\n strict: false,\r\n start: true,\r\n end: true,\r\n};\r\n// Special Regex characters that must be escaped in static tokens\r\nconst REGEX_CHARS_RE = /[.+*?^${}()[\\]/\\\\]/g;\r\n/**\r\n * Creates a path parser from an array of Segments (a segment is an array of Tokens)\r\n *\r\n * @param segments - array of segments returned by tokenizePath\r\n * @param extraOptions - optional options for the regexp\r\n * @returns a PathParser\r\n */\r\nfunction tokensToParser(segments, extraOptions) {\r\n const options = assign({}, BASE_PATH_PARSER_OPTIONS, extraOptions);\r\n // the amount of scores is the same as the length of segments except for the root segment \"/\"\r\n const score = [];\r\n // the regexp as a string\r\n let pattern = options.start ? '^' : '';\r\n // extracted keys\r\n const keys = [];\r\n for (const segment of segments) {\r\n // the root segment needs special treatment\r\n const segmentScores = segment.length ? [] : [90 /* Root */];\r\n // allow trailing slash\r\n if (options.strict && !segment.length)\r\n pattern += '/';\r\n for (let tokenIndex = 0; tokenIndex < segment.length; tokenIndex++) {\r\n const token = segment[tokenIndex];\r\n // resets the score if we are inside a sub segment /:a-other-:b\r\n let subSegmentScore = 40 /* Segment */ +\r\n (options.sensitive ? 0.25 /* BonusCaseSensitive */ : 0);\r\n if (token.type === 0 /* Static */) {\r\n // prepend the slash if we are starting a new segment\r\n if (!tokenIndex)\r\n pattern += '/';\r\n pattern += token.value.replace(REGEX_CHARS_RE, '\\\\$&');\r\n subSegmentScore += 40 /* Static */;\r\n }\r\n else if (token.type === 1 /* Param */) {\r\n const { value, repeatable, optional, regexp } = token;\r\n keys.push({\r\n name: value,\r\n repeatable,\r\n optional,\r\n });\r\n const re = regexp ? regexp : BASE_PARAM_PATTERN;\r\n // the user provided a custom regexp /:id(\\\\d+)\r\n if (re !== BASE_PARAM_PATTERN) {\r\n subSegmentScore += 10 /* BonusCustomRegExp */;\r\n // make sure the regexp is valid before using it\r\n try {\r\n new RegExp(`(${re})`);\r\n }\r\n catch (err) {\r\n throw new Error(`Invalid custom RegExp for param \"${value}\" (${re}): ` +\r\n err.message);\r\n }\r\n }\r\n // when we repeat we must take care of the repeating leading slash\r\n let subPattern = repeatable ? `((?:${re})(?:/(?:${re}))*)` : `(${re})`;\r\n // prepend the slash if we are starting a new segment\r\n if (!tokenIndex)\r\n subPattern =\r\n // avoid an optional / if there are more segments e.g. /:p?-static\r\n // or /:p?-:p2\r\n optional && segment.length < 2\r\n ? `(?:/${subPattern})`\r\n : '/' + subPattern;\r\n if (optional)\r\n subPattern += '?';\r\n pattern += subPattern;\r\n subSegmentScore += 20 /* Dynamic */;\r\n if (optional)\r\n subSegmentScore += -8 /* BonusOptional */;\r\n if (repeatable)\r\n subSegmentScore += -20 /* BonusRepeatable */;\r\n if (re === '.*')\r\n subSegmentScore += -50 /* BonusWildcard */;\r\n }\r\n segmentScores.push(subSegmentScore);\r\n }\r\n // an empty array like /home/ -> [[{home}], []]\r\n // if (!segment.length) pattern += '/'\r\n score.push(segmentScores);\r\n }\r\n // only apply the strict bonus to the last score\r\n if (options.strict && options.end) {\r\n const i = score.length - 1;\r\n score[i][score[i].length - 1] += 0.7000000000000001 /* BonusStrict */;\r\n }\r\n // TODO: dev only warn double trailing slash\r\n if (!options.strict)\r\n pattern += '/?';\r\n if (options.end)\r\n pattern += '$';\r\n // allow paths like /dynamic to only match dynamic or dynamic/... but not dynamic_something_else\r\n else if (options.strict)\r\n pattern += '(?:/|$)';\r\n const re = new RegExp(pattern, options.sensitive ? '' : 'i');\r\n function parse(path) {\r\n const match = path.match(re);\r\n const params = {};\r\n if (!match)\r\n return null;\r\n for (let i = 1; i < match.length; i++) {\r\n const value = match[i] || '';\r\n const key = keys[i - 1];\r\n params[key.name] = value && key.repeatable ? value.split('/') : value;\r\n }\r\n return params;\r\n }\r\n function stringify(params) {\r\n let path = '';\r\n // for optional parameters to allow to be empty\r\n let avoidDuplicatedSlash = false;\r\n for (const segment of segments) {\r\n if (!avoidDuplicatedSlash || !path.endsWith('/'))\r\n path += '/';\r\n avoidDuplicatedSlash = false;\r\n for (const token of segment) {\r\n if (token.type === 0 /* Static */) {\r\n path += token.value;\r\n }\r\n else if (token.type === 1 /* Param */) {\r\n const { value, repeatable, optional } = token;\r\n const param = value in params ? params[value] : '';\r\n if (Array.isArray(param) && !repeatable)\r\n throw new Error(`Provided param \"${value}\" is an array but it is not repeatable (* or + modifiers)`);\r\n const text = Array.isArray(param) ? param.join('/') : param;\r\n if (!text) {\r\n if (optional) {\r\n // if we have more than one optional param like /:a?-static we\r\n // don't need to care about the optional param\r\n if (segment.length < 2) {\r\n // remove the last slash as we could be at the end\r\n if (path.endsWith('/'))\r\n path = path.slice(0, -1);\r\n // do not append a slash on the next iteration\r\n else\r\n avoidDuplicatedSlash = true;\r\n }\r\n }\r\n else\r\n throw new Error(`Missing required param \"${value}\"`);\r\n }\r\n path += text;\r\n }\r\n }\r\n }\r\n return path;\r\n }\r\n return {\r\n re,\r\n score,\r\n keys,\r\n parse,\r\n stringify,\r\n };\r\n}\r\n/**\r\n * Compares an array of numbers as used in PathParser.score and returns a\r\n * number. This function can be used to `sort` an array\r\n *\r\n * @param a - first array of numbers\r\n * @param b - second array of numbers\r\n * @returns 0 if both are equal, < 0 if a should be sorted first, > 0 if b\r\n * should be sorted first\r\n */\r\nfunction compareScoreArray(a, b) {\r\n let i = 0;\r\n while (i < a.length && i < b.length) {\r\n const diff = b[i] - a[i];\r\n // only keep going if diff === 0\r\n if (diff)\r\n return diff;\r\n i++;\r\n }\r\n // if the last subsegment was Static, the shorter segments should be sorted first\r\n // otherwise sort the longest segment first\r\n if (a.length < b.length) {\r\n return a.length === 1 && a[0] === 40 /* Static */ + 40 /* Segment */\r\n ? -1\r\n : 1;\r\n }\r\n else if (a.length > b.length) {\r\n return b.length === 1 && b[0] === 40 /* Static */ + 40 /* Segment */\r\n ? 1\r\n : -1;\r\n }\r\n return 0;\r\n}\r\n/**\r\n * Compare function that can be used with `sort` to sort an array of PathParser\r\n *\r\n * @param a - first PathParser\r\n * @param b - second PathParser\r\n * @returns 0 if both are equal, < 0 if a should be sorted first, > 0 if b\r\n */\r\nfunction comparePathParserScore(a, b) {\r\n let i = 0;\r\n const aScore = a.score;\r\n const bScore = b.score;\r\n while (i < aScore.length && i < bScore.length) {\r\n const comp = compareScoreArray(aScore[i], bScore[i]);\r\n // do not return if both are equal\r\n if (comp)\r\n return comp;\r\n i++;\r\n }\r\n // if a and b share the same score entries but b has more, sort b first\r\n return bScore.length - aScore.length;\r\n // this is the ternary version\r\n // return aScore.length < bScore.length\r\n // ? 1\r\n // : aScore.length > bScore.length\r\n // ? -1\r\n // : 0\r\n}\n\nconst ROOT_TOKEN = {\r\n type: 0 /* Static */,\r\n value: '',\r\n};\r\nconst VALID_PARAM_RE = /[a-zA-Z0-9_]/;\r\n// After some profiling, the cache seems to be unnecessary because tokenizePath\r\n// (the slowest part of adding a route) is very fast\r\n// const tokenCache = new Map()\r\nfunction tokenizePath(path) {\r\n if (!path)\r\n return [[]];\r\n if (path === '/')\r\n return [[ROOT_TOKEN]];\r\n if (!path.startsWith('/')) {\r\n throw new Error((process.env.NODE_ENV !== 'production')\r\n ? `Route paths should start with a \"/\": \"${path}\" should be \"/${path}\".`\r\n : `Invalid path \"${path}\"`);\r\n }\r\n // if (tokenCache.has(path)) return tokenCache.get(path)!\r\n function crash(message) {\r\n throw new Error(`ERR (${state})/\"${buffer}\": ${message}`);\r\n }\r\n let state = 0 /* Static */;\r\n let previousState = state;\r\n const tokens = [];\r\n // the segment will always be valid because we get into the initial state\r\n // with the leading /\r\n let segment;\r\n function finalizeSegment() {\r\n if (segment)\r\n tokens.push(segment);\r\n segment = [];\r\n }\r\n // index on the path\r\n let i = 0;\r\n // char at index\r\n let char;\r\n // buffer of the value read\r\n let buffer = '';\r\n // custom regexp for a param\r\n let customRe = '';\r\n function consumeBuffer() {\r\n if (!buffer)\r\n return;\r\n if (state === 0 /* Static */) {\r\n segment.push({\r\n type: 0 /* Static */,\r\n value: buffer,\r\n });\r\n }\r\n else if (state === 1 /* Param */ ||\r\n state === 2 /* ParamRegExp */ ||\r\n state === 3 /* ParamRegExpEnd */) {\r\n if (segment.length > 1 && (char === '*' || char === '+'))\r\n crash(`A repeatable param (${buffer}) must be alone in its segment. eg: '/:ids+.`);\r\n segment.push({\r\n type: 1 /* Param */,\r\n value: buffer,\r\n regexp: customRe,\r\n repeatable: char === '*' || char === '+',\r\n optional: char === '*' || char === '?',\r\n });\r\n }\r\n else {\r\n crash('Invalid state to consume buffer');\r\n }\r\n buffer = '';\r\n }\r\n function addCharToBuffer() {\r\n buffer += char;\r\n }\r\n while (i < path.length) {\r\n char = path[i++];\r\n if (char === '\\\\' && state !== 2 /* ParamRegExp */) {\r\n previousState = state;\r\n state = 4 /* EscapeNext */;\r\n continue;\r\n }\r\n switch (state) {\r\n case 0 /* Static */:\r\n if (char === '/') {\r\n if (buffer) {\r\n consumeBuffer();\r\n }\r\n finalizeSegment();\r\n }\r\n else if (char === ':') {\r\n consumeBuffer();\r\n state = 1 /* Param */;\r\n }\r\n else {\r\n addCharToBuffer();\r\n }\r\n break;\r\n case 4 /* EscapeNext */:\r\n addCharToBuffer();\r\n state = previousState;\r\n break;\r\n case 1 /* Param */:\r\n if (char === '(') {\r\n state = 2 /* ParamRegExp */;\r\n }\r\n else if (VALID_PARAM_RE.test(char)) {\r\n addCharToBuffer();\r\n }\r\n else {\r\n consumeBuffer();\r\n state = 0 /* Static */;\r\n // go back one character if we were not modifying\r\n if (char !== '*' && char !== '?' && char !== '+')\r\n i--;\r\n }\r\n break;\r\n case 2 /* ParamRegExp */:\r\n // TODO: is it worth handling nested regexp? like :p(?:prefix_([^/]+)_suffix)\r\n // it already works by escaping the closing )\r\n // https://paths.esm.dev/?p=AAMeJbiAwQEcDKbAoAAkP60PG2R6QAvgNaA6AFACM2ABuQBB#\r\n // is this really something people need since you can also write\r\n // /prefix_:p()_suffix\r\n if (char === ')') {\r\n // handle the escaped )\r\n if (customRe[customRe.length - 1] == '\\\\')\r\n customRe = customRe.slice(0, -1) + char;\r\n else\r\n state = 3 /* ParamRegExpEnd */;\r\n }\r\n else {\r\n customRe += char;\r\n }\r\n break;\r\n case 3 /* ParamRegExpEnd */:\r\n // same as finalizing a param\r\n consumeBuffer();\r\n state = 0 /* Static */;\r\n // go back one character if we were not modifying\r\n if (char !== '*' && char !== '?' && char !== '+')\r\n i--;\r\n customRe = '';\r\n break;\r\n default:\r\n crash('Unknown state');\r\n break;\r\n }\r\n }\r\n if (state === 2 /* ParamRegExp */)\r\n crash(`Unfinished custom RegExp for param \"${buffer}\"`);\r\n consumeBuffer();\r\n finalizeSegment();\r\n // tokenCache.set(path, tokens)\r\n return tokens;\r\n}\n\nfunction createRouteRecordMatcher(record, parent, options) {\r\n const parser = tokensToParser(tokenizePath(record.path), options);\r\n // warn against params with the same name\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n const existingKeys = new Set();\r\n for (const key of parser.keys) {\r\n if (existingKeys.has(key.name))\r\n warn(`Found duplicated params with name \"${key.name}\" for path \"${record.path}\". Only the last one will be available on \"$route.params\".`);\r\n existingKeys.add(key.name);\r\n }\r\n }\r\n const matcher = assign(parser, {\r\n record,\r\n parent,\r\n // these needs to be populated by the parent\r\n children: [],\r\n alias: [],\r\n });\r\n if (parent) {\r\n // both are aliases or both are not aliases\r\n // we don't want to mix them because the order is used when\r\n // passing originalRecord in Matcher.addRoute\r\n if (!matcher.record.aliasOf === !parent.record.aliasOf)\r\n parent.children.push(matcher);\r\n }\r\n return matcher;\r\n}\n\n/**\r\n * Creates a Router Matcher.\r\n *\r\n * @internal\r\n * @param routes - array of initial routes\r\n * @param globalOptions - global route options\r\n */\r\nfunction createRouterMatcher(routes, globalOptions) {\r\n // normalized ordered array of matchers\r\n const matchers = [];\r\n const matcherMap = new Map();\r\n globalOptions = mergeOptions({ strict: false, end: true, sensitive: false }, globalOptions);\r\n function getRecordMatcher(name) {\r\n return matcherMap.get(name);\r\n }\r\n function addRoute(record, parent, originalRecord) {\r\n // used later on to remove by name\r\n const isRootAdd = !originalRecord;\r\n const mainNormalizedRecord = normalizeRouteRecord(record);\r\n // we might be the child of an alias\r\n mainNormalizedRecord.aliasOf = originalRecord && originalRecord.record;\r\n const options = mergeOptions(globalOptions, record);\r\n // generate an array of records to correctly handle aliases\r\n const normalizedRecords = [\r\n mainNormalizedRecord,\r\n ];\r\n if ('alias' in record) {\r\n const aliases = typeof record.alias === 'string' ? [record.alias] : record.alias;\r\n for (const alias of aliases) {\r\n normalizedRecords.push(assign({}, mainNormalizedRecord, {\r\n // this allows us to hold a copy of the `components` option\r\n // so that async components cache is hold on the original record\r\n components: originalRecord\r\n ? originalRecord.record.components\r\n : mainNormalizedRecord.components,\r\n path: alias,\r\n // we might be the child of an alias\r\n aliasOf: originalRecord\r\n ? originalRecord.record\r\n : mainNormalizedRecord,\r\n // the aliases are always of the same kind as the original since they\r\n // are defined on the same record\r\n }));\r\n }\r\n }\r\n let matcher;\r\n let originalMatcher;\r\n for (const normalizedRecord of normalizedRecords) {\r\n const { path } = normalizedRecord;\r\n // Build up the path for nested routes if the child isn't an absolute\r\n // route. Only add the / delimiter if the child path isn't empty and if the\r\n // parent path doesn't have a trailing slash\r\n if (parent && path[0] !== '/') {\r\n const parentPath = parent.record.path;\r\n const connectingSlash = parentPath[parentPath.length - 1] === '/' ? '' : '/';\r\n normalizedRecord.path =\r\n parent.record.path + (path && connectingSlash + path);\r\n }\r\n if ((process.env.NODE_ENV !== 'production') && normalizedRecord.path === '*') {\r\n throw new Error('Catch all routes (\"*\") must now be defined using a param with a custom regexp.\\n' +\r\n 'See more at https://next.router.vuejs.org/guide/migration/#removed-star-or-catch-all-routes.');\r\n }\r\n // create the object before hand so it can be passed to children\r\n matcher = createRouteRecordMatcher(normalizedRecord, parent, options);\r\n if ((process.env.NODE_ENV !== 'production') && parent && path[0] === '/')\r\n checkMissingParamsInAbsolutePath(matcher, parent);\r\n // if we are an alias we must tell the original record that we exist\r\n // so we can be removed\r\n if (originalRecord) {\r\n originalRecord.alias.push(matcher);\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n checkSameParams(originalRecord, matcher);\r\n }\r\n }\r\n else {\r\n // otherwise, the first record is the original and others are aliases\r\n originalMatcher = originalMatcher || matcher;\r\n if (originalMatcher !== matcher)\r\n originalMatcher.alias.push(matcher);\r\n // remove the route if named and only for the top record (avoid in nested calls)\r\n // this works because the original record is the first one\r\n if (isRootAdd && record.name && !isAliasRecord(matcher))\r\n removeRoute(record.name);\r\n }\r\n if ('children' in mainNormalizedRecord) {\r\n const children = mainNormalizedRecord.children;\r\n for (let i = 0; i < children.length; i++) {\r\n addRoute(children[i], matcher, originalRecord && originalRecord.children[i]);\r\n }\r\n }\r\n // if there was no original record, then the first one was not an alias and all\r\n // other alias (if any) need to reference this record when adding children\r\n originalRecord = originalRecord || matcher;\r\n // TODO: add normalized records for more flexibility\r\n // if (parent && isAliasRecord(originalRecord)) {\r\n // parent.children.push(originalRecord)\r\n // }\r\n insertMatcher(matcher);\r\n }\r\n return originalMatcher\r\n ? () => {\r\n // since other matchers are aliases, they should be removed by the original matcher\r\n removeRoute(originalMatcher);\r\n }\r\n : noop;\r\n }\r\n function removeRoute(matcherRef) {\r\n if (isRouteName(matcherRef)) {\r\n const matcher = matcherMap.get(matcherRef);\r\n if (matcher) {\r\n matcherMap.delete(matcherRef);\r\n matchers.splice(matchers.indexOf(matcher), 1);\r\n matcher.children.forEach(removeRoute);\r\n matcher.alias.forEach(removeRoute);\r\n }\r\n }\r\n else {\r\n const index = matchers.indexOf(matcherRef);\r\n if (index > -1) {\r\n matchers.splice(index, 1);\r\n if (matcherRef.record.name)\r\n matcherMap.delete(matcherRef.record.name);\r\n matcherRef.children.forEach(removeRoute);\r\n matcherRef.alias.forEach(removeRoute);\r\n }\r\n }\r\n }\r\n function getRoutes() {\r\n return matchers;\r\n }\r\n function insertMatcher(matcher) {\r\n let i = 0;\r\n while (i < matchers.length &&\r\n comparePathParserScore(matcher, matchers[i]) >= 0 &&\r\n // Adding children with empty path should still appear before the parent\r\n // https://github.com/vuejs/router/issues/1124\r\n (matcher.record.path !== matchers[i].record.path ||\r\n !isRecordChildOf(matcher, matchers[i])))\r\n i++;\r\n matchers.splice(i, 0, matcher);\r\n // only add the original record to the name map\r\n if (matcher.record.name && !isAliasRecord(matcher))\r\n matcherMap.set(matcher.record.name, matcher);\r\n }\r\n function resolve(location, currentLocation) {\r\n let matcher;\r\n let params = {};\r\n let path;\r\n let name;\r\n if ('name' in location && location.name) {\r\n matcher = matcherMap.get(location.name);\r\n if (!matcher)\r\n throw createRouterError(1 /* MATCHER_NOT_FOUND */, {\r\n location,\r\n });\r\n name = matcher.record.name;\r\n params = assign(\r\n // paramsFromLocation is a new object\r\n paramsFromLocation(currentLocation.params, \r\n // only keep params that exist in the resolved location\r\n // TODO: only keep optional params coming from a parent record\r\n matcher.keys.filter(k => !k.optional).map(k => k.name)), location.params);\r\n // throws if cannot be stringified\r\n path = matcher.stringify(params);\r\n }\r\n else if ('path' in location) {\r\n // no need to resolve the path with the matcher as it was provided\r\n // this also allows the user to control the encoding\r\n path = location.path;\r\n if ((process.env.NODE_ENV !== 'production') && !path.startsWith('/')) {\r\n warn(`The Matcher cannot resolve relative paths but received \"${path}\". Unless you directly called \\`matcher.resolve(\"${path}\")\\`, this is probably a bug in vue-router. Please open an issue at https://new-issue.vuejs.org/?repo=vuejs/router.`);\r\n }\r\n matcher = matchers.find(m => m.re.test(path));\r\n // matcher should have a value after the loop\r\n if (matcher) {\r\n // TODO: dev warning of unused params if provided\r\n // we know the matcher works because we tested the regexp\r\n params = matcher.parse(path);\r\n name = matcher.record.name;\r\n }\r\n // location is a relative path\r\n }\r\n else {\r\n // match by name or path of current route\r\n matcher = currentLocation.name\r\n ? matcherMap.get(currentLocation.name)\r\n : matchers.find(m => m.re.test(currentLocation.path));\r\n if (!matcher)\r\n throw createRouterError(1 /* MATCHER_NOT_FOUND */, {\r\n location,\r\n currentLocation,\r\n });\r\n name = matcher.record.name;\r\n // since we are navigating to the same location, we don't need to pick the\r\n // params like when `name` is provided\r\n params = assign({}, currentLocation.params, location.params);\r\n path = matcher.stringify(params);\r\n }\r\n const matched = [];\r\n let parentMatcher = matcher;\r\n while (parentMatcher) {\r\n // reversed order so parents are at the beginning\r\n matched.unshift(parentMatcher.record);\r\n parentMatcher = parentMatcher.parent;\r\n }\r\n return {\r\n name,\r\n path,\r\n params,\r\n matched,\r\n meta: mergeMetaFields(matched),\r\n };\r\n }\r\n // add initial routes\r\n routes.forEach(route => addRoute(route));\r\n return { addRoute, resolve, removeRoute, getRoutes, getRecordMatcher };\r\n}\r\nfunction paramsFromLocation(params, keys) {\r\n const newParams = {};\r\n for (const key of keys) {\r\n if (key in params)\r\n newParams[key] = params[key];\r\n }\r\n return newParams;\r\n}\r\n/**\r\n * Normalizes a RouteRecordRaw. Creates a copy\r\n *\r\n * @param record\r\n * @returns the normalized version\r\n */\r\nfunction normalizeRouteRecord(record) {\r\n return {\r\n path: record.path,\r\n redirect: record.redirect,\r\n name: record.name,\r\n meta: record.meta || {},\r\n aliasOf: undefined,\r\n beforeEnter: record.beforeEnter,\r\n props: normalizeRecordProps(record),\r\n children: record.children || [],\r\n instances: {},\r\n leaveGuards: new Set(),\r\n updateGuards: new Set(),\r\n enterCallbacks: {},\r\n components: 'components' in record\r\n ? record.components || {}\r\n : { default: record.component },\r\n };\r\n}\r\n/**\r\n * Normalize the optional `props` in a record to always be an object similar to\r\n * components. Also accept a boolean for components.\r\n * @param record\r\n */\r\nfunction normalizeRecordProps(record) {\r\n const propsObject = {};\r\n // props does not exist on redirect records but we can set false directly\r\n const props = record.props || false;\r\n if ('component' in record) {\r\n propsObject.default = props;\r\n }\r\n else {\r\n // NOTE: we could also allow a function to be applied to every component.\r\n // Would need user feedback for use cases\r\n for (const name in record.components)\r\n propsObject[name] = typeof props === 'boolean' ? props : props[name];\r\n }\r\n return propsObject;\r\n}\r\n/**\r\n * Checks if a record or any of its parent is an alias\r\n * @param record\r\n */\r\nfunction isAliasRecord(record) {\r\n while (record) {\r\n if (record.record.aliasOf)\r\n return true;\r\n record = record.parent;\r\n }\r\n return false;\r\n}\r\n/**\r\n * Merge meta fields of an array of records\r\n *\r\n * @param matched - array of matched records\r\n */\r\nfunction mergeMetaFields(matched) {\r\n return matched.reduce((meta, record) => assign(meta, record.meta), {});\r\n}\r\nfunction mergeOptions(defaults, partialOptions) {\r\n const options = {};\r\n for (const key in defaults) {\r\n options[key] = key in partialOptions ? partialOptions[key] : defaults[key];\r\n }\r\n return options;\r\n}\r\nfunction isSameParam(a, b) {\r\n return (a.name === b.name &&\r\n a.optional === b.optional &&\r\n a.repeatable === b.repeatable);\r\n}\r\n/**\r\n * Check if a path and its alias have the same required params\r\n *\r\n * @param a - original record\r\n * @param b - alias record\r\n */\r\nfunction checkSameParams(a, b) {\r\n for (const key of a.keys) {\r\n if (!key.optional && !b.keys.find(isSameParam.bind(null, key)))\r\n return warn(`Alias \"${b.record.path}\" and the original record: \"${a.record.path}\" should have the exact same param named \"${key.name}\"`);\r\n }\r\n for (const key of b.keys) {\r\n if (!key.optional && !a.keys.find(isSameParam.bind(null, key)))\r\n return warn(`Alias \"${b.record.path}\" and the original record: \"${a.record.path}\" should have the exact same param named \"${key.name}\"`);\r\n }\r\n}\r\nfunction checkMissingParamsInAbsolutePath(record, parent) {\r\n for (const key of parent.keys) {\r\n if (!record.keys.find(isSameParam.bind(null, key)))\r\n return warn(`Absolute path \"${record.record.path}\" should have the exact same param named \"${key.name}\" as its parent \"${parent.record.path}\".`);\r\n }\r\n}\r\nfunction isRecordChildOf(record, parent) {\r\n return parent.children.some(child => child === record || isRecordChildOf(record, child));\r\n}\n\n/**\r\n * Encoding Rules ␣ = Space Path: ␣ \" < > # ? { } Query: ␣ \" < > # & = Hash: ␣ \"\r\n * < > `\r\n *\r\n * On top of that, the RFC3986 (https://tools.ietf.org/html/rfc3986#section-2.2)\r\n * defines some extra characters to be encoded. Most browsers do not encode them\r\n * in encodeURI https://github.com/whatwg/url/issues/369, so it may be safer to\r\n * also encode `!'()*`. Leaving unencoded only ASCII alphanumeric(`a-zA-Z0-9`)\r\n * plus `-._~`. This extra safety should be applied to query by patching the\r\n * string returned by encodeURIComponent encodeURI also encodes `[\\]^`. `\\`\r\n * should be encoded to avoid ambiguity. Browsers (IE, FF, C) transform a `\\`\r\n * into a `/` if directly typed in. The _backtick_ (`````) should also be\r\n * encoded everywhere because some browsers like FF encode it when directly\r\n * written while others don't. Safari and IE don't encode ``\"<>{}``` in hash.\r\n */\r\n// const EXTRA_RESERVED_RE = /[!'()*]/g\r\n// const encodeReservedReplacer = (c: string) => '%' + c.charCodeAt(0).toString(16)\r\nconst HASH_RE = /#/g; // %23\r\nconst AMPERSAND_RE = /&/g; // %26\r\nconst SLASH_RE = /\\//g; // %2F\r\nconst EQUAL_RE = /=/g; // %3D\r\nconst IM_RE = /\\?/g; // %3F\r\nconst PLUS_RE = /\\+/g; // %2B\r\n/**\r\n * NOTE: It's not clear to me if we should encode the + symbol in queries, it\r\n * seems to be less flexible than not doing so and I can't find out the legacy\r\n * systems requiring this for regular requests like text/html. In the standard,\r\n * the encoding of the plus character is only mentioned for\r\n * application/x-www-form-urlencoded\r\n * (https://url.spec.whatwg.org/#urlencoded-parsing) and most browsers seems lo\r\n * leave the plus character as is in queries. To be more flexible, we allow the\r\n * plus character on the query but it can also be manually encoded by the user.\r\n *\r\n * Resources:\r\n * - https://url.spec.whatwg.org/#urlencoded-parsing\r\n * - https://stackoverflow.com/questions/1634271/url-encoding-the-space-character-or-20\r\n */\r\nconst ENC_BRACKET_OPEN_RE = /%5B/g; // [\r\nconst ENC_BRACKET_CLOSE_RE = /%5D/g; // ]\r\nconst ENC_CARET_RE = /%5E/g; // ^\r\nconst ENC_BACKTICK_RE = /%60/g; // `\r\nconst ENC_CURLY_OPEN_RE = /%7B/g; // {\r\nconst ENC_PIPE_RE = /%7C/g; // |\r\nconst ENC_CURLY_CLOSE_RE = /%7D/g; // }\r\nconst ENC_SPACE_RE = /%20/g; // }\r\n/**\r\n * Encode characters that need to be encoded on the path, search and hash\r\n * sections of the URL.\r\n *\r\n * @internal\r\n * @param text - string to encode\r\n * @returns encoded string\r\n */\r\nfunction commonEncode(text) {\r\n return encodeURI('' + text)\r\n .replace(ENC_PIPE_RE, '|')\r\n .replace(ENC_BRACKET_OPEN_RE, '[')\r\n .replace(ENC_BRACKET_CLOSE_RE, ']');\r\n}\r\n/**\r\n * Encode characters that need to be encoded on the hash section of the URL.\r\n *\r\n * @param text - string to encode\r\n * @returns encoded string\r\n */\r\nfunction encodeHash(text) {\r\n return commonEncode(text)\r\n .replace(ENC_CURLY_OPEN_RE, '{')\r\n .replace(ENC_CURLY_CLOSE_RE, '}')\r\n .replace(ENC_CARET_RE, '^');\r\n}\r\n/**\r\n * Encode characters that need to be encoded query values on the query\r\n * section of the URL.\r\n *\r\n * @param text - string to encode\r\n * @returns encoded string\r\n */\r\nfunction encodeQueryValue(text) {\r\n return (commonEncode(text)\r\n // Encode the space as +, encode the + to differentiate it from the space\r\n .replace(PLUS_RE, '%2B')\r\n .replace(ENC_SPACE_RE, '+')\r\n .replace(HASH_RE, '%23')\r\n .replace(AMPERSAND_RE, '%26')\r\n .replace(ENC_BACKTICK_RE, '`')\r\n .replace(ENC_CURLY_OPEN_RE, '{')\r\n .replace(ENC_CURLY_CLOSE_RE, '}')\r\n .replace(ENC_CARET_RE, '^'));\r\n}\r\n/**\r\n * Like `encodeQueryValue` but also encodes the `=` character.\r\n *\r\n * @param text - string to encode\r\n */\r\nfunction encodeQueryKey(text) {\r\n return encodeQueryValue(text).replace(EQUAL_RE, '%3D');\r\n}\r\n/**\r\n * Encode characters that need to be encoded on the path section of the URL.\r\n *\r\n * @param text - string to encode\r\n * @returns encoded string\r\n */\r\nfunction encodePath(text) {\r\n return commonEncode(text).replace(HASH_RE, '%23').replace(IM_RE, '%3F');\r\n}\r\n/**\r\n * Encode characters that need to be encoded on the path section of the URL as a\r\n * param. This function encodes everything {@link encodePath} does plus the\r\n * slash (`/`) character. If `text` is `null` or `undefined`, returns an empty\r\n * string instead.\r\n *\r\n * @param text - string to encode\r\n * @returns encoded string\r\n */\r\nfunction encodeParam(text) {\r\n return text == null ? '' : encodePath(text).replace(SLASH_RE, '%2F');\r\n}\r\n/**\r\n * Decode text using `decodeURIComponent`. Returns the original text if it\r\n * fails.\r\n *\r\n * @param text - string to decode\r\n * @returns decoded string\r\n */\r\nfunction decode(text) {\r\n try {\r\n return decodeURIComponent('' + text);\r\n }\r\n catch (err) {\r\n (process.env.NODE_ENV !== 'production') && warn(`Error decoding \"${text}\". Using original value`);\r\n }\r\n return '' + text;\r\n}\n\n/**\r\n * Transforms a queryString into a {@link LocationQuery} object. Accept both, a\r\n * version with the leading `?` and without Should work as URLSearchParams\r\n\n * @internal\r\n *\r\n * @param search - search string to parse\r\n * @returns a query object\r\n */\r\nfunction parseQuery(search) {\r\n const query = {};\r\n // avoid creating an object with an empty key and empty value\r\n // because of split('&')\r\n if (search === '' || search === '?')\r\n return query;\r\n const hasLeadingIM = search[0] === '?';\r\n const searchParams = (hasLeadingIM ? search.slice(1) : search).split('&');\r\n for (let i = 0; i < searchParams.length; ++i) {\r\n // pre decode the + into space\r\n const searchParam = searchParams[i].replace(PLUS_RE, ' ');\r\n // allow the = character\r\n const eqPos = searchParam.indexOf('=');\r\n const key = decode(eqPos < 0 ? searchParam : searchParam.slice(0, eqPos));\r\n const value = eqPos < 0 ? null : decode(searchParam.slice(eqPos + 1));\r\n if (key in query) {\r\n // an extra variable for ts types\r\n let currentValue = query[key];\r\n if (!Array.isArray(currentValue)) {\r\n currentValue = query[key] = [currentValue];\r\n }\r\n currentValue.push(value);\r\n }\r\n else {\r\n query[key] = value;\r\n }\r\n }\r\n return query;\r\n}\r\n/**\r\n * Stringifies a {@link LocationQueryRaw} object. Like `URLSearchParams`, it\r\n * doesn't prepend a `?`\r\n *\r\n * @internal\r\n *\r\n * @param query - query object to stringify\r\n * @returns string version of the query without the leading `?`\r\n */\r\nfunction stringifyQuery(query) {\r\n let search = '';\r\n for (let key in query) {\r\n const value = query[key];\r\n key = encodeQueryKey(key);\r\n if (value == null) {\r\n // only null adds the value\r\n if (value !== undefined) {\r\n search += (search.length ? '&' : '') + key;\r\n }\r\n continue;\r\n }\r\n // keep null values\r\n const values = Array.isArray(value)\r\n ? value.map(v => v && encodeQueryValue(v))\r\n : [value && encodeQueryValue(value)];\r\n values.forEach(value => {\r\n // skip undefined values in arrays as if they were not present\r\n // smaller code than using filter\r\n if (value !== undefined) {\r\n // only append & with non-empty search\r\n search += (search.length ? '&' : '') + key;\r\n if (value != null)\r\n search += '=' + value;\r\n }\r\n });\r\n }\r\n return search;\r\n}\r\n/**\r\n * Transforms a {@link LocationQueryRaw} into a {@link LocationQuery} by casting\r\n * numbers into strings, removing keys with an undefined value and replacing\r\n * undefined with null in arrays\r\n *\r\n * @param query - query object to normalize\r\n * @returns a normalized query object\r\n */\r\nfunction normalizeQuery(query) {\r\n const normalizedQuery = {};\r\n for (const key in query) {\r\n const value = query[key];\r\n if (value !== undefined) {\r\n normalizedQuery[key] = Array.isArray(value)\r\n ? value.map(v => (v == null ? null : '' + v))\r\n : value == null\r\n ? value\r\n : '' + value;\r\n }\r\n }\r\n return normalizedQuery;\r\n}\n\n/**\r\n * Create a list of callbacks that can be reset. Used to create before and after navigation guards list\r\n */\r\nfunction useCallbacks() {\r\n let handlers = [];\r\n function add(handler) {\r\n handlers.push(handler);\r\n return () => {\r\n const i = handlers.indexOf(handler);\r\n if (i > -1)\r\n handlers.splice(i, 1);\r\n };\r\n }\r\n function reset() {\r\n handlers = [];\r\n }\r\n return {\r\n add,\r\n list: () => handlers,\r\n reset,\r\n };\r\n}\n\nfunction registerGuard(record, name, guard) {\r\n const removeFromList = () => {\r\n record[name].delete(guard);\r\n };\r\n onUnmounted(removeFromList);\r\n onDeactivated(removeFromList);\r\n onActivated(() => {\r\n record[name].add(guard);\r\n });\r\n record[name].add(guard);\r\n}\r\n/**\r\n * Add a navigation guard that triggers whenever the component for the current\r\n * location is about to be left. Similar to {@link beforeRouteLeave} but can be\r\n * used in any component. The guard is removed when the component is unmounted.\r\n *\r\n * @param leaveGuard - {@link NavigationGuard}\r\n */\r\nfunction onBeforeRouteLeave(leaveGuard) {\r\n if ((process.env.NODE_ENV !== 'production') && !getCurrentInstance()) {\r\n warn('getCurrentInstance() returned null. onBeforeRouteLeave() must be called at the top of a setup function');\r\n return;\r\n }\r\n const activeRecord = inject(matchedRouteKey, \r\n // to avoid warning\r\n {}).value;\r\n if (!activeRecord) {\r\n (process.env.NODE_ENV !== 'production') &&\r\n warn('No active route record was found when calling `onBeforeRouteLeave()`. Make sure you call this function inside of a component child of . Maybe you called it inside of App.vue?');\r\n return;\r\n }\r\n registerGuard(activeRecord, 'leaveGuards', leaveGuard);\r\n}\r\n/**\r\n * Add a navigation guard that triggers whenever the current location is about\r\n * to be updated. Similar to {@link beforeRouteUpdate} but can be used in any\r\n * component. The guard is removed when the component is unmounted.\r\n *\r\n * @param updateGuard - {@link NavigationGuard}\r\n */\r\nfunction onBeforeRouteUpdate(updateGuard) {\r\n if ((process.env.NODE_ENV !== 'production') && !getCurrentInstance()) {\r\n warn('getCurrentInstance() returned null. onBeforeRouteUpdate() must be called at the top of a setup function');\r\n return;\r\n }\r\n const activeRecord = inject(matchedRouteKey, \r\n // to avoid warning\r\n {}).value;\r\n if (!activeRecord) {\r\n (process.env.NODE_ENV !== 'production') &&\r\n warn('No active route record was found when calling `onBeforeRouteUpdate()`. Make sure you call this function inside of a component child of . Maybe you called it inside of App.vue?');\r\n return;\r\n }\r\n registerGuard(activeRecord, 'updateGuards', updateGuard);\r\n}\r\nfunction guardToPromiseFn(guard, to, from, record, name) {\r\n // keep a reference to the enterCallbackArray to prevent pushing callbacks if a new navigation took place\r\n const enterCallbackArray = record &&\r\n // name is defined if record is because of the function overload\r\n (record.enterCallbacks[name] = record.enterCallbacks[name] || []);\r\n return () => new Promise((resolve, reject) => {\r\n const next = (valid) => {\r\n if (valid === false)\r\n reject(createRouterError(4 /* NAVIGATION_ABORTED */, {\r\n from,\r\n to,\r\n }));\r\n else if (valid instanceof Error) {\r\n reject(valid);\r\n }\r\n else if (isRouteLocation(valid)) {\r\n reject(createRouterError(2 /* NAVIGATION_GUARD_REDIRECT */, {\r\n from: to,\r\n to: valid,\r\n }));\r\n }\r\n else {\r\n if (enterCallbackArray &&\r\n // since enterCallbackArray is truthy, both record and name also are\r\n record.enterCallbacks[name] === enterCallbackArray &&\r\n typeof valid === 'function')\r\n enterCallbackArray.push(valid);\r\n resolve();\r\n }\r\n };\r\n // wrapping with Promise.resolve allows it to work with both async and sync guards\r\n const guardReturn = guard.call(record && record.instances[name], to, from, (process.env.NODE_ENV !== 'production') ? canOnlyBeCalledOnce(next, to, from) : next);\r\n let guardCall = Promise.resolve(guardReturn);\r\n if (guard.length < 3)\r\n guardCall = guardCall.then(next);\r\n if ((process.env.NODE_ENV !== 'production') && guard.length > 2) {\r\n const message = `The \"next\" callback was never called inside of ${guard.name ? '\"' + guard.name + '\"' : ''}:\\n${guard.toString()}\\n. If you are returning a value instead of calling \"next\", make sure to remove the \"next\" parameter from your function.`;\r\n if (typeof guardReturn === 'object' && 'then' in guardReturn) {\r\n guardCall = guardCall.then(resolvedValue => {\r\n // @ts-expect-error: _called is added at canOnlyBeCalledOnce\r\n if (!next._called) {\r\n warn(message);\r\n return Promise.reject(new Error('Invalid navigation guard'));\r\n }\r\n return resolvedValue;\r\n });\r\n // TODO: test me!\r\n }\r\n else if (guardReturn !== undefined) {\r\n // @ts-expect-error: _called is added at canOnlyBeCalledOnce\r\n if (!next._called) {\r\n warn(message);\r\n reject(new Error('Invalid navigation guard'));\r\n return;\r\n }\r\n }\r\n }\r\n guardCall.catch(err => reject(err));\r\n });\r\n}\r\nfunction canOnlyBeCalledOnce(next, to, from) {\r\n let called = 0;\r\n return function () {\r\n if (called++ === 1)\r\n warn(`The \"next\" callback was called more than once in one navigation guard when going from \"${from.fullPath}\" to \"${to.fullPath}\". It should be called exactly one time in each navigation guard. This will fail in production.`);\r\n // @ts-expect-error: we put it in the original one because it's easier to check\r\n next._called = true;\r\n if (called === 1)\r\n next.apply(null, arguments);\r\n };\r\n}\r\nfunction extractComponentsGuards(matched, guardType, to, from) {\r\n const guards = [];\r\n for (const record of matched) {\r\n for (const name in record.components) {\r\n let rawComponent = record.components[name];\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n if (!rawComponent ||\r\n (typeof rawComponent !== 'object' &&\r\n typeof rawComponent !== 'function')) {\r\n warn(`Component \"${name}\" in record with path \"${record.path}\" is not` +\r\n ` a valid component. Received \"${String(rawComponent)}\".`);\r\n // throw to ensure we stop here but warn to ensure the message isn't\r\n // missed by the user\r\n throw new Error('Invalid route component');\r\n }\r\n else if ('then' in rawComponent) {\r\n // warn if user wrote import('/component.vue') instead of () =>\r\n // import('./component.vue')\r\n warn(`Component \"${name}\" in record with path \"${record.path}\" is a ` +\r\n `Promise instead of a function that returns a Promise. Did you ` +\r\n `write \"import('./MyPage.vue')\" instead of ` +\r\n `\"() => import('./MyPage.vue')\" ? This will break in ` +\r\n `production if not fixed.`);\r\n const promise = rawComponent;\r\n rawComponent = () => promise;\r\n }\r\n else if (rawComponent.__asyncLoader &&\r\n // warn only once per component\r\n !rawComponent.__warnedDefineAsync) {\r\n rawComponent.__warnedDefineAsync = true;\r\n warn(`Component \"${name}\" in record with path \"${record.path}\" is defined ` +\r\n `using \"defineAsyncComponent()\". ` +\r\n `Write \"() => import('./MyPage.vue')\" instead of ` +\r\n `\"defineAsyncComponent(() => import('./MyPage.vue'))\".`);\r\n }\r\n }\r\n // skip update and leave guards if the route component is not mounted\r\n if (guardType !== 'beforeRouteEnter' && !record.instances[name])\r\n continue;\r\n if (isRouteComponent(rawComponent)) {\r\n // __vccOpts is added by vue-class-component and contain the regular options\r\n const options = rawComponent.__vccOpts || rawComponent;\r\n const guard = options[guardType];\r\n guard && guards.push(guardToPromiseFn(guard, to, from, record, name));\r\n }\r\n else {\r\n // start requesting the chunk already\r\n let componentPromise = rawComponent();\r\n if ((process.env.NODE_ENV !== 'production') && !('catch' in componentPromise)) {\r\n warn(`Component \"${name}\" in record with path \"${record.path}\" is a function that does not return a Promise. If you were passing a functional component, make sure to add a \"displayName\" to the component. This will break in production if not fixed.`);\r\n componentPromise = Promise.resolve(componentPromise);\r\n }\r\n guards.push(() => componentPromise.then(resolved => {\r\n if (!resolved)\r\n return Promise.reject(new Error(`Couldn't resolve component \"${name}\" at \"${record.path}\"`));\r\n const resolvedComponent = isESModule(resolved)\r\n ? resolved.default\r\n : resolved;\r\n // replace the function with the resolved component\r\n record.components[name] = resolvedComponent;\r\n // __vccOpts is added by vue-class-component and contain the regular options\r\n const options = resolvedComponent.__vccOpts || resolvedComponent;\r\n const guard = options[guardType];\r\n return guard && guardToPromiseFn(guard, to, from, record, name)();\r\n }));\r\n }\r\n }\r\n }\r\n return guards;\r\n}\r\n/**\r\n * Allows differentiating lazy components from functional components and vue-class-component\r\n *\r\n * @param component\r\n */\r\nfunction isRouteComponent(component) {\r\n return (typeof component === 'object' ||\r\n 'displayName' in component ||\r\n 'props' in component ||\r\n '__vccOpts' in component);\r\n}\n\n// TODO: we could allow currentRoute as a prop to expose `isActive` and\r\n// `isExactActive` behavior should go through an RFC\r\nfunction useLink(props) {\r\n const router = inject(routerKey);\r\n const currentRoute = inject(routeLocationKey);\r\n const route = computed(() => router.resolve(unref(props.to)));\r\n const activeRecordIndex = computed(() => {\r\n const { matched } = route.value;\r\n const { length } = matched;\r\n const routeMatched = matched[length - 1];\r\n const currentMatched = currentRoute.matched;\r\n if (!routeMatched || !currentMatched.length)\r\n return -1;\r\n const index = currentMatched.findIndex(isSameRouteRecord.bind(null, routeMatched));\r\n if (index > -1)\r\n return index;\r\n // possible parent record\r\n const parentRecordPath = getOriginalPath(matched[length - 2]);\r\n return (\r\n // we are dealing with nested routes\r\n length > 1 &&\r\n // if the parent and matched route have the same path, this link is\r\n // referring to the empty child. Or we currently are on a different\r\n // child of the same parent\r\n getOriginalPath(routeMatched) === parentRecordPath &&\r\n // avoid comparing the child with its parent\r\n currentMatched[currentMatched.length - 1].path !== parentRecordPath\r\n ? currentMatched.findIndex(isSameRouteRecord.bind(null, matched[length - 2]))\r\n : index);\r\n });\r\n const isActive = computed(() => activeRecordIndex.value > -1 &&\r\n includesParams(currentRoute.params, route.value.params));\r\n const isExactActive = computed(() => activeRecordIndex.value > -1 &&\r\n activeRecordIndex.value === currentRoute.matched.length - 1 &&\r\n isSameRouteLocationParams(currentRoute.params, route.value.params));\r\n function navigate(e = {}) {\r\n if (guardEvent(e)) {\r\n return router[unref(props.replace) ? 'replace' : 'push'](unref(props.to)\r\n // avoid uncaught errors are they are logged anyway\r\n ).catch(noop);\r\n }\r\n return Promise.resolve();\r\n }\r\n // devtools only\r\n if (((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) && isBrowser) {\r\n const instance = getCurrentInstance();\r\n if (instance) {\r\n const linkContextDevtools = {\r\n route: route.value,\r\n isActive: isActive.value,\r\n isExactActive: isExactActive.value,\r\n };\r\n // @ts-expect-error: this is internal\r\n instance.__vrl_devtools = instance.__vrl_devtools || [];\r\n // @ts-expect-error: this is internal\r\n instance.__vrl_devtools.push(linkContextDevtools);\r\n watchEffect(() => {\r\n linkContextDevtools.route = route.value;\r\n linkContextDevtools.isActive = isActive.value;\r\n linkContextDevtools.isExactActive = isExactActive.value;\r\n }, { flush: 'post' });\r\n }\r\n }\r\n return {\r\n route,\r\n href: computed(() => route.value.href),\r\n isActive,\r\n isExactActive,\r\n navigate,\r\n };\r\n}\r\nconst RouterLinkImpl = /*#__PURE__*/ defineComponent({\r\n name: 'RouterLink',\r\n props: {\r\n to: {\r\n type: [String, Object],\r\n required: true,\r\n },\r\n replace: Boolean,\r\n activeClass: String,\r\n // inactiveClass: String,\r\n exactActiveClass: String,\r\n custom: Boolean,\r\n ariaCurrentValue: {\r\n type: String,\r\n default: 'page',\r\n },\r\n },\r\n useLink,\r\n setup(props, { slots }) {\r\n const link = reactive(useLink(props));\r\n const { options } = inject(routerKey);\r\n const elClass = computed(() => ({\r\n [getLinkClass(props.activeClass, options.linkActiveClass, 'router-link-active')]: link.isActive,\r\n // [getLinkClass(\r\n // props.inactiveClass,\r\n // options.linkInactiveClass,\r\n // 'router-link-inactive'\r\n // )]: !link.isExactActive,\r\n [getLinkClass(props.exactActiveClass, options.linkExactActiveClass, 'router-link-exact-active')]: link.isExactActive,\r\n }));\r\n return () => {\r\n const children = slots.default && slots.default(link);\r\n return props.custom\r\n ? children\r\n : h('a', {\r\n 'aria-current': link.isExactActive\r\n ? props.ariaCurrentValue\r\n : null,\r\n href: link.href,\r\n // this would override user added attrs but Vue will still add\r\n // the listener so we end up triggering both\r\n onClick: link.navigate,\r\n class: elClass.value,\r\n }, children);\r\n };\r\n },\r\n});\r\n// export the public type for h/tsx inference\r\n// also to avoid inline import() in generated d.ts files\r\n/**\r\n * Component to render a link that triggers a navigation on click.\r\n */\r\nconst RouterLink = RouterLinkImpl;\r\nfunction guardEvent(e) {\r\n // don't redirect with control keys\r\n if (e.metaKey || e.altKey || e.ctrlKey || e.shiftKey)\r\n return;\r\n // don't redirect when preventDefault called\r\n if (e.defaultPrevented)\r\n return;\r\n // don't redirect on right click\r\n if (e.button !== undefined && e.button !== 0)\r\n return;\r\n // don't redirect if `target=\"_blank\"`\r\n // @ts-expect-error getAttribute does exist\r\n if (e.currentTarget && e.currentTarget.getAttribute) {\r\n // @ts-expect-error getAttribute exists\r\n const target = e.currentTarget.getAttribute('target');\r\n if (/\\b_blank\\b/i.test(target))\r\n return;\r\n }\r\n // this may be a Weex event which doesn't have this method\r\n if (e.preventDefault)\r\n e.preventDefault();\r\n return true;\r\n}\r\nfunction includesParams(outer, inner) {\r\n for (const key in inner) {\r\n const innerValue = inner[key];\r\n const outerValue = outer[key];\r\n if (typeof innerValue === 'string') {\r\n if (innerValue !== outerValue)\r\n return false;\r\n }\r\n else {\r\n if (!Array.isArray(outerValue) ||\r\n outerValue.length !== innerValue.length ||\r\n innerValue.some((value, i) => value !== outerValue[i]))\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\n/**\r\n * Get the original path value of a record by following its aliasOf\r\n * @param record\r\n */\r\nfunction getOriginalPath(record) {\r\n return record ? (record.aliasOf ? record.aliasOf.path : record.path) : '';\r\n}\r\n/**\r\n * Utility class to get the active class based on defaults.\r\n * @param propClass\r\n * @param globalClass\r\n * @param defaultClass\r\n */\r\nconst getLinkClass = (propClass, globalClass, defaultClass) => propClass != null\r\n ? propClass\r\n : globalClass != null\r\n ? globalClass\r\n : defaultClass;\n\nconst RouterViewImpl = /*#__PURE__*/ defineComponent({\r\n name: 'RouterView',\r\n // #674 we manually inherit them\r\n inheritAttrs: false,\r\n props: {\r\n name: {\r\n type: String,\r\n default: 'default',\r\n },\r\n route: Object,\r\n },\r\n setup(props, { attrs, slots }) {\r\n (process.env.NODE_ENV !== 'production') && warnDeprecatedUsage();\r\n const injectedRoute = inject(routerViewLocationKey);\r\n const routeToDisplay = computed(() => props.route || injectedRoute.value);\r\n const depth = inject(viewDepthKey, 0);\r\n const matchedRouteRef = computed(() => routeToDisplay.value.matched[depth]);\r\n provide(viewDepthKey, depth + 1);\r\n provide(matchedRouteKey, matchedRouteRef);\r\n provide(routerViewLocationKey, routeToDisplay);\r\n const viewRef = ref();\r\n // watch at the same time the component instance, the route record we are\r\n // rendering, and the name\r\n watch(() => [viewRef.value, matchedRouteRef.value, props.name], ([instance, to, name], [oldInstance, from, oldName]) => {\r\n // copy reused instances\r\n if (to) {\r\n // this will update the instance for new instances as well as reused\r\n // instances when navigating to a new route\r\n to.instances[name] = instance;\r\n // the component instance is reused for a different route or name so\r\n // we copy any saved update or leave guards. With async setup, the\r\n // mounting component will mount before the matchedRoute changes,\r\n // making instance === oldInstance, so we check if guards have been\r\n // added before. This works because we remove guards when\r\n // unmounting/deactivating components\r\n if (from && from !== to && instance && instance === oldInstance) {\r\n if (!to.leaveGuards.size) {\r\n to.leaveGuards = from.leaveGuards;\r\n }\r\n if (!to.updateGuards.size) {\r\n to.updateGuards = from.updateGuards;\r\n }\r\n }\r\n }\r\n // trigger beforeRouteEnter next callbacks\r\n if (instance &&\r\n to &&\r\n // if there is no instance but to and from are the same this might be\r\n // the first visit\r\n (!from || !isSameRouteRecord(to, from) || !oldInstance)) {\r\n (to.enterCallbacks[name] || []).forEach(callback => callback(instance));\r\n }\r\n }, { flush: 'post' });\r\n return () => {\r\n const route = routeToDisplay.value;\r\n const matchedRoute = matchedRouteRef.value;\r\n const ViewComponent = matchedRoute && matchedRoute.components[props.name];\r\n // we need the value at the time we render because when we unmount, we\r\n // navigated to a different location so the value is different\r\n const currentName = props.name;\r\n if (!ViewComponent) {\r\n return normalizeSlot(slots.default, { Component: ViewComponent, route });\r\n }\r\n // props from route configuration\r\n const routePropsOption = matchedRoute.props[props.name];\r\n const routeProps = routePropsOption\r\n ? routePropsOption === true\r\n ? route.params\r\n : typeof routePropsOption === 'function'\r\n ? routePropsOption(route)\r\n : routePropsOption\r\n : null;\r\n const onVnodeUnmounted = vnode => {\r\n // remove the instance reference to prevent leak\r\n if (vnode.component.isUnmounted) {\r\n matchedRoute.instances[currentName] = null;\r\n }\r\n };\r\n const component = h(ViewComponent, assign({}, routeProps, attrs, {\r\n onVnodeUnmounted,\r\n ref: viewRef,\r\n }));\r\n if (((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) &&\r\n isBrowser &&\r\n component.ref) {\r\n // TODO: can display if it's an alias, its props\r\n const info = {\r\n depth,\r\n name: matchedRoute.name,\r\n path: matchedRoute.path,\r\n meta: matchedRoute.meta,\r\n };\r\n const internalInstances = Array.isArray(component.ref)\r\n ? component.ref.map(r => r.i)\r\n : [component.ref.i];\r\n internalInstances.forEach(instance => {\r\n // @ts-expect-error\r\n instance.__vrv_devtools = info;\r\n });\r\n }\r\n return (\r\n // pass the vnode to the slot as a prop.\r\n // h and both accept vnodes\r\n normalizeSlot(slots.default, { Component: component, route }) ||\r\n component);\r\n };\r\n },\r\n});\r\nfunction normalizeSlot(slot, data) {\r\n if (!slot)\r\n return null;\r\n const slotContent = slot(data);\r\n return slotContent.length === 1 ? slotContent[0] : slotContent;\r\n}\r\n// export the public type for h/tsx inference\r\n// also to avoid inline import() in generated d.ts files\r\n/**\r\n * Component to display the current route the user is at.\r\n */\r\nconst RouterView = RouterViewImpl;\r\n// warn against deprecated usage with & \r\n// due to functional component being no longer eager in Vue 3\r\nfunction warnDeprecatedUsage() {\r\n const instance = getCurrentInstance();\r\n const parentName = instance.parent && instance.parent.type.name;\r\n if (parentName &&\r\n (parentName === 'KeepAlive' || parentName.includes('Transition'))) {\r\n const comp = parentName === 'KeepAlive' ? 'keep-alive' : 'transition';\r\n warn(` can no longer be used directly inside or .\\n` +\r\n `Use slot props instead:\\n\\n` +\r\n `\\n` +\r\n ` <${comp}>\\n` +\r\n ` \\n` +\r\n ` \\n` +\r\n ``);\r\n }\r\n}\n\nfunction formatRouteLocation(routeLocation, tooltip) {\r\n const copy = assign({}, routeLocation, {\r\n // remove variables that can contain vue instances\r\n matched: routeLocation.matched.map(matched => omit(matched, ['instances', 'children', 'aliasOf'])),\r\n });\r\n return {\r\n _custom: {\r\n type: null,\r\n readOnly: true,\r\n display: routeLocation.fullPath,\r\n tooltip,\r\n value: copy,\r\n },\r\n };\r\n}\r\nfunction formatDisplay(display) {\r\n return {\r\n _custom: {\r\n display,\r\n },\r\n };\r\n}\r\n// to support multiple router instances\r\nlet routerId = 0;\r\nfunction addDevtools(app, router, matcher) {\r\n // Take over router.beforeEach and afterEach\r\n // make sure we are not registering the devtool twice\r\n if (router.__hasDevtools)\r\n return;\r\n router.__hasDevtools = true;\r\n // increment to support multiple router instances\r\n const id = routerId++;\r\n setupDevtoolsPlugin({\r\n id: 'org.vuejs.router' + (id ? '.' + id : ''),\r\n label: 'Vue Router',\r\n packageName: 'vue-router',\r\n homepage: 'https://router.vuejs.org',\r\n logo: 'https://router.vuejs.org/logo.png',\r\n componentStateTypes: ['Routing'],\r\n app,\r\n }, api => {\r\n // display state added by the router\r\n api.on.inspectComponent((payload, ctx) => {\r\n if (payload.instanceData) {\r\n payload.instanceData.state.push({\r\n type: 'Routing',\r\n key: '$route',\r\n editable: false,\r\n value: formatRouteLocation(router.currentRoute.value, 'Current Route'),\r\n });\r\n }\r\n });\r\n // mark router-link as active and display tags on router views\r\n api.on.visitComponentTree(({ treeNode: node, componentInstance }) => {\r\n if (componentInstance.__vrv_devtools) {\r\n const info = componentInstance.__vrv_devtools;\r\n node.tags.push({\r\n label: (info.name ? `${info.name.toString()}: ` : '') + info.path,\r\n textColor: 0,\r\n tooltip: 'This component is rendered by <router-view>',\r\n backgroundColor: PINK_500,\r\n });\r\n }\r\n // if multiple useLink are used\r\n if (Array.isArray(componentInstance.__vrl_devtools)) {\r\n componentInstance.__devtoolsApi = api;\r\n componentInstance.__vrl_devtools.forEach(devtoolsData => {\r\n let backgroundColor = ORANGE_400;\r\n let tooltip = '';\r\n if (devtoolsData.isExactActive) {\r\n backgroundColor = LIME_500;\r\n tooltip = 'This is exactly active';\r\n }\r\n else if (devtoolsData.isActive) {\r\n backgroundColor = BLUE_600;\r\n tooltip = 'This link is active';\r\n }\r\n node.tags.push({\r\n label: devtoolsData.route.path,\r\n textColor: 0,\r\n tooltip,\r\n backgroundColor,\r\n });\r\n });\r\n }\r\n });\r\n watch(router.currentRoute, () => {\r\n // refresh active state\r\n refreshRoutesView();\r\n api.notifyComponentUpdate();\r\n api.sendInspectorTree(routerInspectorId);\r\n api.sendInspectorState(routerInspectorId);\r\n });\r\n const navigationsLayerId = 'router:navigations:' + id;\r\n api.addTimelineLayer({\r\n id: navigationsLayerId,\r\n label: `Router${id ? ' ' + id : ''} Navigations`,\r\n color: 0x40a8c4,\r\n });\r\n // const errorsLayerId = 'router:errors'\r\n // api.addTimelineLayer({\r\n // id: errorsLayerId,\r\n // label: 'Router Errors',\r\n // color: 0xea5455,\r\n // })\r\n router.onError((error, to) => {\r\n api.addTimelineEvent({\r\n layerId: navigationsLayerId,\r\n event: {\r\n title: 'Error during Navigation',\r\n subtitle: to.fullPath,\r\n logType: 'error',\r\n time: Date.now(),\r\n data: { error },\r\n groupId: to.meta.__navigationId,\r\n },\r\n });\r\n });\r\n // attached to `meta` and used to group events\r\n let navigationId = 0;\r\n router.beforeEach((to, from) => {\r\n const data = {\r\n guard: formatDisplay('beforeEach'),\r\n from: formatRouteLocation(from, 'Current Location during this navigation'),\r\n to: formatRouteLocation(to, 'Target location'),\r\n };\r\n // Used to group navigations together, hide from devtools\r\n Object.defineProperty(to.meta, '__navigationId', {\r\n value: navigationId++,\r\n });\r\n api.addTimelineEvent({\r\n layerId: navigationsLayerId,\r\n event: {\r\n time: Date.now(),\r\n title: 'Start of navigation',\r\n subtitle: to.fullPath,\r\n data,\r\n groupId: to.meta.__navigationId,\r\n },\r\n });\r\n });\r\n router.afterEach((to, from, failure) => {\r\n const data = {\r\n guard: formatDisplay('afterEach'),\r\n };\r\n if (failure) {\r\n data.failure = {\r\n _custom: {\r\n type: Error,\r\n readOnly: true,\r\n display: failure ? failure.message : '',\r\n tooltip: 'Navigation Failure',\r\n value: failure,\r\n },\r\n };\r\n data.status = formatDisplay('❌');\r\n }\r\n else {\r\n data.status = formatDisplay('✅');\r\n }\r\n // we set here to have the right order\r\n data.from = formatRouteLocation(from, 'Current Location during this navigation');\r\n data.to = formatRouteLocation(to, 'Target location');\r\n api.addTimelineEvent({\r\n layerId: navigationsLayerId,\r\n event: {\r\n title: 'End of navigation',\r\n subtitle: to.fullPath,\r\n time: Date.now(),\r\n data,\r\n logType: failure ? 'warning' : 'default',\r\n groupId: to.meta.__navigationId,\r\n },\r\n });\r\n });\r\n /**\r\n * Inspector of Existing routes\r\n */\r\n const routerInspectorId = 'router-inspector:' + id;\r\n api.addInspector({\r\n id: routerInspectorId,\r\n label: 'Routes' + (id ? ' ' + id : ''),\r\n icon: 'book',\r\n treeFilterPlaceholder: 'Search routes',\r\n });\r\n function refreshRoutesView() {\r\n // the routes view isn't active\r\n if (!activeRoutesPayload)\r\n return;\r\n const payload = activeRoutesPayload;\r\n // children routes will appear as nested\r\n let routes = matcher.getRoutes().filter(route => !route.parent);\r\n // reset match state to false\r\n routes.forEach(resetMatchStateOnRouteRecord);\r\n // apply a match state if there is a payload\r\n if (payload.filter) {\r\n routes = routes.filter(route => \r\n // save matches state based on the payload\r\n isRouteMatching(route, payload.filter.toLowerCase()));\r\n }\r\n // mark active routes\r\n routes.forEach(route => markRouteRecordActive(route, router.currentRoute.value));\r\n payload.rootNodes = routes.map(formatRouteRecordForInspector);\r\n }\r\n let activeRoutesPayload;\r\n api.on.getInspectorTree(payload => {\r\n activeRoutesPayload = payload;\r\n if (payload.app === app && payload.inspectorId === routerInspectorId) {\r\n refreshRoutesView();\r\n }\r\n });\r\n /**\r\n * Display information about the currently selected route record\r\n */\r\n api.on.getInspectorState(payload => {\r\n if (payload.app === app && payload.inspectorId === routerInspectorId) {\r\n const routes = matcher.getRoutes();\r\n const route = routes.find(route => route.record.__vd_id === payload.nodeId);\r\n if (route) {\r\n payload.state = {\r\n options: formatRouteRecordMatcherForStateInspector(route),\r\n };\r\n }\r\n }\r\n });\r\n api.sendInspectorTree(routerInspectorId);\r\n api.sendInspectorState(routerInspectorId);\r\n });\r\n}\r\nfunction modifierForKey(key) {\r\n if (key.optional) {\r\n return key.repeatable ? '*' : '?';\r\n }\r\n else {\r\n return key.repeatable ? '+' : '';\r\n }\r\n}\r\nfunction formatRouteRecordMatcherForStateInspector(route) {\r\n const { record } = route;\r\n const fields = [\r\n { editable: false, key: 'path', value: record.path },\r\n ];\r\n if (record.name != null) {\r\n fields.push({\r\n editable: false,\r\n key: 'name',\r\n value: record.name,\r\n });\r\n }\r\n fields.push({ editable: false, key: 'regexp', value: route.re });\r\n if (route.keys.length) {\r\n fields.push({\r\n editable: false,\r\n key: 'keys',\r\n value: {\r\n _custom: {\r\n type: null,\r\n readOnly: true,\r\n display: route.keys\r\n .map(key => `${key.name}${modifierForKey(key)}`)\r\n .join(' '),\r\n tooltip: 'Param keys',\r\n value: route.keys,\r\n },\r\n },\r\n });\r\n }\r\n if (record.redirect != null) {\r\n fields.push({\r\n editable: false,\r\n key: 'redirect',\r\n value: record.redirect,\r\n });\r\n }\r\n if (route.alias.length) {\r\n fields.push({\r\n editable: false,\r\n key: 'aliases',\r\n value: route.alias.map(alias => alias.record.path),\r\n });\r\n }\r\n fields.push({\r\n key: 'score',\r\n editable: false,\r\n value: {\r\n _custom: {\r\n type: null,\r\n readOnly: true,\r\n display: route.score.map(score => score.join(', ')).join(' | '),\r\n tooltip: 'Score used to sort routes',\r\n value: route.score,\r\n },\r\n },\r\n });\r\n return fields;\r\n}\r\n/**\r\n * Extracted from tailwind palette\r\n */\r\nconst PINK_500 = 0xec4899;\r\nconst BLUE_600 = 0x2563eb;\r\nconst LIME_500 = 0x84cc16;\r\nconst CYAN_400 = 0x22d3ee;\r\nconst ORANGE_400 = 0xfb923c;\r\n// const GRAY_100 = 0xf4f4f5\r\nconst DARK = 0x666666;\r\nfunction formatRouteRecordForInspector(route) {\r\n const tags = [];\r\n const { record } = route;\r\n if (record.name != null) {\r\n tags.push({\r\n label: String(record.name),\r\n textColor: 0,\r\n backgroundColor: CYAN_400,\r\n });\r\n }\r\n if (record.aliasOf) {\r\n tags.push({\r\n label: 'alias',\r\n textColor: 0,\r\n backgroundColor: ORANGE_400,\r\n });\r\n }\r\n if (route.__vd_match) {\r\n tags.push({\r\n label: 'matches',\r\n textColor: 0,\r\n backgroundColor: PINK_500,\r\n });\r\n }\r\n if (route.__vd_exactActive) {\r\n tags.push({\r\n label: 'exact',\r\n textColor: 0,\r\n backgroundColor: LIME_500,\r\n });\r\n }\r\n if (route.__vd_active) {\r\n tags.push({\r\n label: 'active',\r\n textColor: 0,\r\n backgroundColor: BLUE_600,\r\n });\r\n }\r\n if (record.redirect) {\r\n tags.push({\r\n label: 'redirect: ' +\r\n (typeof record.redirect === 'string' ? record.redirect : 'Object'),\r\n textColor: 0xffffff,\r\n backgroundColor: DARK,\r\n });\r\n }\r\n // add an id to be able to select it. Using the `path` is not possible because\r\n // empty path children would collide with their parents\r\n let id = record.__vd_id;\r\n if (id == null) {\r\n id = String(routeRecordId++);\r\n record.__vd_id = id;\r\n }\r\n return {\r\n id,\r\n label: record.path,\r\n tags,\r\n children: route.children.map(formatRouteRecordForInspector),\r\n };\r\n}\r\n// incremental id for route records and inspector state\r\nlet routeRecordId = 0;\r\nconst EXTRACT_REGEXP_RE = /^\\/(.*)\\/([a-z]*)$/;\r\nfunction markRouteRecordActive(route, currentRoute) {\r\n // no route will be active if matched is empty\r\n // reset the matching state\r\n const isExactActive = currentRoute.matched.length &&\r\n isSameRouteRecord(currentRoute.matched[currentRoute.matched.length - 1], route.record);\r\n route.__vd_exactActive = route.__vd_active = isExactActive;\r\n if (!isExactActive) {\r\n route.__vd_active = currentRoute.matched.some(match => isSameRouteRecord(match, route.record));\r\n }\r\n route.children.forEach(childRoute => markRouteRecordActive(childRoute, currentRoute));\r\n}\r\nfunction resetMatchStateOnRouteRecord(route) {\r\n route.__vd_match = false;\r\n route.children.forEach(resetMatchStateOnRouteRecord);\r\n}\r\nfunction isRouteMatching(route, filter) {\r\n const found = String(route.re).match(EXTRACT_REGEXP_RE);\r\n route.__vd_match = false;\r\n if (!found || found.length < 3) {\r\n return false;\r\n }\r\n // use a regexp without $ at the end to match nested routes better\r\n const nonEndingRE = new RegExp(found[1].replace(/\\$$/, ''), found[2]);\r\n if (nonEndingRE.test(filter)) {\r\n // mark children as matches\r\n route.children.forEach(child => isRouteMatching(child, filter));\r\n // exception case: `/`\r\n if (route.record.path !== '/' || filter === '/') {\r\n route.__vd_match = route.re.test(filter);\r\n return true;\r\n }\r\n // hide the / route\r\n return false;\r\n }\r\n const path = route.record.path.toLowerCase();\r\n const decodedPath = decode(path);\r\n // also allow partial matching on the path\r\n if (!filter.startsWith('/') &&\r\n (decodedPath.includes(filter) || path.includes(filter)))\r\n return true;\r\n if (decodedPath.startsWith(filter) || path.startsWith(filter))\r\n return true;\r\n if (route.record.name && String(route.record.name).includes(filter))\r\n return true;\r\n return route.children.some(child => isRouteMatching(child, filter));\r\n}\r\nfunction omit(obj, keys) {\r\n const ret = {};\r\n for (const key in obj) {\r\n if (!keys.includes(key)) {\r\n // @ts-expect-error\r\n ret[key] = obj[key];\r\n }\r\n }\r\n return ret;\r\n}\n\n/**\r\n * Creates a Router instance that can be used by a Vue app.\r\n *\r\n * @param options - {@link RouterOptions}\r\n */\r\nfunction createRouter(options) {\r\n const matcher = createRouterMatcher(options.routes, options);\r\n const parseQuery$1 = options.parseQuery || parseQuery;\r\n const stringifyQuery$1 = options.stringifyQuery || stringifyQuery;\r\n const routerHistory = options.history;\r\n if ((process.env.NODE_ENV !== 'production') && !routerHistory)\r\n throw new Error('Provide the \"history\" option when calling \"createRouter()\":' +\r\n ' https://next.router.vuejs.org/api/#history.');\r\n const beforeGuards = useCallbacks();\r\n const beforeResolveGuards = useCallbacks();\r\n const afterGuards = useCallbacks();\r\n const currentRoute = shallowRef(START_LOCATION_NORMALIZED);\r\n let pendingLocation = START_LOCATION_NORMALIZED;\r\n // leave the scrollRestoration if no scrollBehavior is provided\r\n if (isBrowser && options.scrollBehavior && 'scrollRestoration' in history) {\r\n history.scrollRestoration = 'manual';\r\n }\r\n const normalizeParams = applyToParams.bind(null, paramValue => '' + paramValue);\r\n const encodeParams = applyToParams.bind(null, encodeParam);\r\n const decodeParams = \r\n // @ts-expect-error: intentionally avoid the type check\r\n applyToParams.bind(null, decode);\r\n function addRoute(parentOrRoute, route) {\r\n let parent;\r\n let record;\r\n if (isRouteName(parentOrRoute)) {\r\n parent = matcher.getRecordMatcher(parentOrRoute);\r\n record = route;\r\n }\r\n else {\r\n record = parentOrRoute;\r\n }\r\n return matcher.addRoute(record, parent);\r\n }\r\n function removeRoute(name) {\r\n const recordMatcher = matcher.getRecordMatcher(name);\r\n if (recordMatcher) {\r\n matcher.removeRoute(recordMatcher);\r\n }\r\n else if ((process.env.NODE_ENV !== 'production')) {\r\n warn(`Cannot remove non-existent route \"${String(name)}\"`);\r\n }\r\n }\r\n function getRoutes() {\r\n return matcher.getRoutes().map(routeMatcher => routeMatcher.record);\r\n }\r\n function hasRoute(name) {\r\n return !!matcher.getRecordMatcher(name);\r\n }\r\n function resolve(rawLocation, currentLocation) {\r\n // const objectLocation = routerLocationAsObject(rawLocation)\r\n // we create a copy to modify it later\r\n currentLocation = assign({}, currentLocation || currentRoute.value);\r\n if (typeof rawLocation === 'string') {\r\n const locationNormalized = parseURL(parseQuery$1, rawLocation, currentLocation.path);\r\n const matchedRoute = matcher.resolve({ path: locationNormalized.path }, currentLocation);\r\n const href = routerHistory.createHref(locationNormalized.fullPath);\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n if (href.startsWith('//'))\r\n warn(`Location \"${rawLocation}\" resolved to \"${href}\". A resolved location cannot start with multiple slashes.`);\r\n else if (!matchedRoute.matched.length) {\r\n warn(`No match found for location with path \"${rawLocation}\"`);\r\n }\r\n }\r\n // locationNormalized is always a new object\r\n return assign(locationNormalized, matchedRoute, {\r\n params: decodeParams(matchedRoute.params),\r\n hash: decode(locationNormalized.hash),\r\n redirectedFrom: undefined,\r\n href,\r\n });\r\n }\r\n let matcherLocation;\r\n // path could be relative in object as well\r\n if ('path' in rawLocation) {\r\n if ((process.env.NODE_ENV !== 'production') &&\r\n 'params' in rawLocation &&\r\n !('name' in rawLocation) &&\r\n // @ts-expect-error: the type is never\r\n Object.keys(rawLocation.params).length) {\r\n warn(`Path \"${\r\n // @ts-expect-error: the type is never\r\n rawLocation.path}\" was passed with params but they will be ignored. Use a named route alongside params instead.`);\r\n }\r\n matcherLocation = assign({}, rawLocation, {\r\n path: parseURL(parseQuery$1, rawLocation.path, currentLocation.path).path,\r\n });\r\n }\r\n else {\r\n // remove any nullish param\r\n const targetParams = assign({}, rawLocation.params);\r\n for (const key in targetParams) {\r\n if (targetParams[key] == null) {\r\n delete targetParams[key];\r\n }\r\n }\r\n // pass encoded values to the matcher so it can produce encoded path and fullPath\r\n matcherLocation = assign({}, rawLocation, {\r\n params: encodeParams(rawLocation.params),\r\n });\r\n // current location params are decoded, we need to encode them in case the\r\n // matcher merges the params\r\n currentLocation.params = encodeParams(currentLocation.params);\r\n }\r\n const matchedRoute = matcher.resolve(matcherLocation, currentLocation);\r\n const hash = rawLocation.hash || '';\r\n if ((process.env.NODE_ENV !== 'production') && hash && !hash.startsWith('#')) {\r\n warn(`A \\`hash\\` should always start with the character \"#\". Replace \"${hash}\" with \"#${hash}\".`);\r\n }\r\n // decoding them) the matcher might have merged current location params so\r\n // we need to run the decoding again\r\n matchedRoute.params = normalizeParams(decodeParams(matchedRoute.params));\r\n const fullPath = stringifyURL(stringifyQuery$1, assign({}, rawLocation, {\r\n hash: encodeHash(hash),\r\n path: matchedRoute.path,\r\n }));\r\n const href = routerHistory.createHref(fullPath);\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n if (href.startsWith('//')) {\r\n warn(`Location \"${rawLocation}\" resolved to \"${href}\". A resolved location cannot start with multiple slashes.`);\r\n }\r\n else if (!matchedRoute.matched.length) {\r\n warn(`No match found for location with path \"${'path' in rawLocation ? rawLocation.path : rawLocation}\"`);\r\n }\r\n }\r\n return assign({\r\n fullPath,\r\n // keep the hash encoded so fullPath is effectively path + encodedQuery +\r\n // hash\r\n hash,\r\n query: \r\n // if the user is using a custom query lib like qs, we might have\r\n // nested objects, so we keep the query as is, meaning it can contain\r\n // numbers at `$route.query`, but at the point, the user will have to\r\n // use their own type anyway.\r\n // https://github.com/vuejs/router/issues/328#issuecomment-649481567\r\n stringifyQuery$1 === stringifyQuery\r\n ? normalizeQuery(rawLocation.query)\r\n : (rawLocation.query || {}),\r\n }, matchedRoute, {\r\n redirectedFrom: undefined,\r\n href,\r\n });\r\n }\r\n function locationAsObject(to) {\r\n return typeof to === 'string'\r\n ? parseURL(parseQuery$1, to, currentRoute.value.path)\r\n : assign({}, to);\r\n }\r\n function checkCanceledNavigation(to, from) {\r\n if (pendingLocation !== to) {\r\n return createRouterError(8 /* NAVIGATION_CANCELLED */, {\r\n from,\r\n to,\r\n });\r\n }\r\n }\r\n function push(to) {\r\n return pushWithRedirect(to);\r\n }\r\n function replace(to) {\r\n return push(assign(locationAsObject(to), { replace: true }));\r\n }\r\n function handleRedirectRecord(to) {\r\n const lastMatched = to.matched[to.matched.length - 1];\r\n if (lastMatched && lastMatched.redirect) {\r\n const { redirect } = lastMatched;\r\n let newTargetLocation = typeof redirect === 'function' ? redirect(to) : redirect;\r\n if (typeof newTargetLocation === 'string') {\r\n newTargetLocation =\r\n newTargetLocation.includes('?') || newTargetLocation.includes('#')\r\n ? (newTargetLocation = locationAsObject(newTargetLocation))\r\n : // force empty params\r\n { path: newTargetLocation };\r\n // @ts-expect-error: force empty params when a string is passed to let\r\n // the router parse them again\r\n newTargetLocation.params = {};\r\n }\r\n if ((process.env.NODE_ENV !== 'production') &&\r\n !('path' in newTargetLocation) &&\r\n !('name' in newTargetLocation)) {\r\n warn(`Invalid redirect found:\\n${JSON.stringify(newTargetLocation, null, 2)}\\n when navigating to \"${to.fullPath}\". A redirect must contain a name or path. This will break in production.`);\r\n throw new Error('Invalid redirect');\r\n }\r\n return assign({\r\n query: to.query,\r\n hash: to.hash,\r\n params: to.params,\r\n }, newTargetLocation);\r\n }\r\n }\r\n function pushWithRedirect(to, redirectedFrom) {\r\n const targetLocation = (pendingLocation = resolve(to));\r\n const from = currentRoute.value;\r\n const data = to.state;\r\n const force = to.force;\r\n // to could be a string where `replace` is a function\r\n const replace = to.replace === true;\r\n const shouldRedirect = handleRedirectRecord(targetLocation);\r\n if (shouldRedirect)\r\n return pushWithRedirect(assign(locationAsObject(shouldRedirect), {\r\n state: data,\r\n force,\r\n replace,\r\n }), \r\n // keep original redirectedFrom if it exists\r\n redirectedFrom || targetLocation);\r\n // if it was a redirect we already called `pushWithRedirect` above\r\n const toLocation = targetLocation;\r\n toLocation.redirectedFrom = redirectedFrom;\r\n let failure;\r\n if (!force && isSameRouteLocation(stringifyQuery$1, from, targetLocation)) {\r\n failure = createRouterError(16 /* NAVIGATION_DUPLICATED */, { to: toLocation, from });\r\n // trigger scroll to allow scrolling to the same anchor\r\n handleScroll(from, from, \r\n // this is a push, the only way for it to be triggered from a\r\n // history.listen is with a redirect, which makes it become a push\r\n true, \r\n // This cannot be the first navigation because the initial location\r\n // cannot be manually navigated to\r\n false);\r\n }\r\n return (failure ? Promise.resolve(failure) : navigate(toLocation, from))\r\n .catch((error) => isNavigationFailure(error)\r\n ? // navigation redirects still mark the router as ready\r\n isNavigationFailure(error, 2 /* NAVIGATION_GUARD_REDIRECT */)\r\n ? error\r\n : markAsReady(error) // also returns the error\r\n : // reject any unknown error\r\n triggerError(error, toLocation, from))\r\n .then((failure) => {\r\n if (failure) {\r\n if (isNavigationFailure(failure, 2 /* NAVIGATION_GUARD_REDIRECT */)) {\r\n if ((process.env.NODE_ENV !== 'production') &&\r\n // we are redirecting to the same location we were already at\r\n isSameRouteLocation(stringifyQuery$1, resolve(failure.to), toLocation) &&\r\n // and we have done it a couple of times\r\n redirectedFrom &&\r\n // @ts-expect-error: added only in dev\r\n (redirectedFrom._count = redirectedFrom._count\r\n ? // @ts-expect-error\r\n redirectedFrom._count + 1\r\n : 1) > 10) {\r\n warn(`Detected an infinite redirection in a navigation guard when going from \"${from.fullPath}\" to \"${toLocation.fullPath}\". Aborting to avoid a Stack Overflow. This will break in production if not fixed.`);\r\n return Promise.reject(new Error('Infinite redirect in navigation guard'));\r\n }\r\n return pushWithRedirect(\r\n // keep options\r\n assign(locationAsObject(failure.to), {\r\n state: data,\r\n force,\r\n replace,\r\n }), \r\n // preserve the original redirectedFrom if any\r\n redirectedFrom || toLocation);\r\n }\r\n }\r\n else {\r\n // if we fail we don't finalize the navigation\r\n failure = finalizeNavigation(toLocation, from, true, replace, data);\r\n }\r\n triggerAfterEach(toLocation, from, failure);\r\n return failure;\r\n });\r\n }\r\n /**\r\n * Helper to reject and skip all navigation guards if a new navigation happened\r\n * @param to\r\n * @param from\r\n */\r\n function checkCanceledNavigationAndReject(to, from) {\r\n const error = checkCanceledNavigation(to, from);\r\n return error ? Promise.reject(error) : Promise.resolve();\r\n }\r\n // TODO: refactor the whole before guards by internally using router.beforeEach\r\n function navigate(to, from) {\r\n let guards;\r\n const [leavingRecords, updatingRecords, enteringRecords] = extractChangingRecords(to, from);\r\n // all components here have been resolved once because we are leaving\r\n guards = extractComponentsGuards(leavingRecords.reverse(), 'beforeRouteLeave', to, from);\r\n // leavingRecords is already reversed\r\n for (const record of leavingRecords) {\r\n record.leaveGuards.forEach(guard => {\r\n guards.push(guardToPromiseFn(guard, to, from));\r\n });\r\n }\r\n const canceledNavigationCheck = checkCanceledNavigationAndReject.bind(null, to, from);\r\n guards.push(canceledNavigationCheck);\r\n // run the queue of per route beforeRouteLeave guards\r\n return (runGuardQueue(guards)\r\n .then(() => {\r\n // check global guards beforeEach\r\n guards = [];\r\n for (const guard of beforeGuards.list()) {\r\n guards.push(guardToPromiseFn(guard, to, from));\r\n }\r\n guards.push(canceledNavigationCheck);\r\n return runGuardQueue(guards);\r\n })\r\n .then(() => {\r\n // check in components beforeRouteUpdate\r\n guards = extractComponentsGuards(updatingRecords, 'beforeRouteUpdate', to, from);\r\n for (const record of updatingRecords) {\r\n record.updateGuards.forEach(guard => {\r\n guards.push(guardToPromiseFn(guard, to, from));\r\n });\r\n }\r\n guards.push(canceledNavigationCheck);\r\n // run the queue of per route beforeEnter guards\r\n return runGuardQueue(guards);\r\n })\r\n .then(() => {\r\n // check the route beforeEnter\r\n guards = [];\r\n for (const record of to.matched) {\r\n // do not trigger beforeEnter on reused views\r\n if (record.beforeEnter && !from.matched.includes(record)) {\r\n if (Array.isArray(record.beforeEnter)) {\r\n for (const beforeEnter of record.beforeEnter)\r\n guards.push(guardToPromiseFn(beforeEnter, to, from));\r\n }\r\n else {\r\n guards.push(guardToPromiseFn(record.beforeEnter, to, from));\r\n }\r\n }\r\n }\r\n guards.push(canceledNavigationCheck);\r\n // run the queue of per route beforeEnter guards\r\n return runGuardQueue(guards);\r\n })\r\n .then(() => {\r\n // NOTE: at this point to.matched is normalized and does not contain any () => Promise\r\n // clear existing enterCallbacks, these are added by extractComponentsGuards\r\n to.matched.forEach(record => (record.enterCallbacks = {}));\r\n // check in-component beforeRouteEnter\r\n guards = extractComponentsGuards(enteringRecords, 'beforeRouteEnter', to, from);\r\n guards.push(canceledNavigationCheck);\r\n // run the queue of per route beforeEnter guards\r\n return runGuardQueue(guards);\r\n })\r\n .then(() => {\r\n // check global guards beforeResolve\r\n guards = [];\r\n for (const guard of beforeResolveGuards.list()) {\r\n guards.push(guardToPromiseFn(guard, to, from));\r\n }\r\n guards.push(canceledNavigationCheck);\r\n return runGuardQueue(guards);\r\n })\r\n // catch any navigation canceled\r\n .catch(err => isNavigationFailure(err, 8 /* NAVIGATION_CANCELLED */)\r\n ? err\r\n : Promise.reject(err)));\r\n }\r\n function triggerAfterEach(to, from, failure) {\r\n // navigation is confirmed, call afterGuards\r\n // TODO: wrap with error handlers\r\n for (const guard of afterGuards.list())\r\n guard(to, from, failure);\r\n }\r\n /**\r\n * - Cleans up any navigation guards\r\n * - Changes the url if necessary\r\n * - Calls the scrollBehavior\r\n */\r\n function finalizeNavigation(toLocation, from, isPush, replace, data) {\r\n // a more recent navigation took place\r\n const error = checkCanceledNavigation(toLocation, from);\r\n if (error)\r\n return error;\r\n // only consider as push if it's not the first navigation\r\n const isFirstNavigation = from === START_LOCATION_NORMALIZED;\r\n const state = !isBrowser ? {} : history.state;\r\n // change URL only if the user did a push/replace and if it's not the initial navigation because\r\n // it's just reflecting the url\r\n if (isPush) {\r\n // on the initial navigation, we want to reuse the scroll position from\r\n // history state if it exists\r\n if (replace || isFirstNavigation)\r\n routerHistory.replace(toLocation.fullPath, assign({\r\n scroll: isFirstNavigation && state && state.scroll,\r\n }, data));\r\n else\r\n routerHistory.push(toLocation.fullPath, data);\r\n }\r\n // accept current navigation\r\n currentRoute.value = toLocation;\r\n handleScroll(toLocation, from, isPush, isFirstNavigation);\r\n markAsReady();\r\n }\r\n let removeHistoryListener;\r\n // attach listener to history to trigger navigations\r\n function setupListeners() {\r\n removeHistoryListener = routerHistory.listen((to, _from, info) => {\r\n // cannot be a redirect route because it was in history\r\n const toLocation = resolve(to);\r\n // due to dynamic routing, and to hash history with manual navigation\r\n // (manually changing the url or calling history.hash = '#/somewhere'),\r\n // there could be a redirect record in history\r\n const shouldRedirect = handleRedirectRecord(toLocation);\r\n if (shouldRedirect) {\r\n pushWithRedirect(assign(shouldRedirect, { replace: true }), toLocation).catch(noop);\r\n return;\r\n }\r\n pendingLocation = toLocation;\r\n const from = currentRoute.value;\r\n // TODO: should be moved to web history?\r\n if (isBrowser) {\r\n saveScrollPosition(getScrollKey(from.fullPath, info.delta), computeScrollPosition());\r\n }\r\n navigate(toLocation, from)\r\n .catch((error) => {\r\n if (isNavigationFailure(error, 4 /* NAVIGATION_ABORTED */ | 8 /* NAVIGATION_CANCELLED */)) {\r\n return error;\r\n }\r\n if (isNavigationFailure(error, 2 /* NAVIGATION_GUARD_REDIRECT */)) {\r\n // Here we could call if (info.delta) routerHistory.go(-info.delta,\r\n // false) but this is bug prone as we have no way to wait the\r\n // navigation to be finished before calling pushWithRedirect. Using\r\n // a setTimeout of 16ms seems to work but there is not guarantee for\r\n // it to work on every browser. So Instead we do not restore the\r\n // history entry and trigger a new navigation as requested by the\r\n // navigation guard.\r\n // the error is already handled by router.push we just want to avoid\r\n // logging the error\r\n pushWithRedirect(error.to, toLocation\r\n // avoid an uncaught rejection, let push call triggerError\r\n )\r\n .then(failure => {\r\n // manual change in hash history #916 ending up in the URL not\r\n // changing but it was changed by the manual url change, so we\r\n // need to manually change it ourselves\r\n if (isNavigationFailure(failure, 4 /* NAVIGATION_ABORTED */ |\r\n 16 /* NAVIGATION_DUPLICATED */) &&\r\n !info.delta &&\r\n info.type === NavigationType.pop) {\r\n routerHistory.go(-1, false);\r\n }\r\n })\r\n .catch(noop);\r\n // avoid the then branch\r\n return Promise.reject();\r\n }\r\n // do not restore history on unknown direction\r\n if (info.delta)\r\n routerHistory.go(-info.delta, false);\r\n // unrecognized error, transfer to the global handler\r\n return triggerError(error, toLocation, from);\r\n })\r\n .then((failure) => {\r\n failure =\r\n failure ||\r\n finalizeNavigation(\r\n // after navigation, all matched components are resolved\r\n toLocation, from, false);\r\n // revert the navigation\r\n if (failure) {\r\n if (info.delta) {\r\n routerHistory.go(-info.delta, false);\r\n }\r\n else if (info.type === NavigationType.pop &&\r\n isNavigationFailure(failure, 4 /* NAVIGATION_ABORTED */ | 16 /* NAVIGATION_DUPLICATED */)) {\r\n // manual change in hash history #916\r\n // it's like a push but lacks the information of the direction\r\n routerHistory.go(-1, false);\r\n }\r\n }\r\n triggerAfterEach(toLocation, from, failure);\r\n })\r\n .catch(noop);\r\n });\r\n }\r\n // Initialization and Errors\r\n let readyHandlers = useCallbacks();\r\n let errorHandlers = useCallbacks();\r\n let ready;\r\n /**\r\n * Trigger errorHandlers added via onError and throws the error as well\r\n *\r\n * @param error - error to throw\r\n * @param to - location we were navigating to when the error happened\r\n * @param from - location we were navigating from when the error happened\r\n * @returns the error as a rejected promise\r\n */\r\n function triggerError(error, to, from) {\r\n markAsReady(error);\r\n const list = errorHandlers.list();\r\n if (list.length) {\r\n list.forEach(handler => handler(error, to, from));\r\n }\r\n else {\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n warn('uncaught error during route navigation:');\r\n }\r\n console.error(error);\r\n }\r\n return Promise.reject(error);\r\n }\r\n function isReady() {\r\n if (ready && currentRoute.value !== START_LOCATION_NORMALIZED)\r\n return Promise.resolve();\r\n return new Promise((resolve, reject) => {\r\n readyHandlers.add([resolve, reject]);\r\n });\r\n }\r\n function markAsReady(err) {\r\n if (!ready) {\r\n // still not ready if an error happened\r\n ready = !err;\r\n setupListeners();\r\n readyHandlers\r\n .list()\r\n .forEach(([resolve, reject]) => (err ? reject(err) : resolve()));\r\n readyHandlers.reset();\r\n }\r\n return err;\r\n }\r\n // Scroll behavior\r\n function handleScroll(to, from, isPush, isFirstNavigation) {\r\n const { scrollBehavior } = options;\r\n if (!isBrowser || !scrollBehavior)\r\n return Promise.resolve();\r\n const scrollPosition = (!isPush && getSavedScrollPosition(getScrollKey(to.fullPath, 0))) ||\r\n ((isFirstNavigation || !isPush) &&\r\n history.state &&\r\n history.state.scroll) ||\r\n null;\r\n return nextTick()\r\n .then(() => scrollBehavior(to, from, scrollPosition))\r\n .then(position => position && scrollToPosition(position))\r\n .catch(err => triggerError(err, to, from));\r\n }\r\n const go = (delta) => routerHistory.go(delta);\r\n let started;\r\n const installedApps = new Set();\r\n const router = {\r\n currentRoute,\r\n addRoute,\r\n removeRoute,\r\n hasRoute,\r\n getRoutes,\r\n resolve,\r\n options,\r\n push,\r\n replace,\r\n go,\r\n back: () => go(-1),\r\n forward: () => go(1),\r\n beforeEach: beforeGuards.add,\r\n beforeResolve: beforeResolveGuards.add,\r\n afterEach: afterGuards.add,\r\n onError: errorHandlers.add,\r\n isReady,\r\n install(app) {\r\n const router = this;\r\n app.component('RouterLink', RouterLink);\r\n app.component('RouterView', RouterView);\r\n app.config.globalProperties.$router = router;\r\n Object.defineProperty(app.config.globalProperties, '$route', {\r\n enumerable: true,\r\n get: () => unref(currentRoute),\r\n });\r\n // this initial navigation is only necessary on client, on server it doesn't\r\n // make sense because it will create an extra unnecessary navigation and could\r\n // lead to problems\r\n if (isBrowser &&\r\n // used for the initial navigation client side to avoid pushing\r\n // multiple times when the router is used in multiple apps\r\n !started &&\r\n currentRoute.value === START_LOCATION_NORMALIZED) {\r\n // see above\r\n started = true;\r\n push(routerHistory.location).catch(err => {\r\n if ((process.env.NODE_ENV !== 'production'))\r\n warn('Unexpected error when starting the router:', err);\r\n });\r\n }\r\n const reactiveRoute = {};\r\n for (const key in START_LOCATION_NORMALIZED) {\r\n // @ts-expect-error: the key matches\r\n reactiveRoute[key] = computed(() => currentRoute.value[key]);\r\n }\r\n app.provide(routerKey, router);\r\n app.provide(routeLocationKey, reactive(reactiveRoute));\r\n app.provide(routerViewLocationKey, currentRoute);\r\n const unmountApp = app.unmount;\r\n installedApps.add(app);\r\n app.unmount = function () {\r\n installedApps.delete(app);\r\n // the router is not attached to an app anymore\r\n if (installedApps.size < 1) {\r\n // invalidate the current navigation\r\n pendingLocation = START_LOCATION_NORMALIZED;\r\n removeHistoryListener && removeHistoryListener();\r\n currentRoute.value = START_LOCATION_NORMALIZED;\r\n started = false;\r\n ready = false;\r\n }\r\n unmountApp();\r\n };\r\n if (((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) && isBrowser) {\r\n addDevtools(app, router, matcher);\r\n }\r\n },\r\n };\r\n return router;\r\n}\r\nfunction runGuardQueue(guards) {\r\n return guards.reduce((promise, guard) => promise.then(() => guard()), Promise.resolve());\r\n}\r\nfunction extractChangingRecords(to, from) {\r\n const leavingRecords = [];\r\n const updatingRecords = [];\r\n const enteringRecords = [];\r\n const len = Math.max(from.matched.length, to.matched.length);\r\n for (let i = 0; i < len; i++) {\r\n const recordFrom = from.matched[i];\r\n if (recordFrom) {\r\n if (to.matched.find(record => isSameRouteRecord(record, recordFrom)))\r\n updatingRecords.push(recordFrom);\r\n else\r\n leavingRecords.push(recordFrom);\r\n }\r\n const recordTo = to.matched[i];\r\n if (recordTo) {\r\n // the type doesn't matter because we are comparing per reference\r\n if (!from.matched.find(record => isSameRouteRecord(record, recordTo))) {\r\n enteringRecords.push(recordTo);\r\n }\r\n }\r\n }\r\n return [leavingRecords, updatingRecords, enteringRecords];\r\n}\n\n/**\r\n * Returns the router instance. Equivalent to using `$router` inside\r\n * templates.\r\n */\r\nfunction useRouter() {\r\n return inject(routerKey);\r\n}\r\n/**\r\n * Returns the current route location. Equivalent to using `$route` inside\r\n * templates.\r\n */\r\nfunction useRoute() {\r\n return inject(routeLocationKey);\r\n}\n\nexport { NavigationFailureType, RouterLink, RouterView, START_LOCATION_NORMALIZED as START_LOCATION, createMemoryHistory, createRouter, createRouterMatcher, createWebHashHistory, createWebHistory, isNavigationFailure, matchedRouteKey, onBeforeRouteLeave, onBeforeRouteUpdate, parseQuery, routeLocationKey, routerKey, routerViewLocationKey, stringifyQuery, useLink, useRoute, useRouter, viewDepthKey };\n","/**\r\n * Vue3 Cookies v1.0.0\r\n *\r\n * Forked from\r\n * https://github.com/cmp-cc/vue-cookies\r\n * And changed format to support Vue.js 3\r\n *\r\n */\r\nimport { reactive } from \"vue\";\r\nvar defaultConfig = {\r\n expireTimes: \"1d\",\r\n path: \"; path=/\",\r\n domain: \"\",\r\n secure: false,\r\n sameSite: \"; SameSite=Lax\",\r\n};\r\nvar VueCookiesManager = /** @class */ (function () {\r\n function VueCookiesManager() {\r\n this.current_default_config = defaultConfig;\r\n }\r\n VueCookiesManager.prototype.config = function (config) {\r\n for (var propertyName in this.current_default_config) {\r\n this.current_default_config[propertyName] = config[propertyName]\r\n ? config[propertyName]\r\n : defaultConfig[propertyName];\r\n }\r\n };\r\n VueCookiesManager.prototype.get = function (keyName) {\r\n var value = decodeURIComponent(document.cookie.replace(new RegExp(\"(?:(?:^|.*;)\\\\s*\" +\r\n encodeURIComponent(keyName).replace(/[\\-\\.\\+\\*]/g, \"\\\\$&\") +\r\n \"\\\\s*\\\\=\\\\s*([^;]*).*$)|^.*$\"), \"$1\")) || null;\r\n if (value &&\r\n value.substring(0, 1) === \"{\" &&\r\n value.substring(value.length - 1, value.length) === \"}\") {\r\n try {\r\n value = JSON.parse(value);\r\n }\r\n catch (e) {\r\n return value;\r\n }\r\n }\r\n return value;\r\n };\r\n VueCookiesManager.prototype.set = function (keyName, value, expireTimes, path, domain, secure, sameSite) {\r\n if (!keyName) {\r\n throw new Error(\"Cookie name is not found in the first argument.\");\r\n }\r\n else if (/^(?:expires|max-age|path|domain|secure|SameSite)$/i.test(keyName)) {\r\n throw new Error('Cookie name illegality. Cannot be set to [\"expires\",\"max-age\",\"path\",\"domain\",\"secure\",\"SameSite\"]\\t current key name: ' +\r\n keyName);\r\n }\r\n // support json object\r\n if (value && value.constructor === Object) {\r\n value = JSON.stringify(value);\r\n }\r\n var _expires = \"\";\r\n if (expireTimes == undefined) {\r\n expireTimes = this.current_default_config.expireTimes\r\n ? this.current_default_config.expireTimes\r\n : \"\";\r\n }\r\n if (expireTimes && expireTimes != 0) {\r\n switch (expireTimes.constructor) {\r\n case Number:\r\n if (expireTimes === Infinity || expireTimes === -1)\r\n _expires = \"; expires=Fri, 31 Dec 9999 23:59:59 GMT\";\r\n else\r\n _expires = \"; max-age=\" + expireTimes;\r\n break;\r\n case String:\r\n if (/^(?:\\d+(y|m|d|h|min|s))$/i.test(expireTimes)) {\r\n // get capture number group\r\n var _expireTime = expireTimes.replace(/^(\\d+)(?:y|m|d|h|min|s)$/i, \"$1\");\r\n // get capture type group , to lower case\r\n switch (expireTimes\r\n .replace(/^(?:\\d+)(y|m|d|h|min|s)$/i, \"$1\")\r\n .toLowerCase()) {\r\n // Frequency sorting\r\n case \"m\":\r\n _expires = \"; max-age=\" + +_expireTime * 2592000;\r\n break; // 60 * 60 * 24 * 30\r\n case \"d\":\r\n _expires = \"; max-age=\" + +_expireTime * 86400;\r\n break; // 60 * 60 * 24\r\n case \"h\":\r\n _expires = \"; max-age=\" + +_expireTime * 3600;\r\n break; // 60 * 60\r\n case \"min\":\r\n _expires = \"; max-age=\" + +_expireTime * 60;\r\n break; // 60\r\n case \"s\":\r\n _expires = \"; max-age=\" + _expireTime;\r\n break;\r\n case \"y\":\r\n _expires = \"; max-age=\" + +_expireTime * 31104000;\r\n break; // 60 * 60 * 24 * 30 * 12\r\n default:\r\n new Error('unknown exception of \"set operation\"');\r\n }\r\n }\r\n else {\r\n _expires = \"; expires=\" + expireTimes;\r\n }\r\n break;\r\n case Date:\r\n _expires = \"; expires=\" + expireTimes.toUTCString();\r\n break;\r\n }\r\n }\r\n document.cookie =\r\n encodeURIComponent(keyName) +\r\n \"=\" +\r\n encodeURIComponent(value) +\r\n _expires +\r\n (domain\r\n ? \"; domain=\" + domain\r\n : this.current_default_config.domain\r\n ? this.current_default_config.domain\r\n : \"\") +\r\n (path\r\n ? \"; path=\" + path\r\n : this.current_default_config.path\r\n ? this.current_default_config.path\r\n : \"; path=/\") +\r\n (secure == undefined\r\n ? this.current_default_config.secure\r\n ? \"; Secure\"\r\n : \"\"\r\n : secure\r\n ? \"; Secure\"\r\n : \"\") +\r\n (sameSite == undefined\r\n ? this.current_default_config.sameSite\r\n ? \"; SameSute=\" + this.current_default_config.sameSite\r\n : \"\"\r\n : sameSite\r\n ? \"; SameSite=\" + sameSite\r\n : \"\");\r\n return this;\r\n };\r\n VueCookiesManager.prototype.remove = function (keyName, path, domain) {\r\n if (!keyName || !this.isKey(keyName)) {\r\n return false;\r\n }\r\n document.cookie =\r\n encodeURIComponent(keyName) +\r\n \"=; expires=Thu, 01 Jan 1970 00:00:00 GMT\" +\r\n (domain\r\n ? \"; domain=\" + domain\r\n : this.current_default_config.domain\r\n ? this.current_default_config.domain\r\n : \"\") +\r\n (path\r\n ? \"; path=\" + path\r\n : this.current_default_config.path\r\n ? this.current_default_config.path\r\n : \"; path=/\") +\r\n \"; SameSite=Lax\";\r\n return true;\r\n };\r\n VueCookiesManager.prototype.isKey = function (keyName) {\r\n return new RegExp(\"(?:^|;\\\\s*)\" +\r\n encodeURIComponent(keyName).replace(/[\\-\\.\\+\\*]/g, \"\\\\$&\") +\r\n \"\\\\s*\\\\=\").test(document.cookie);\r\n };\r\n VueCookiesManager.prototype.keys = function () {\r\n if (!document.cookie)\r\n return [];\r\n var _keys = document.cookie\r\n .replace(/((?:^|\\s*;)[^\\=]+)(?=;|$)|^\\s*|\\s*(?:\\=[^;]*)?(?:\\1|$)/g, \"\")\r\n .split(/\\s*(?:\\=[^;]*)?;\\s*/);\r\n for (var _index = 0; _index < _keys.length; _index++) {\r\n _keys[_index] = decodeURIComponent(_keys[_index]);\r\n }\r\n return _keys;\r\n };\r\n return VueCookiesManager;\r\n}());\r\nexport default {\r\n install: function (app, options) {\r\n app.config.globalProperties.$cookies = new VueCookiesManager();\r\n if (options) {\r\n app.config.globalProperties.$cookies.config(options);\r\n }\r\n },\r\n};\r\nvar GLOBAL_COOKIES_MANAGER = null;\r\nfunction globalCookiesConfig(options) {\r\n if (GLOBAL_COOKIES_MANAGER == null) {\r\n GLOBAL_COOKIES_MANAGER = new VueCookiesManager();\r\n }\r\n GLOBAL_COOKIES_MANAGER.config(options);\r\n}\r\nfunction useCookies() {\r\n if (GLOBAL_COOKIES_MANAGER == null) {\r\n GLOBAL_COOKIES_MANAGER = new VueCookiesManager();\r\n }\r\n var cookies = reactive(GLOBAL_COOKIES_MANAGER);\r\n return { cookies: cookies };\r\n}\r\nexport { globalCookiesConfig, useCookies };\r\n","\r\n\r\n","import { render } from \"./TheHeader.vue?vue&type=template&id=622f4bac\"\nimport script from \"./TheHeader.vue?vue&type=script&lang=js\"\nexport * from \"./TheHeader.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"C:\\\\Users\\\\I73882\\\\source\\\\repos\\\\prochip-licensing-ui-1\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n \r\n \r\n ","import { render } from \"./TheFooter.vue?vue&type=template&id=4463fe26\"\nimport script from \"./TheFooter.vue?vue&type=script&lang=js\"\nexport * from \"./TheFooter.vue?vue&type=script&lang=js\"\n\nimport \"./TheFooter.vue?vue&type=style&index=0&id=4463fe26&lang=css\"\n\nimport exportComponent from \"C:\\\\Users\\\\I73882\\\\source\\\\repos\\\\prochip-licensing-ui-1\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\n\r\n\r\n","import { render } from \"./App.vue?vue&type=template&id=64d5d6c5\"\nimport script from \"./App.vue?vue&type=script&lang=js\"\nexport * from \"./App.vue?vue&type=script&lang=js\"\n\nimport \"./App.vue?vue&type=style&index=0&id=64d5d6c5&lang=scss\"\n\nimport exportComponent from \"C:\\\\Users\\\\I73882\\\\source\\\\repos\\\\prochip-licensing-ui-1\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__"],"names":["getInternetExplorerVersion","ua","window","navigator","userAgent","msie","indexOf","parseInt","substring","trident","rv","edge","initCompat","install","Vue","component","ResizeObserver","plugin","version","VERSION","GlobalVue","global","use","SVGAnimatedString","convertToArray","value","split","addClasses","el","classes","classList","newClasses","className","baseVal","forEach","newClass","push","SVGElement","setAttribute","join","removeClasses","index","splice","supportsPassive","opts","Object","defineProperty","get","addEventListener","e","ownKeys$2","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","apply","_objectSpread$2","target","i","arguments","length","source","key","_defineProperty","getOwnPropertyDescriptors","defineProperties","DEFAULT_OPTIONS","container","delay","html","placement","title","template","trigger","offset","openTooltips","Tooltip","_reference","_options","_this","this","_classCallCheck","evt","reference","options","relatedreference","toElement","relatedTarget","callback","evt2","relatedreference2","_tooltipNode","removeEventListener","type","contains","_scheduleHide","jquery","show","bind","hide","_isOpen","_init","_createClass","_show","_hide","_dispose","_classes","content","_setContent","classesUpdated","directive","defaultClass","isEqual","setClasses","getOptions","needPopperUpdate","needRestart","isOpen","dispose","popperInstance","update","events","_isDisposed","_enableDocumentTouch","_setEventListeners","$_originalTitle","getAttribute","removeAttribute","_this2","tooltipGenerator","document","createElement","innerHTML","trim","tooltipNode","childNodes","id","ariaId","concat","Math","random","toString","substr","autoHide","_this3","asyncContent","_applyContent","then","_this4","Promise","resolve","reject","allowHtml","rootNode","titleNode","querySelector","innerSelector","nodeType","firstChild","removeChild","appendChild","result","loadingClass","loadingContent","asyncResult","catch","innerText","clearTimeout","_disposeTimer","assign","updateClasses","_ensureShown","_this5","style","display","enableEventListeners","_create","_findContainer","_append","popperOptions","modifiers","arrow","element","arrowSelector","boundariesElement","preventOverflow","Popper","requestAnimationFrame","_this6","_noLongerOpen","disableEventListeners","disposeTime","disposeTimeout","setTimeout","_removeTooltipNode","parentNode","_this7","_events","_ref","func","event","destroy","removeOnDestroy","_this8","directEvents","oppositeEvents","hideOnTargetClick","usedByTooltip","_scheduleShow","_this9","computedDelay","_scheduleTimer","_this10","ownerDocument","body","isSet","_setTooltipNodeEvent","ownKeys$1","_objectSpread$1","_onDocumentTouch","passive","capture","state","enabled","positions","defaultOptions","defaultPlacement","defaultTargetClass","defaultHtml","defaultTemplate","defaultArrowSelector","defaultInnerSelector","defaultDelay","defaultTrigger","defaultOffset","defaultContainer","defaultBoundariesElement","undefined","defaultPopperOptions","defaultLoadingClass","defaultLoadingContent","defaultHideOnTargetClick","popover","defaultBaseClass","defaultWrapperClass","defaultInnerClass","defaultArrowClass","defaultOpenClass","defaultAutoHide","defaultHandleResize","typeofOffset","_typeof","getPlacement","pos","getContent","createTooltip","tooltip","_tooltip","_vueEl","targetClasses","_tooltipTargetClasses","destroyTooltip","_tooltipOldShow","oldValue","setContent","setOptions","unbind","addListeners","onClick","onTouchStart","removeListeners","onTouchEnd","onTouchCancel","currentTarget","closePopover","$_vclosepopover_touch","closeAllPopover","$_closePopoverModifiers","all","changedTouches","touch","$_vclosepopover_touchPoint","firstTouch","abs","screenY","screenX","vclosepopover","_ref2","ownKeys","_objectSpread","getDefault","isIOS","test","MSStream","openPopovers","Element","script","name","components","props","open","Boolean","default","disabled","String","Number","popoverClass","Array","popoverBaseClass","popoverInnerClass","popoverWrapperClass","popoverArrowClass","handleResize","openGroup","openClass","data","computed","cssClass","popoverId","watch","val","oldVal","popoverNode","$refs","$_findContainer","console","warn","scheduleUpdate","$_removeEventListeners","$_addEventListeners","$_updatePopper","handler","deep","created","$_isDisposed","$_mounted","$_events","$_preventOpen","mounted","$_init","deactivated","beforeDestroy","methods","skipDelay","_ref2$force","force","$_scheduleShow","$emit","$_beingShowed","_ref3","$_scheduleHide","$_show","$_disposeTimer","hidden","$_getOffset","$_hide","$_scheduleTimer","$_setTooltipNodeEvent","event2","_ref4","cb","$_restartPopper","$_handleGlobalClose","$_handleResize","handleGlobalClick","handleGlobalClose","handleGlobalTouchend","_loop","normalizeComponent","scopeId","isFunctionalTemplate","moduleIdentifier","shadowMode","createInjector","createInjectorSSR","createInjectorShadow","hook","render","staticRenderFns","_compiled","functional","_scopeId","context","$vnode","ssrContext","parent","__VUE_SSR_CONTEXT__","call","_registeredComponents","add","_ssrRegister","$root","$options","shadowRoot","originalRender","h","existing","beforeCreate","__vue_script__","__vue_render__","_vm","_h","$createElement","_c","_self","staticClass","class","ref","staticStyle","attrs","tabindex","_t","_v","visibility","on","keyup","$event","_k","keyCode","position","notify","_e","__vue_staticRenderFns__","_withStripped","__vue_inject_styles__","__vue_scope_id__","__vue_module_identifier__","__vue_is_functional_template__","__vue_component__","styleInject","css","insertAt","head","getElementsByTagName","insertBefore","styleSheet","cssText","createTextNode","css_248z","installed","finalOptions","merge","Symbol","iterator","constructor","prototype","n","vueAxiosInstalled","o","isAxiosLike","migrateToMultipleInstances","isValidConfig","t","getVueVersion","registerOnVue2","registerOnVue3","error","config","globalProperties","post","axios","$http","every","exports","module","define","sfc","__vccOpts","hasSymbol","toStringTag","PolySymbol","matchedRouteKey","viewDepthKey","routerKey","routeLocationKey","routerViewLocationKey","isBrowser","isESModule","obj","__esModule","applyToParams","fn","params","newParams","isArray","map","noop","TRAILING_SLASH_RE","removeTrailingSlash","path","replace","parseURL","parseQuery","location","currentLocation","query","searchString","hash","searchPos","hashPos","slice","resolveRelativePath","fullPath","stringifyURL","stringifyQuery","stripBase","pathname","base","toLowerCase","startsWith","isSameRouteLocation","a","b","aLastIndex","matched","bLastIndex","isSameRouteRecord","isSameRouteLocationParams","aliasOf","isSameRouteLocationParamsValue","isEquivalentArray","to","from","fromSegments","toSegments","toPosition","segment","NavigationType","NavigationDirection","normalizeBase","baseEl","BEFORE_HASH_RE","createHref","getElementPosition","docRect","documentElement","getBoundingClientRect","elRect","behavior","left","top","computeScrollPosition","pageXOffset","pageYOffset","scrollToPosition","scrollToOptions","positionEl","isIdSelector","process","getElementById","scrollTo","getScrollKey","delta","history","scrollPositions","Map","saveScrollPosition","scrollPosition","set","getSavedScrollPosition","scroll","delete","createBaseLocation","protocol","host","createCurrentLocation","search","slicePos","includes","pathFromHash","useHistoryListeners","historyState","listeners","teardowns","pauseState","popStateHandler","fromState","listener","pop","direction","forward","back","unknown","pauseListeners","listen","teardown","beforeUnloadListener","replaceState","buildState","current","replaced","computeScroll","useHistoryStateNavigation","changeLocation","hashIndex","url","err","currentState","createWebHistory","historyNavigation","historyListeners","go","triggerListeners","routerHistory","createWebHashHistory","isRouteLocation","route","isRouteName","START_LOCATION_NORMALIZED","meta","redirectedFrom","NavigationFailureSymbol","NavigationFailureType","createRouterError","Error","isNavigationFailure","BASE_PARAM_PATTERN","BASE_PATH_PARSER_OPTIONS","sensitive","strict","start","end","REGEX_CHARS_RE","tokensToParser","segments","extraOptions","score","pattern","segmentScores","tokenIndex","token","subSegmentScore","repeatable","optional","regexp","re","RegExp","message","subPattern","parse","match","stringify","avoidDuplicatedSlash","endsWith","param","text","compareScoreArray","diff","comparePathParserScore","aScore","bScore","comp","ROOT_TOKEN","VALID_PARAM_RE","tokenizePath","crash","buffer","previousState","tokens","finalizeSegment","char","customRe","consumeBuffer","addCharToBuffer","createRouteRecordMatcher","record","parser","matcher","children","alias","createRouterMatcher","routes","globalOptions","matchers","matcherMap","getRecordMatcher","addRoute","originalRecord","isRootAdd","mainNormalizedRecord","normalizeRouteRecord","mergeOptions","normalizedRecords","aliases","originalMatcher","normalizedRecord","parentPath","connectingSlash","isAliasRecord","removeRoute","insertMatcher","matcherRef","getRoutes","isRecordChildOf","paramsFromLocation","k","find","m","parentMatcher","unshift","mergeMetaFields","redirect","beforeEnter","normalizeRecordProps","instances","leaveGuards","Set","updateGuards","enterCallbacks","propsObject","reduce","defaults","partialOptions","some","child","HASH_RE","AMPERSAND_RE","SLASH_RE","EQUAL_RE","IM_RE","PLUS_RE","ENC_BRACKET_OPEN_RE","ENC_BRACKET_CLOSE_RE","ENC_CARET_RE","ENC_BACKTICK_RE","ENC_CURLY_OPEN_RE","ENC_PIPE_RE","ENC_CURLY_CLOSE_RE","ENC_SPACE_RE","commonEncode","encodeURI","encodeHash","encodeQueryValue","encodeQueryKey","encodePath","encodeParam","decode","decodeURIComponent","hasLeadingIM","searchParams","searchParam","eqPos","currentValue","values","v","normalizeQuery","normalizedQuery","useCallbacks","handlers","reset","list","guardToPromiseFn","guard","enterCallbackArray","next","valid","guardReturn","guardCall","extractComponentsGuards","guardType","guards","rawComponent","isRouteComponent","componentPromise","resolved","resolvedComponent","useLink","router","inject","currentRoute","unref","activeRecordIndex","routeMatched","currentMatched","findIndex","parentRecordPath","getOriginalPath","isActive","includesParams","isExactActive","navigate","guardEvent","href","RouterLinkImpl","defineComponent","required","activeClass","exactActiveClass","custom","ariaCurrentValue","setup","slots","link","reactive","elClass","getLinkClass","linkActiveClass","linkExactActiveClass","RouterLink","metaKey","altKey","ctrlKey","shiftKey","defaultPrevented","button","preventDefault","outer","inner","innerValue","outerValue","propClass","globalClass","RouterViewImpl","inheritAttrs","injectedRoute","routeToDisplay","depth","matchedRouteRef","provide","viewRef","instance","oldInstance","oldName","size","flush","matchedRoute","ViewComponent","currentName","normalizeSlot","Component","routePropsOption","routeProps","onVnodeUnmounted","vnode","isUnmounted","slot","slotContent","RouterView","createRouter","parseQuery$1","stringifyQuery$1","beforeGuards","beforeResolveGuards","afterGuards","shallowRef","pendingLocation","scrollBehavior","scrollRestoration","normalizeParams","paramValue","encodeParams","decodeParams","parentOrRoute","recordMatcher","routeMatcher","hasRoute","rawLocation","locationNormalized","matcherLocation","targetParams","locationAsObject","checkCanceledNavigation","pushWithRedirect","handleRedirectRecord","lastMatched","newTargetLocation","targetLocation","shouldRedirect","toLocation","failure","handleScroll","markAsReady","triggerError","finalizeNavigation","triggerAfterEach","checkCanceledNavigationAndReject","leavingRecords","updatingRecords","enteringRecords","extractChangingRecords","reverse","canceledNavigationCheck","runGuardQueue","isPush","isFirstNavigation","removeHistoryListener","setupListeners","_from","info","ready","readyHandlers","errorHandlers","isReady","nextTick","started","installedApps","beforeEach","beforeResolve","afterEach","onError","app","$router","reactiveRoute","unmountApp","unmount","promise","len","max","recordFrom","recordTo","useRoute","defaultConfig","expireTimes","domain","secure","sameSite","VueCookiesManager","current_default_config","propertyName","keyName","cookie","encodeURIComponent","JSON","_expires","Infinity","_expireTime","Date","toUTCString","remove","isKey","_keys","_index","$cookies","_createElementVNode","role","_hoisted_2","_createElementBlock","_hoisted_1","mapGetters","headerHTML","assignHeaderHTML","charts","querySelectorAll","chartsWithId","dataset","chartid","j","onclick","$store","dispatch","__exports__","footerHTML","cookieBtnLink","setCookieAgree"],"sourceRoot":""}