{"version":3,"sources":["webpack:///./node_modules/@ionic/vue/node_modules/@ionic/core/dist/esm-es5/theme-18cbe2cc.js","webpack:///./node_modules/@ionic/vue/node_modules/@ionic/core/dist/esm-es5/ion-route_4.entry.js"],"names":["hostContext","selector","el","closest","createColorClasses","color","_a","length","undefined","getClassList","classes","array","Array","isArray","split","filter","c","map","trim","getClassMap","forEach","SCHEME","openURL","url","ev","direction","router","this","test","document","querySelector","preventDefault","push","Route","hostRef","ionRouteDataChanged","prototype","onUpdate","newValue","emit","onComponentProps","oldValue","keys1","Object","keys","keys2","_i","keys1_1","key","connectedCallback","defineProperty","get","enumerable","configurable","RouteRedirect","ionRouteRedirectChanged","propDidChange","ROUTER_INTENT_NONE","ROUTER_INTENT_FORWARD","ROUTER_INTENT_BACK","generatePath","segments","path","s","join","chainToPath","chain","chain_1","route","_b","segment","param","params","slice","writePath","history","root","useHash","state","parsePath","pushState","replaceState","removePrefix","prefix","i","readPath","loc","pathname","hash","printRoutes","routes","console","group","_loop_1","r","apply","ids","id","debug","routes_1","groupEnd","printRedirects","redirects","redirects_1","redirect","to","from","writeNavState","index","changed","outlet","result","e_1","label","trys","searchNavNode","componentOnReady","sent","setRouteId","element","markVisible","error","readNavState","node","getRouteId","waitUntilNavNode","body","Promise","resolve","window","addEventListener","once","QUERY","matches","matchesRedirect","input","expected","routeRedirect","find","matchesIDs","len","Math","min","toLowerCase","matchesPath","inputPath","allparams","RouterSegments","matchesDefault","path_1","data","next","mergeParams","a","b","assign","routerIDsToChain","chains","match","maxMatches","plainIDs","chains_1","score","routerPathToChain","chains_2","matchedChain","computePriority","level","chain_2","pow","shift","readRedirects","children","tagName","readProp","readRoutes","flattenRouterTree","readRouteNodes","component","Error","componentProps","prop","hasAttribute","getAttribute","nodes","nodes_1","flattenNode","sub","Router","class_1","previousPath","busy","lastState","ionRouteWillChange","ionRouteDidChange","componentWillLoad","onRoutesChanged","componentDidLoad","onRedirectChanged","bind","onPopState","historyDirection","getPath","writeNavStateRoot","onBackButton","_this","detail","register","back","startsWith","URL","location","href","setPath","waitPromise","printDebug","navChanged","warn","safeWriteNavState","win","title","redirectFrom","unlock","e_2","lock","p","routeEvent","routeChangeEvent","redirectFromPath","redirectedFrom","RouterLink","routerDirection","onClick","render","mode","attrs","rel","target","class"],"mappings":"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","file":"js/chunk-793ec3d8.dca90c6e.js","sourcesContent":["import { __awaiter, __generator } from \"tslib\";\nvar hostContext = function (selector, el) {\n return el.closest(selector) !== null;\n};\n/**\n * Create the mode and color classes for the component based on the classes passed in\n */\nvar createColorClasses = function (color) {\n var _a;\n return (typeof color === 'string' && color.length > 0) ? (_a = {\n 'ion-color': true\n },\n _a[\"ion-color-\" + color] = true,\n _a) : undefined;\n};\nvar getClassList = function (classes) {\n if (classes !== undefined) {\n var array = Array.isArray(classes) ? classes : classes.split(' ');\n return array\n .filter(function (c) { return c != null; })\n .map(function (c) { return c.trim(); })\n .filter(function (c) { return c !== ''; });\n }\n return [];\n};\nvar getClassMap = function (classes) {\n var map = {};\n getClassList(classes).forEach(function (c) { return map[c] = true; });\n return map;\n};\nvar SCHEME = /^[a-z][a-z0-9+\\-.]*:/;\nvar openURL = function (url, ev, direction) { return __awaiter(void 0, void 0, void 0, function () {\n var router;\n return __generator(this, function (_a) {\n if (url != null && url[0] !== '#' && !SCHEME.test(url)) {\n router = document.querySelector('ion-router');\n if (router) {\n if (ev != null) {\n ev.preventDefault();\n }\n return [2 /*return*/, router.push(url, direction)];\n }\n }\n return [2 /*return*/, false];\n });\n}); };\nexport { createColorClasses as c, getClassMap as g, hostContext as h, openURL as o };\n","import { __awaiter, __generator, __spreadArrays } from \"tslib\";\nimport { r as registerInstance, d as createEvent, e as getElement, c as getIonMode, h, H as Host } from './core-feeeff0d.js';\nimport './config-3c7f3790.js';\nimport { e as debounce } from './helpers-46f4a262.js';\nimport { o as openURL, c as createColorClasses } from './theme-18cbe2cc.js';\nvar Route = /** @class */ (function () {\n function Route(hostRef) {\n registerInstance(this, hostRef);\n /**\n * Relative path that needs to match in order for this route to apply.\n *\n * Accepts paths similar to expressjs so that you can define parameters\n * in the url /foo/:bar where bar would be available in incoming props.\n */\n this.url = '';\n this.ionRouteDataChanged = createEvent(this, \"ionRouteDataChanged\", 7);\n }\n Route.prototype.onUpdate = function (newValue) {\n this.ionRouteDataChanged.emit(newValue);\n };\n Route.prototype.onComponentProps = function (newValue, oldValue) {\n if (newValue === oldValue) {\n return;\n }\n var keys1 = newValue ? Object.keys(newValue) : [];\n var keys2 = oldValue ? Object.keys(oldValue) : [];\n if (keys1.length !== keys2.length) {\n this.onUpdate(newValue);\n return;\n }\n for (var _i = 0, keys1_1 = keys1; _i < keys1_1.length; _i++) {\n var key = keys1_1[_i];\n if (newValue[key] !== oldValue[key]) {\n this.onUpdate(newValue);\n return;\n }\n }\n };\n Route.prototype.connectedCallback = function () {\n this.ionRouteDataChanged.emit();\n };\n Object.defineProperty(Route, \"watchers\", {\n get: function () {\n return {\n \"url\": [\"onUpdate\"],\n \"component\": [\"onUpdate\"],\n \"componentProps\": [\"onComponentProps\"]\n };\n },\n enumerable: true,\n configurable: true\n });\n return Route;\n}());\nvar RouteRedirect = /** @class */ (function () {\n function RouteRedirect(hostRef) {\n registerInstance(this, hostRef);\n this.ionRouteRedirectChanged = createEvent(this, \"ionRouteRedirectChanged\", 7);\n }\n RouteRedirect.prototype.propDidChange = function () {\n this.ionRouteRedirectChanged.emit();\n };\n RouteRedirect.prototype.connectedCallback = function () {\n this.ionRouteRedirectChanged.emit();\n };\n Object.defineProperty(RouteRedirect, \"watchers\", {\n get: function () {\n return {\n \"from\": [\"propDidChange\"],\n \"to\": [\"propDidChange\"]\n };\n },\n enumerable: true,\n configurable: true\n });\n return RouteRedirect;\n}());\nvar ROUTER_INTENT_NONE = 'root';\nvar ROUTER_INTENT_FORWARD = 'forward';\nvar ROUTER_INTENT_BACK = 'back';\nvar generatePath = function (segments) {\n var path = segments\n .filter(function (s) { return s.length > 0; })\n .join('/');\n return '/' + path;\n};\nvar chainToPath = function (chain) {\n var path = [];\n for (var _i = 0, chain_1 = chain; _i < chain_1.length; _i++) {\n var route = chain_1[_i];\n for (var _a = 0, _b = route.path; _a < _b.length; _a++) {\n var segment = _b[_a];\n if (segment[0] === ':') {\n var param = route.params && route.params[segment.slice(1)];\n if (!param) {\n return null;\n }\n path.push(param);\n }\n else if (segment !== '') {\n path.push(segment);\n }\n }\n }\n return path;\n};\nvar writePath = function (history, root, useHash, path, direction, state) {\n var url = generatePath(__spreadArrays(parsePath(root), path));\n if (useHash) {\n url = '#' + url;\n }\n if (direction === ROUTER_INTENT_FORWARD) {\n history.pushState(state, '', url);\n }\n else {\n history.replaceState(state, '', url);\n }\n};\nvar removePrefix = function (prefix, path) {\n if (prefix.length > path.length) {\n return null;\n }\n if (prefix.length <= 1 && prefix[0] === '') {\n return path;\n }\n for (var i = 0; i < prefix.length; i++) {\n if (prefix[i].length > 0 && prefix[i] !== path[i]) {\n return null;\n }\n }\n if (path.length === prefix.length) {\n return [''];\n }\n return path.slice(prefix.length);\n};\nvar readPath = function (loc, root, useHash) {\n var pathname = loc.pathname;\n if (useHash) {\n var hash = loc.hash;\n pathname = (hash[0] === '#')\n ? hash.slice(1)\n : '';\n }\n var prefix = parsePath(root);\n var path = parsePath(pathname);\n return removePrefix(prefix, path);\n};\nvar parsePath = function (path) {\n if (path == null) {\n return [''];\n }\n var segments = path.split('/')\n .map(function (s) { return s.trim(); })\n .filter(function (s) { return s.length > 0; });\n if (segments.length === 0) {\n return [''];\n }\n else {\n return segments;\n }\n};\nvar printRoutes = function (routes) {\n console.group(\"[ion-core] ROUTES[\" + routes.length + \"]\");\n var _loop_1 = function (chain) {\n var path = [];\n chain.forEach(function (r) { return path.push.apply(path, r.path); });\n var ids = chain.map(function (r) { return r.id; });\n console.debug(\"%c \" + generatePath(path), 'font-weight: bold; padding-left: 20px', '=>\\t', \"(\" + ids.join(', ') + \")\");\n };\n for (var _i = 0, routes_1 = routes; _i < routes_1.length; _i++) {\n var chain = routes_1[_i];\n _loop_1(chain);\n }\n console.groupEnd();\n};\nvar printRedirects = function (redirects) {\n console.group(\"[ion-core] REDIRECTS[\" + redirects.length + \"]\");\n for (var _i = 0, redirects_1 = redirects; _i < redirects_1.length; _i++) {\n var redirect = redirects_1[_i];\n if (redirect.to) {\n console.debug('FROM: ', \"$c \" + generatePath(redirect.from), 'font-weight: bold', ' TO: ', \"$c \" + generatePath(redirect.to), 'font-weight: bold');\n }\n }\n console.groupEnd();\n};\nvar writeNavState = function (root, chain, direction, index, changed) {\n if (changed === void 0) { changed = false; }\n return __awaiter(void 0, void 0, void 0, function () {\n var outlet, route, result, e_1;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _a.trys.push([0, 6, , 7]);\n outlet = searchNavNode(root);\n // make sure we can continue interacting the DOM, otherwise abort\n if (index >= chain.length || !outlet) {\n return [2 /*return*/, changed];\n }\n return [4 /*yield*/, outlet.componentOnReady()];\n case 1:\n _a.sent();\n route = chain[index];\n return [4 /*yield*/, outlet.setRouteId(route.id, route.params, direction)];\n case 2:\n result = _a.sent();\n // if the outlet changed the page, reset navigation to neutral (no direction)\n // this means nested outlets will not animate\n if (result.changed) {\n direction = ROUTER_INTENT_NONE;\n changed = true;\n }\n return [4 /*yield*/, writeNavState(result.element, chain, direction, index + 1, changed)];\n case 3:\n // recursively set nested outlets\n changed = _a.sent();\n if (!result.markVisible) return [3 /*break*/, 5];\n return [4 /*yield*/, result.markVisible()];\n case 4:\n _a.sent();\n _a.label = 5;\n case 5: return [2 /*return*/, changed];\n case 6:\n e_1 = _a.sent();\n console.error(e_1);\n return [2 /*return*/, false];\n case 7: return [2 /*return*/];\n }\n });\n });\n};\nvar readNavState = function (root) { return __awaiter(void 0, void 0, void 0, function () {\n var ids, outlet, node, id;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n ids = [];\n node = root;\n _a.label = 1;\n case 1:\n if (!true) return [3 /*break*/, 5];\n outlet = searchNavNode(node);\n if (!outlet) return [3 /*break*/, 3];\n return [4 /*yield*/, outlet.getRouteId()];\n case 2:\n id = _a.sent();\n if (id) {\n node = id.element;\n id.element = undefined;\n ids.push(id);\n }\n else {\n return [3 /*break*/, 5];\n }\n return [3 /*break*/, 4];\n case 3: return [3 /*break*/, 5];\n case 4: return [3 /*break*/, 1];\n case 5: return [2 /*return*/, { ids: ids, outlet: outlet }];\n }\n });\n}); };\nvar waitUntilNavNode = function () {\n if (searchNavNode(document.body)) {\n return Promise.resolve();\n }\n return new Promise(function (resolve) {\n window.addEventListener('ionNavWillLoad', resolve, { once: true });\n });\n};\nvar QUERY = ':not([no-router]) ion-nav, :not([no-router]) ion-tabs, :not([no-router]) ion-router-outlet';\nvar searchNavNode = function (root) {\n if (!root) {\n return undefined;\n }\n if (root.matches(QUERY)) {\n return root;\n }\n var outlet = root.querySelector(QUERY);\n return outlet ? outlet : undefined;\n};\nvar matchesRedirect = function (input, route) {\n var from = route.from, to = route.to;\n if (to === undefined) {\n return false;\n }\n if (from.length > input.length) {\n return false;\n }\n for (var i = 0; i < from.length; i++) {\n var expected = from[i];\n if (expected === '*') {\n return true;\n }\n if (expected !== input[i]) {\n return false;\n }\n }\n return from.length === input.length;\n};\nvar routeRedirect = function (path, routes) {\n return routes.find(function (route) { return matchesRedirect(path, route); });\n};\nvar matchesIDs = function (ids, chain) {\n var len = Math.min(ids.length, chain.length);\n var i = 0;\n for (; i < len; i++) {\n if (ids[i].toLowerCase() !== chain[i].id) {\n break;\n }\n }\n return i;\n};\nvar matchesPath = function (inputPath, chain) {\n var segments = new RouterSegments(inputPath);\n var matchesDefault = false;\n var allparams;\n for (var i = 0; i < chain.length; i++) {\n var path = chain[i].path;\n if (path[0] === '') {\n matchesDefault = true;\n }\n else {\n for (var _i = 0, path_1 = path; _i < path_1.length; _i++) {\n var segment = path_1[_i];\n var data = segments.next();\n // data param\n if (segment[0] === ':') {\n if (data === '') {\n return null;\n }\n allparams = allparams || [];\n var params = allparams[i] || (allparams[i] = {});\n params[segment.slice(1)] = data;\n }\n else if (data !== segment) {\n return null;\n }\n }\n matchesDefault = false;\n }\n }\n var matches = (matchesDefault)\n ? matchesDefault === (segments.next() === '')\n : true;\n if (!matches) {\n return null;\n }\n if (allparams) {\n return chain.map(function (route, i) { return ({\n id: route.id,\n path: route.path,\n params: mergeParams(route.params, allparams[i])\n }); });\n }\n return chain;\n};\nvar mergeParams = function (a, b) {\n if (!a && b) {\n return b;\n }\n else if (a && !b) {\n return a;\n }\n else if (a && b) {\n return Object.assign(Object.assign({}, a), b);\n }\n return undefined;\n};\nvar routerIDsToChain = function (ids, chains) {\n var match = null;\n var maxMatches = 0;\n var plainIDs = ids.map(function (i) { return i.id; });\n for (var _i = 0, chains_1 = chains; _i < chains_1.length; _i++) {\n var chain = chains_1[_i];\n var score = matchesIDs(plainIDs, chain);\n if (score > maxMatches) {\n match = chain;\n maxMatches = score;\n }\n }\n if (match) {\n return match.map(function (route, i) { return ({\n id: route.id,\n path: route.path,\n params: mergeParams(route.params, ids[i] && ids[i].params)\n }); });\n }\n return null;\n};\nvar routerPathToChain = function (path, chains) {\n var match = null;\n var matches = 0;\n for (var _i = 0, chains_2 = chains; _i < chains_2.length; _i++) {\n var chain = chains_2[_i];\n var matchedChain = matchesPath(path, chain);\n if (matchedChain !== null) {\n var score = computePriority(matchedChain);\n if (score > matches) {\n matches = score;\n match = matchedChain;\n }\n }\n }\n return match;\n};\nvar computePriority = function (chain) {\n var score = 1;\n var level = 1;\n for (var _i = 0, chain_2 = chain; _i < chain_2.length; _i++) {\n var route = chain_2[_i];\n for (var _a = 0, _b = route.path; _a < _b.length; _a++) {\n var path = _b[_a];\n if (path[0] === ':') {\n score += Math.pow(1, level);\n }\n else if (path !== '') {\n score += Math.pow(2, level);\n }\n level++;\n }\n }\n return score;\n};\nvar RouterSegments = /** @class */ (function () {\n function RouterSegments(path) {\n this.path = path.slice();\n }\n RouterSegments.prototype.next = function () {\n if (this.path.length > 0) {\n return this.path.shift();\n }\n return '';\n };\n return RouterSegments;\n}());\nvar readRedirects = function (root) {\n return Array.from(root.children)\n .filter(function (el) { return el.tagName === 'ION-ROUTE-REDIRECT'; })\n .map(function (el) {\n var to = readProp(el, 'to');\n return {\n from: parsePath(readProp(el, 'from')),\n to: to == null ? undefined : parsePath(to),\n };\n });\n};\nvar readRoutes = function (root) {\n return flattenRouterTree(readRouteNodes(root));\n};\nvar readRouteNodes = function (root, node) {\n if (node === void 0) { node = root; }\n return Array.from(node.children)\n .filter(function (el) { return el.tagName === 'ION-ROUTE' && el.component; })\n .map(function (el) {\n var component = readProp(el, 'component');\n if (component == null) {\n throw new Error('component missing in ion-route');\n }\n return {\n path: parsePath(readProp(el, 'url')),\n id: component.toLowerCase(),\n params: el.componentProps,\n children: readRouteNodes(root, el)\n };\n });\n};\nvar readProp = function (el, prop) {\n if (prop in el) {\n return el[prop];\n }\n if (el.hasAttribute(prop)) {\n return el.getAttribute(prop);\n }\n return null;\n};\nvar flattenRouterTree = function (nodes) {\n var routes = [];\n for (var _i = 0, nodes_1 = nodes; _i < nodes_1.length; _i++) {\n var node = nodes_1[_i];\n flattenNode([], routes, node);\n }\n return routes;\n};\nvar flattenNode = function (chain, routes, node) {\n var s = chain.slice();\n s.push({\n id: node.id,\n path: node.path,\n params: node.params\n });\n if (node.children.length === 0) {\n routes.push(s);\n return;\n }\n for (var _i = 0, _a = node.children; _i < _a.length; _i++) {\n var sub = _a[_i];\n flattenNode(s, routes, sub);\n }\n};\nvar Router = /** @class */ (function () {\n function class_1(hostRef) {\n registerInstance(this, hostRef);\n this.previousPath = null;\n this.busy = false;\n this.state = 0;\n this.lastState = 0;\n /**\n * By default `ion-router` will match the routes at the root path (\"/\").\n * That can be changed when\n *\n */\n this.root = '/';\n /**\n * The router can work in two \"modes\":\n * - With hash: `/index.html#/path/to/page`\n * - Without hash: `/path/to/page`\n *\n * Using one or another might depend in the requirements of your app and/or where it's deployed.\n *\n * Usually \"hash-less\" navigation works better for SEO and it's more user friendly too, but it might\n * requires additional server-side configuration in order to properly work.\n *\n * On the otherside hash-navigation is much easier to deploy, it even works over the file protocol.\n *\n * By default, this property is `true`, change to `false` to allow hash-less URLs.\n */\n this.useHash = true;\n this.ionRouteWillChange = createEvent(this, \"ionRouteWillChange\", 7);\n this.ionRouteDidChange = createEvent(this, \"ionRouteDidChange\", 7);\n }\n class_1.prototype.componentWillLoad = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n console.debug('[ion-router] router will load');\n return [4 /*yield*/, waitUntilNavNode()];\n case 1:\n _a.sent();\n console.debug('[ion-router] found nav');\n return [4 /*yield*/, this.onRoutesChanged()];\n case 2:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n class_1.prototype.componentDidLoad = function () {\n window.addEventListener('ionRouteRedirectChanged', debounce(this.onRedirectChanged.bind(this), 10));\n window.addEventListener('ionRouteDataChanged', debounce(this.onRoutesChanged.bind(this), 100));\n };\n class_1.prototype.onPopState = function () {\n var direction = this.historyDirection();\n var path = this.getPath();\n console.debug('[ion-router] URL changed -> update nav', path, direction);\n return this.writeNavStateRoot(path, direction);\n };\n class_1.prototype.onBackButton = function (ev) {\n var _this = this;\n ev.detail.register(0, function () { return _this.back(); });\n };\n /**\n * Navigate to the specified URL.\n *\n * @param url The url to navigate to.\n * @param direction The direction of the animation. Defaults to `\"forward\"`.\n */\n class_1.prototype.push = function (url, direction) {\n if (direction === void 0) { direction = 'forward'; }\n if (url.startsWith('.')) {\n url = (new URL(url, window.location.href)).pathname;\n }\n console.debug('[ion-router] URL pushed -> updating nav', url, direction);\n var path = parsePath(url);\n this.setPath(path, direction);\n return this.writeNavStateRoot(path, direction);\n };\n /**\n * Go back to previous page in the window.history.\n */\n class_1.prototype.back = function () {\n window.history.back();\n return Promise.resolve(this.waitPromise);\n };\n /** @internal */\n class_1.prototype.printDebug = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n console.debug('CURRENT PATH', this.getPath());\n console.debug('PREVIOUS PATH', this.previousPath);\n printRoutes(readRoutes(this.el));\n printRedirects(readRedirects(this.el));\n return [2 /*return*/];\n });\n });\n };\n /** @internal */\n class_1.prototype.navChanged = function (direction) {\n return __awaiter(this, void 0, void 0, function () {\n var _a, ids, outlet, routes, chain, path;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (this.busy) {\n console.warn('[ion-router] router is busy, navChanged was cancelled');\n return [2 /*return*/, false];\n }\n return [4 /*yield*/, readNavState(window.document.body)];\n case 1:\n _a = _b.sent(), ids = _a.ids, outlet = _a.outlet;\n routes = readRoutes(this.el);\n chain = routerIDsToChain(ids, routes);\n if (!chain) {\n console.warn('[ion-router] no matching URL for ', ids.map(function (i) { return i.id; }));\n return [2 /*return*/, false];\n }\n path = chainToPath(chain);\n if (!path) {\n console.warn('[ion-router] router could not match path because some required param is missing');\n return [2 /*return*/, false];\n }\n console.debug('[ion-router] nav changed -> update URL', ids, path);\n this.setPath(path, direction);\n return [4 /*yield*/, this.safeWriteNavState(outlet, chain, ROUTER_INTENT_NONE, path, null, ids.length)];\n case 2:\n _b.sent();\n return [2 /*return*/, true];\n }\n });\n });\n };\n class_1.prototype.onRedirectChanged = function () {\n var path = this.getPath();\n if (path && routeRedirect(path, readRedirects(this.el))) {\n this.writeNavStateRoot(path, ROUTER_INTENT_NONE);\n }\n };\n class_1.prototype.onRoutesChanged = function () {\n return this.writeNavStateRoot(this.getPath(), ROUTER_INTENT_NONE);\n };\n class_1.prototype.historyDirection = function () {\n var win = window;\n if (win.history.state === null) {\n this.state++;\n win.history.replaceState(this.state, win.document.title, win.document.location && win.document.location.href);\n }\n var state = win.history.state;\n var lastState = this.lastState;\n this.lastState = state;\n if (state > lastState) {\n return ROUTER_INTENT_FORWARD;\n }\n else if (state < lastState) {\n return ROUTER_INTENT_BACK;\n }\n else {\n return ROUTER_INTENT_NONE;\n }\n };\n class_1.prototype.writeNavStateRoot = function (path, direction) {\n return __awaiter(this, void 0, void 0, function () {\n var redirects, redirect, redirectFrom, routes, chain;\n return __generator(this, function (_a) {\n if (!path) {\n console.error('[ion-router] URL is not part of the routing set');\n return [2 /*return*/, false];\n }\n redirects = readRedirects(this.el);\n redirect = routeRedirect(path, redirects);\n redirectFrom = null;\n if (redirect) {\n this.setPath(redirect.to, direction);\n redirectFrom = redirect.from;\n path = redirect.to;\n }\n routes = readRoutes(this.el);\n chain = routerPathToChain(path, routes);\n if (!chain) {\n console.error('[ion-router] the path does not match any route');\n return [2 /*return*/, false];\n }\n // write DOM give\n return [2 /*return*/, this.safeWriteNavState(document.body, chain, direction, path, redirectFrom)];\n });\n });\n };\n class_1.prototype.safeWriteNavState = function (node, chain, direction, path, redirectFrom, index) {\n if (index === void 0) { index = 0; }\n return __awaiter(this, void 0, void 0, function () {\n var unlock, changed, e_2;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.lock()];\n case 1:\n unlock = _a.sent();\n changed = false;\n _a.label = 2;\n case 2:\n _a.trys.push([2, 4, , 5]);\n return [4 /*yield*/, this.writeNavState(node, chain, direction, path, redirectFrom, index)];\n case 3:\n changed = _a.sent();\n return [3 /*break*/, 5];\n case 4:\n e_2 = _a.sent();\n console.error(e_2);\n return [3 /*break*/, 5];\n case 5:\n unlock();\n return [2 /*return*/, changed];\n }\n });\n });\n };\n class_1.prototype.lock = function () {\n return __awaiter(this, void 0, void 0, function () {\n var p, resolve;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n p = this.waitPromise;\n this.waitPromise = new Promise(function (r) { return resolve = r; });\n if (!(p !== undefined)) return [3 /*break*/, 2];\n return [4 /*yield*/, p];\n case 1:\n _a.sent();\n _a.label = 2;\n case 2: return [2 /*return*/, resolve];\n }\n });\n });\n };\n class_1.prototype.writeNavState = function (node, chain, direction, path, redirectFrom, index) {\n if (index === void 0) { index = 0; }\n return __awaiter(this, void 0, void 0, function () {\n var routeEvent, changed;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (this.busy) {\n console.warn('[ion-router] router is busy, transition was cancelled');\n return [2 /*return*/, false];\n }\n this.busy = true;\n routeEvent = this.routeChangeEvent(path, redirectFrom);\n if (routeEvent) {\n this.ionRouteWillChange.emit(routeEvent);\n }\n return [4 /*yield*/, writeNavState(node, chain, direction, index)];\n case 1:\n changed = _a.sent();\n this.busy = false;\n if (changed) {\n console.debug('[ion-router] route changed', path);\n }\n // emit did change\n if (routeEvent) {\n this.ionRouteDidChange.emit(routeEvent);\n }\n return [2 /*return*/, changed];\n }\n });\n });\n };\n class_1.prototype.setPath = function (path, direction) {\n this.state++;\n writePath(window.history, this.root, this.useHash, path, direction, this.state);\n };\n class_1.prototype.getPath = function () {\n return readPath(window.location, this.root, this.useHash);\n };\n class_1.prototype.routeChangeEvent = function (path, redirectFromPath) {\n var from = this.previousPath;\n var to = generatePath(path);\n this.previousPath = to;\n if (to === from) {\n return null;\n }\n var redirectedFrom = redirectFromPath ? generatePath(redirectFromPath) : null;\n return {\n from: from,\n redirectedFrom: redirectedFrom,\n to: to,\n };\n };\n Object.defineProperty(class_1.prototype, \"el\", {\n get: function () { return getElement(this); },\n enumerable: true,\n configurable: true\n });\n return class_1;\n}());\nvar RouterLink = /** @class */ (function () {\n function RouterLink(hostRef) {\n var _this = this;\n registerInstance(this, hostRef);\n /**\n * When using a router, it specifies the transition direction when navigating to\n * another page using `href`.\n */\n this.routerDirection = 'forward';\n this.onClick = function (ev) {\n openURL(_this.href, ev, _this.routerDirection);\n };\n }\n RouterLink.prototype.render = function () {\n var _a;\n var mode = getIonMode(this);\n var attrs = {\n href: this.href,\n rel: this.rel,\n target: this.target\n };\n return (h(Host, { onClick: this.onClick, class: Object.assign(Object.assign({}, createColorClasses(this.color)), (_a = {}, _a[mode] = true, _a['ion-activatable'] = true, _a)) }, h(\"a\", Object.assign({}, attrs), h(\"slot\", null))));\n };\n Object.defineProperty(RouterLink, \"style\", {\n get: function () { return \":host{--background:transparent;--color:var(--ion-color-primary,#3880ff);background:var(--background);color:var(--color)}:host(.ion-color){color:var(--ion-color-base)}a{font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;letter-spacing:inherit;text-decoration:inherit;text-overflow:inherit;text-transform:inherit;text-align:inherit;white-space:inherit;color:inherit}\"; },\n enumerable: true,\n configurable: true\n });\n return RouterLink;\n}());\nexport { Route as ion_route, RouteRedirect as ion_route_redirect, Router as ion_router, RouterLink as ion_router_link };\n"],"sourceRoot":""}