{"version":3,"sources":["webpack:///./node_modules/@ionic/core/dist/esm-es5/ion-route_4.entry.js","webpack:///./node_modules/@ionic/core/dist/esm-es5/theme-18cbe2cc.js"],"names":["Route","hostRef","this","url","ionRouteDataChanged","prototype","onUpdate","newValue","emit","onComponentProps","oldValue","keys1","Object","keys","keys2","length","_i","keys1_1","key","connectedCallback","defineProperty","get","enumerable","configurable","RouteRedirect","ionRouteRedirectChanged","propDidChange","ROUTER_INTENT_NONE","ROUTER_INTENT_FORWARD","ROUTER_INTENT_BACK","generatePath","segments","path","filter","s","join","chainToPath","chain","chain_1","route","_a","_b","segment","param","params","slice","push","writePath","history","root","useHash","direction","state","parsePath","pushState","replaceState","removePrefix","prefix","i","readPath","loc","pathname","hash","split","map","trim","printRoutes","routes","console","group","_loop_1","forEach","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","undefined","waitUntilNavNode","document","body","Promise","resolve","window","addEventListener","once","QUERY","matches","querySelector","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","Array","children","el","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","ev","_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","color","hostContext","selector","closest","createColorClasses","getClassList","classes","array","isArray","c","getClassMap","SCHEME","openURL","router","test","preventDefault"],"mappings":"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","file":"js/chunk-1bf2d694.2e1bc876.js","sourcesContent":["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","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"],"sourceRoot":""}