{"version":3,"file":"vendors-4e64aa37.xxxxxxxx.bundle.js","mappings":"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","sources":["webpack://iadviser/./node_modules/aurelia-polyfills/dist/native-modules/aurelia-polyfills.js","webpack://iadviser/./node_modules/aurelia-portal-attribute/dist/native-modules/index.js","webpack://iadviser/./node_modules/aurelia-route-recognizer/dist/native-modules/aurelia-route-recognizer.js","webpack://iadviser/./node_modules/aurelia-router/dist/native-modules/aurelia-router.js"],"sourcesContent":["var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nimport { PLATFORM } from 'aurelia-pal';\n\nif (typeof FEATURE_NO_ES2015 === 'undefined') {\n\n (function (Object, GOPS) {\n 'use strict';\n\n if (GOPS in Object) return;\n\n var setDescriptor,\n G = PLATFORM.global,\n id = 0,\n random = '' + Math.random(),\n prefix = '__\\x01symbol:',\n prefixLength = prefix.length,\n internalSymbol = '__\\x01symbol@@' + random,\n DP = 'defineProperty',\n DPies = 'defineProperties',\n GOPN = 'getOwnPropertyNames',\n GOPD = 'getOwnPropertyDescriptor',\n PIE = 'propertyIsEnumerable',\n gOPN = Object[GOPN],\n gOPD = Object[GOPD],\n create = Object.create,\n keys = Object.keys,\n defineProperty = Object[DP],\n $defineProperties = Object[DPies],\n descriptor = gOPD(Object, GOPN),\n ObjectProto = Object.prototype,\n hOP = ObjectProto.hasOwnProperty,\n pIE = ObjectProto[PIE],\n toString = ObjectProto.toString,\n indexOf = Array.prototype.indexOf || function (v) {\n for (var i = this.length; i-- && this[i] !== v;) {}\n return i;\n },\n addInternalIfNeeded = function addInternalIfNeeded(o, uid, enumerable) {\n if (!hOP.call(o, internalSymbol)) {\n defineProperty(o, internalSymbol, {\n enumerable: false,\n configurable: false,\n writable: false,\n value: {}\n });\n }\n o[internalSymbol]['@@' + uid] = enumerable;\n },\n createWithSymbols = function createWithSymbols(proto, descriptors) {\n var self = create(proto);\n if (descriptors !== null && (typeof descriptors === 'undefined' ? 'undefined' : _typeof(descriptors)) === 'object') {\n gOPN(descriptors).forEach(function (key) {\n if (propertyIsEnumerable.call(descriptors, key)) {\n $defineProperty(self, key, descriptors[key]);\n }\n });\n }\n return self;\n },\n copyAsNonEnumerable = function copyAsNonEnumerable(descriptor) {\n var newDescriptor = create(descriptor);\n newDescriptor.enumerable = false;\n return newDescriptor;\n },\n get = function get() {},\n onlyNonSymbols = function onlyNonSymbols(name) {\n return name != internalSymbol && !hOP.call(source, name);\n },\n onlySymbols = function onlySymbols(name) {\n return name != internalSymbol && hOP.call(source, name);\n },\n propertyIsEnumerable = function propertyIsEnumerable(key) {\n var uid = '' + key;\n return onlySymbols(uid) ? hOP.call(this, uid) && this[internalSymbol] && this[internalSymbol]['@@' + uid] : pIE.call(this, key);\n },\n setAndGetSymbol = function setAndGetSymbol(uid) {\n var descriptor = {\n enumerable: false,\n configurable: true,\n get: get,\n set: function set(value) {\n setDescriptor(this, uid, {\n enumerable: false,\n configurable: true,\n writable: true,\n value: value\n });\n addInternalIfNeeded(this, uid, true);\n }\n };\n defineProperty(ObjectProto, uid, descriptor);\n return source[uid] = defineProperty(Object(uid), 'constructor', sourceConstructor);\n },\n _Symbol = function _Symbol2(description) {\n if (this && this !== G) {\n throw new TypeError('Symbol is not a constructor');\n }\n return setAndGetSymbol(prefix.concat(description || '', random, ++id));\n },\n source = create(null),\n sourceConstructor = { value: _Symbol },\n sourceMap = function sourceMap(uid) {\n return source[uid];\n },\n $defineProperty = function defineProp(o, key, descriptor) {\n var uid = '' + key;\n if (onlySymbols(uid)) {\n setDescriptor(o, uid, descriptor.enumerable ? copyAsNonEnumerable(descriptor) : descriptor);\n addInternalIfNeeded(o, uid, !!descriptor.enumerable);\n } else {\n defineProperty(o, key, descriptor);\n }\n return o;\n },\n $getOwnPropertySymbols = function getOwnPropertySymbols(o) {\n var cof = toString.call(o);\n o = cof === '[object String]' ? o.split('') : Object(o);\n return gOPN(o).filter(onlySymbols).map(sourceMap);\n };\n\n descriptor.value = $defineProperty;\n defineProperty(Object, DP, descriptor);\n\n descriptor.value = $getOwnPropertySymbols;\n defineProperty(Object, GOPS, descriptor);\n\n var cachedWindowNames = (typeof window === 'undefined' ? 'undefined' : _typeof(window)) === 'object' ? Object.getOwnPropertyNames(window) : [];\n var originalObjectGetOwnPropertyNames = Object.getOwnPropertyNames;\n descriptor.value = function getOwnPropertyNames(o) {\n if (toString.call(o) === '[object Window]') {\n try {\n return originalObjectGetOwnPropertyNames(o);\n } catch (e) {\n return [].concat([], cachedWindowNames);\n }\n }\n return gOPN(o).filter(onlyNonSymbols);\n };\n defineProperty(Object, GOPN, descriptor);\n\n descriptor.value = function defineProperties(o, descriptors) {\n var symbols = $getOwnPropertySymbols(descriptors);\n if (symbols.length) {\n keys(descriptors).concat(symbols).forEach(function (uid) {\n if (propertyIsEnumerable.call(descriptors, uid)) {\n $defineProperty(o, uid, descriptors[uid]);\n }\n });\n } else {\n $defineProperties(o, descriptors);\n }\n return o;\n };\n defineProperty(Object, DPies, descriptor);\n\n descriptor.value = propertyIsEnumerable;\n defineProperty(ObjectProto, PIE, descriptor);\n\n descriptor.value = _Symbol;\n defineProperty(G, 'Symbol', descriptor);\n\n descriptor.value = function (key) {\n var uid = prefix.concat(prefix, key, random);\n return uid in ObjectProto ? source[uid] : setAndGetSymbol(uid);\n };\n defineProperty(_Symbol, 'for', descriptor);\n\n descriptor.value = function (symbol) {\n return hOP.call(source, symbol) ? symbol.slice(prefixLength * 2, -random.length) : void 0;\n };\n defineProperty(_Symbol, 'keyFor', descriptor);\n\n descriptor.value = function getOwnPropertyDescriptor(o, key) {\n var descriptor = gOPD(o, key);\n if (descriptor && onlySymbols(key)) {\n descriptor.enumerable = propertyIsEnumerable.call(o, key);\n }\n return descriptor;\n };\n defineProperty(Object, GOPD, descriptor);\n\n descriptor.value = function (proto, descriptors) {\n return arguments.length === 1 ? create(proto) : createWithSymbols(proto, descriptors);\n };\n defineProperty(Object, 'create', descriptor);\n\n descriptor.value = function () {\n var str = toString.call(this);\n return str === '[object String]' && onlySymbols(this) ? '[object Symbol]' : str;\n };\n defineProperty(ObjectProto, 'toString', descriptor);\n\n try {\n setDescriptor = create(defineProperty({}, prefix, {\n get: function get() {\n return defineProperty(this, prefix, { value: false })[prefix];\n }\n }))[prefix] || defineProperty;\n } catch (o_O) {\n setDescriptor = function setDescriptor(o, key, descriptor) {\n var protoDescriptor = gOPD(ObjectProto, key);\n delete ObjectProto[key];\n defineProperty(o, key, descriptor);\n defineProperty(ObjectProto, key, protoDescriptor);\n };\n }\n })(Object, 'getOwnPropertySymbols');\n\n (function (O, S) {\n var dP = O.defineProperty,\n ObjectProto = O.prototype,\n toString = ObjectProto.toString,\n toStringTag = 'toStringTag',\n descriptor;\n ['iterator', 'match', 'replace', 'search', 'split', 'hasInstance', 'isConcatSpreadable', 'unscopables', 'species', 'toPrimitive', toStringTag].forEach(function (name) {\n if (!(name in Symbol)) {\n dP(Symbol, name, { value: Symbol(name) });\n switch (name) {\n case toStringTag:\n descriptor = O.getOwnPropertyDescriptor(ObjectProto, 'toString');\n descriptor.value = function () {\n var str = toString.call(this),\n tst = typeof this === 'undefined' || this === null ? undefined : this[Symbol.toStringTag];\n return typeof tst === 'undefined' ? str : '[object ' + tst + ']';\n };\n dP(ObjectProto, 'toString', descriptor);\n break;\n }\n }\n });\n })(Object, Symbol);\n\n (function (Si, AP, SP) {\n\n function returnThis() {\n return this;\n }\n\n if (!AP[Si]) AP[Si] = function () {\n var i = 0,\n self = this,\n iterator = {\n next: function next() {\n var done = self.length <= i;\n return done ? { done: done } : { done: done, value: self[i++] };\n }\n };\n iterator[Si] = returnThis;\n return iterator;\n };\n\n if (!SP[Si]) SP[Si] = function () {\n var fromCodePoint = String.fromCodePoint,\n self = this,\n i = 0,\n length = self.length,\n iterator = {\n next: function next() {\n var done = length <= i,\n c = done ? '' : fromCodePoint(self.codePointAt(i));\n i += c.length;\n return done ? { done: done } : { done: done, value: c };\n }\n };\n iterator[Si] = returnThis;\n return iterator;\n };\n })(Symbol.iterator, Array.prototype, String.prototype);\n}\n\nif (typeof FEATURE_NO_ES2015 === 'undefined') {\n\n Number.isNaN = Number.isNaN || function (value) {\n return value !== value;\n };\n\n Number.isFinite = Number.isFinite || function (value) {\n return typeof value === \"number\" && isFinite(value);\n };\n}\n\nif (!String.prototype.endsWith || function () {\n try {\n return !\"ab\".endsWith(\"a\", 1);\n } catch (e) {\n return true;\n }\n}()) {\n String.prototype.endsWith = function (searchString, position) {\n var subjectString = this.toString();\n if (typeof position !== 'number' || !isFinite(position) || Math.floor(position) !== position || position > subjectString.length) {\n position = subjectString.length;\n }\n position -= searchString.length;\n var lastIndex = subjectString.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n };\n}\n\nif (!String.prototype.startsWith || function () {\n try {\n return !\"ab\".startsWith(\"b\", 1);\n } catch (e) {\n return true;\n }\n}()) {\n String.prototype.startsWith = function (searchString, position) {\n position = position || 0;\n return this.substr(position, searchString.length) === searchString;\n };\n}\n\nif (typeof FEATURE_NO_ES2015 === 'undefined') {\n\n if (!Array.from) {\n Array.from = function () {\n var toInteger = function toInteger(it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? Math.floor : Math.ceil)(it);\n };\n var toLength = function toLength(it) {\n return it > 0 ? Math.min(toInteger(it), 0x1fffffffffffff) : 0;\n };\n var iterCall = function iterCall(iter, fn, val, index) {\n try {\n return fn(val, index);\n } catch (E) {\n if (typeof iter.return == 'function') iter.return();\n throw E;\n }\n };\n\n return function from(arrayLike) {\n var O = Object(arrayLike),\n C = typeof this == 'function' ? this : Array,\n aLen = arguments.length,\n mapfn = aLen > 1 ? arguments[1] : undefined,\n mapping = mapfn !== undefined,\n index = 0,\n iterFn = O[Symbol.iterator],\n length,\n result,\n step,\n iterator;\n if (mapping) mapfn = mapfn.bind(aLen > 2 ? arguments[2] : undefined);\n if (iterFn != undefined && !Array.isArray(arrayLike)) {\n for (iterator = iterFn.call(O), result = new C(); !(step = iterator.next()).done; index++) {\n result[index] = mapping ? iterCall(iterator, mapfn, step.value, index) : step.value;\n }\n } else {\n length = toLength(O.length);\n for (result = new C(length); length > index; index++) {\n result[index] = mapping ? mapfn(O[index], index) : O[index];\n }\n }\n result.length = index;\n return result;\n };\n }();\n }\n\n if (!Array.prototype.find) {\n Object.defineProperty(Array.prototype, 'find', {\n configurable: true,\n writable: true,\n enumerable: false,\n value: function value(predicate) {\n if (this === null) {\n throw new TypeError('Array.prototype.find called on null or undefined');\n }\n if (typeof predicate !== 'function') {\n throw new TypeError('predicate must be a function');\n }\n var list = Object(this);\n var length = list.length >>> 0;\n var thisArg = arguments[1];\n var value;\n\n for (var i = 0; i < length; i++) {\n value = list[i];\n if (predicate.call(thisArg, value, i, list)) {\n return value;\n }\n }\n return undefined;\n }\n });\n }\n\n if (!Array.prototype.findIndex) {\n Object.defineProperty(Array.prototype, 'findIndex', {\n configurable: true,\n writable: true,\n enumerable: false,\n value: function value(predicate) {\n if (this === null) {\n throw new TypeError('Array.prototype.findIndex called on null or undefined');\n }\n if (typeof predicate !== 'function') {\n throw new TypeError('predicate must be a function');\n }\n var list = Object(this);\n var length = list.length >>> 0;\n var thisArg = arguments[1];\n var value;\n\n for (var i = 0; i < length; i++) {\n value = list[i];\n if (predicate.call(thisArg, value, i, list)) {\n return i;\n }\n }\n return -1;\n }\n });\n }\n}\n\nif (typeof FEATURE_NO_ES2016 === 'undefined' && !Array.prototype.includes) {\n Object.defineProperty(Array.prototype, 'includes', {\n configurable: true,\n writable: true,\n enumerable: false,\n value: function value(searchElement) {\n var O = Object(this);\n var len = parseInt(O.length) || 0;\n if (len === 0) {\n return false;\n }\n var n = parseInt(arguments[1]) || 0;\n var k;\n if (n >= 0) {\n k = n;\n } else {\n k = len + n;\n if (k < 0) {\n k = 0;\n }\n }\n var currentElement;\n while (k < len) {\n currentElement = O[k];\n if (searchElement === currentElement || searchElement !== searchElement && currentElement !== currentElement) {\n return true;\n }\n k++;\n }\n return false;\n }\n });\n}\n\nif (typeof FEATURE_NO_ES2015 === 'undefined') {\n\n (function () {\n var needsFix = false;\n\n try {\n var s = Object.keys('a');\n needsFix = s.length !== 1 || s[0] !== '0';\n } catch (e) {\n needsFix = true;\n }\n\n if (needsFix) {\n Object.keys = function () {\n var hasOwnProperty = Object.prototype.hasOwnProperty,\n hasDontEnumBug = !{ toString: null }.propertyIsEnumerable('toString'),\n dontEnums = ['toString', 'toLocaleString', 'valueOf', 'hasOwnProperty', 'isPrototypeOf', 'propertyIsEnumerable', 'constructor'],\n dontEnumsLength = dontEnums.length;\n\n return function (obj) {\n if (obj === undefined || obj === null) {\n throw TypeError('Cannot convert undefined or null to object');\n }\n\n obj = Object(obj);\n\n var result = [],\n prop,\n i;\n\n for (prop in obj) {\n if (hasOwnProperty.call(obj, prop)) {\n result.push(prop);\n }\n }\n\n if (hasDontEnumBug) {\n for (i = 0; i < dontEnumsLength; i++) {\n if (hasOwnProperty.call(obj, dontEnums[i])) {\n result.push(dontEnums[i]);\n }\n }\n }\n\n return result;\n };\n }();\n }\n })();\n\n (function (O) {\n if ('assign' in O) {\n return;\n }\n\n O.defineProperty(O, 'assign', {\n configurable: true,\n writable: true,\n value: function () {\n var gOPS = O.getOwnPropertySymbols,\n pIE = O.propertyIsEnumerable,\n filterOS = gOPS ? function (self) {\n return gOPS(self).filter(pIE, self);\n } : function () {\n return Array.prototype;\n };\n\n return function assign(where) {\n if (gOPS && !(where instanceof O)) {\n console.warn('problematic Symbols', where);\n }\n\n function set(keyOrSymbol) {\n where[keyOrSymbol] = arg[keyOrSymbol];\n }\n\n for (var i = 1, ii = arguments.length; i < ii; ++i) {\n var arg = arguments[i];\n\n if (arg === null || arg === undefined) {\n continue;\n }\n\n O.keys(arg).concat(filterOS(arg)).forEach(set);\n }\n\n return where;\n };\n }()\n });\n })(Object);\n\n if (!Object.is) {\n Object.is = function (x, y) {\n if (x === y) {\n return x !== 0 || 1 / x === 1 / y;\n } else {\n return x !== x && y !== y;\n }\n };\n }\n}\n\nif (typeof FEATURE_NO_ES2015 === 'undefined') {\n\n (function (global) {\n var i;\n\n var defineProperty = Object.defineProperty,\n is = function is(a, b) {\n return a === b || a !== a && b !== b;\n };\n\n if (typeof WeakMap == 'undefined') {\n global.WeakMap = createCollection({\n 'delete': sharedDelete,\n\n clear: sharedClear,\n\n get: sharedGet,\n\n has: mapHas,\n\n set: sharedSet\n }, true);\n }\n\n if (typeof Map == 'undefined' || typeof new Map().values !== 'function' || !new Map().values().next) {\n var _createCollection;\n\n global.Map = createCollection((_createCollection = {\n 'delete': sharedDelete,\n\n has: mapHas,\n\n get: sharedGet,\n\n set: sharedSet,\n\n keys: sharedKeys,\n\n values: sharedValues,\n\n entries: mapEntries,\n\n forEach: sharedForEach,\n\n clear: sharedClear\n }, _createCollection[Symbol.iterator] = mapEntries, _createCollection));\n }\n\n if (typeof Set == 'undefined' || typeof new Set().values !== 'function' || !new Set().values().next) {\n var _createCollection2;\n\n global.Set = createCollection((_createCollection2 = {\n has: setHas,\n\n add: sharedAdd,\n\n 'delete': sharedDelete,\n\n clear: sharedClear,\n\n keys: sharedValues,\n values: sharedValues,\n\n entries: setEntries,\n\n forEach: sharedForEach\n }, _createCollection2[Symbol.iterator] = sharedValues, _createCollection2));\n }\n\n if (typeof WeakSet == 'undefined') {\n global.WeakSet = createCollection({\n 'delete': sharedDelete,\n\n add: sharedAdd,\n\n clear: sharedClear,\n\n has: setHas\n }, true);\n }\n\n function createCollection(proto, objectOnly) {\n function Collection(a) {\n if (!this || this.constructor !== Collection) return new Collection(a);\n this._keys = [];\n this._values = [];\n this._itp = [];\n this.objectOnly = objectOnly;\n\n if (a) init.call(this, a);\n }\n\n if (!objectOnly) {\n defineProperty(proto, 'size', {\n get: sharedSize\n });\n }\n\n proto.constructor = Collection;\n Collection.prototype = proto;\n\n return Collection;\n }\n\n function init(a) {\n var i;\n\n if (this.add) a.forEach(this.add, this);else a.forEach(function (a) {\n this.set(a[0], a[1]);\n }, this);\n }\n\n function sharedDelete(key) {\n if (this.has(key)) {\n this._keys.splice(i, 1);\n this._values.splice(i, 1);\n\n this._itp.forEach(function (p) {\n if (i < p[0]) p[0]--;\n });\n }\n\n return -1 < i;\n };\n\n function sharedGet(key) {\n return this.has(key) ? this._values[i] : undefined;\n }\n\n function has(list, key) {\n if (this.objectOnly && key !== Object(key)) throw new TypeError(\"Invalid value used as weak collection key\");\n\n if (key != key || key === 0) for (i = list.length; i-- && !is(list[i], key);) {} else i = list.indexOf(key);\n return -1 < i;\n }\n\n function setHas(value) {\n return has.call(this, this._values, value);\n }\n\n function mapHas(value) {\n return has.call(this, this._keys, value);\n }\n\n function sharedSet(key, value) {\n this.has(key) ? this._values[i] = value : this._values[this._keys.push(key) - 1] = value;\n return this;\n }\n\n function sharedAdd(value) {\n if (!this.has(value)) this._values.push(value);\n return this;\n }\n\n function sharedClear() {\n (this._keys || 0).length = this._values.length = 0;\n }\n\n function sharedKeys() {\n return sharedIterator(this._itp, this._keys);\n }\n\n function sharedValues() {\n return sharedIterator(this._itp, this._values);\n }\n\n function mapEntries() {\n return sharedIterator(this._itp, this._keys, this._values);\n }\n\n function setEntries() {\n return sharedIterator(this._itp, this._values, this._values);\n }\n\n function sharedIterator(itp, array, array2) {\n var _ref;\n\n var p = [0],\n done = false;\n itp.push(p);\n return _ref = {}, _ref[Symbol.iterator] = function () {\n return this;\n }, _ref.next = function next() {\n var v,\n k = p[0];\n if (!done && k < array.length) {\n v = array2 ? [array[k], array2[k]] : array[k];\n p[0]++;\n } else {\n done = true;\n itp.splice(itp.indexOf(p), 1);\n }\n return { done: done, value: v };\n }, _ref;\n }\n\n function sharedSize() {\n return this._values.length;\n }\n\n function sharedForEach(callback, context) {\n var it = this.entries();\n for (;;) {\n var r = it.next();\n if (r.done) break;\n callback.call(context, r.value[1], r.value[0], this);\n }\n }\n })(PLATFORM.global);\n}\n\nif (typeof FEATURE_NO_ES2015 === 'undefined') {\n\n var bind = Function.prototype.bind;\n\n if (typeof PLATFORM.global.Reflect === 'undefined') {\n PLATFORM.global.Reflect = {};\n }\n\n if (typeof Reflect.defineProperty !== 'function') {\n Reflect.defineProperty = function (target, propertyKey, descriptor) {\n if ((typeof target === 'undefined' ? 'undefined' : _typeof(target)) === 'object' ? target === null : typeof target !== 'function') {\n throw new TypeError('Reflect.defineProperty called on non-object');\n }\n try {\n Object.defineProperty(target, propertyKey, descriptor);\n return true;\n } catch (e) {\n return false;\n }\n };\n }\n\n if (typeof Reflect.construct !== 'function') {\n Reflect.construct = function (Target, args) {\n if (args) {\n switch (args.length) {\n case 0:\n return new Target();\n case 1:\n return new Target(args[0]);\n case 2:\n return new Target(args[0], args[1]);\n case 3:\n return new Target(args[0], args[1], args[2]);\n case 4:\n return new Target(args[0], args[1], args[2], args[3]);\n }\n }\n\n var a = [null];\n a.push.apply(a, args);\n return new (bind.apply(Target, a))();\n };\n }\n\n if (typeof Reflect.ownKeys !== 'function') {\n Reflect.ownKeys = function (o) {\n return Object.getOwnPropertyNames(o).concat(Object.getOwnPropertySymbols(o));\n };\n }\n}\n\nif (typeof FEATURE_NO_ESNEXT === 'undefined') {\n\n var emptyMetadata = Object.freeze({});\n var metadataContainerKey = '__metadata__';\n\n if (typeof Reflect.getOwnMetadata !== 'function') {\n Reflect.getOwnMetadata = function (metadataKey, target, targetKey) {\n if (target.hasOwnProperty(metadataContainerKey)) {\n return (target[metadataContainerKey][targetKey] || emptyMetadata)[metadataKey];\n }\n };\n }\n\n if (typeof Reflect.defineMetadata !== 'function') {\n Reflect.defineMetadata = function (metadataKey, metadataValue, target, targetKey) {\n var metadataContainer = target.hasOwnProperty(metadataContainerKey) ? target[metadataContainerKey] : target[metadataContainerKey] = {};\n var targetContainer = metadataContainer[targetKey] || (metadataContainer[targetKey] = {});\n targetContainer[metadataKey] = metadataValue;\n };\n }\n\n if (typeof Reflect.metadata !== 'function') {\n Reflect.metadata = function (metadataKey, metadataValue) {\n return function (target, targetKey) {\n Reflect.defineMetadata(metadataKey, metadataValue, target, targetKey);\n };\n };\n }\n}","import { BoundViewFactory, ViewSlot, bindable, templateController, customAttribute } from 'aurelia-templating';\nimport { PLATFORM } from 'aurelia-pal';\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n\r\nfunction __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\n\nvar document = PLATFORM.global.document;\r\nvar validPositions = {\r\n beforebegin: 1,\r\n afterbegin: 1,\r\n beforeend: 1,\r\n afterend: 1\r\n};\r\nvar Portal = /** @class */ (function () {\r\n function Portal(\r\n /**@internal */\r\n viewFactory, \r\n /**@internal */\r\n originalViewslot) {\r\n this.viewFactory = viewFactory;\r\n this.originalViewslot = originalViewslot;\r\n /**\r\n * Insertion position. See https://developer.mozilla.org/en-US/docs/Web/API/Element/insertAdjacentHTML\r\n * for explanation of what the possible values mean.\r\n *\r\n * Possible values are (case insensitive): `beforeBegin` | `afterBegin` | `beforeEnd` | `afterEnd`\r\n *\r\n * Default value is `beforeEnd`\r\n */\r\n this.position = 'beforeend';\r\n this.strict = false;\r\n this.initialRender = false;\r\n /**@internal */\r\n this.currentTarget = unset;\r\n }\r\n Portal_1 = Portal;\r\n /**@internal */\r\n Portal.getTarget = function (target, context) {\r\n if (target) {\r\n if (typeof target === 'string') {\r\n var queryContext = document;\r\n if (context) {\r\n if (typeof context === 'string') {\r\n context = document.querySelector(context);\r\n }\r\n if (context instanceof Element) {\r\n queryContext = context;\r\n }\r\n }\r\n target = queryContext.querySelector(target);\r\n }\r\n if (target instanceof Element) {\r\n return target;\r\n }\r\n }\r\n return null;\r\n };\r\n /**@internal */\r\n Portal.createViewSlot = function (position, target) {\r\n if (typeof position !== 'string' || validPositions[position.toLowerCase()] !== 1) {\r\n throw new Error('Invalid position for portalling. Expected one of \"beforebegin\", \"afterbegin\", \"beforeend\" or \"afterend\".');\r\n }\r\n var anchorCommentHolder = document.createElement('portal-placeholder');\r\n var normalizedPosition = position.toLowerCase();\r\n target.insertAdjacentElement(normalizedPosition, anchorCommentHolder);\r\n var anchorComment = document.createComment('portal');\r\n // If the position is beforeBegin or aftrEnd,\r\n // then anchorCommentHolder wont be a child of target\r\n // In all situations, it's always correct to use anchorCommentHolder rather than target\r\n anchorCommentHolder.parentNode.replaceChild(anchorComment, anchorCommentHolder);\r\n return new ViewSlot(anchorComment, false);\r\n };\r\n /**@internal */\r\n Portal.prototype.bind = function (bindingContext, overrideContext) {\r\n if (!this.callbackContext) {\r\n this.callbackContext = bindingContext;\r\n }\r\n var view = this.view;\r\n if (!view) {\r\n view = this.view = this.viewFactory.create();\r\n }\r\n var shouldInitRender = this.initialRender;\r\n if (shouldInitRender) {\r\n this.originalViewslot.add(view);\r\n }\r\n view.bind(bindingContext, overrideContext);\r\n if (shouldInitRender) {\r\n this.originalViewslot.remove(view);\r\n }\r\n };\r\n /**@internal*/\r\n Portal.prototype.attached = function () {\r\n this.isAttached = true;\r\n return this.render();\r\n };\r\n /**@internal */\r\n Portal.prototype.detached = function () {\r\n this.isAttached = false;\r\n if (this.viewSlot) {\r\n this.viewSlot.detached();\r\n }\r\n };\r\n /**@internal */\r\n Portal.prototype.unbind = function () {\r\n if (this.viewSlot) {\r\n this.viewSlot.remove(this.view);\r\n this.viewSlot = null;\r\n }\r\n this.view.unbind();\r\n this.callbackContext = null;\r\n };\r\n /**@internal */\r\n Portal.prototype.getTarget = function () {\r\n var target = Portal_1.getTarget(this.target, this.renderContext);\r\n if (target === null) {\r\n if (this.strict) {\r\n throw new Error('Render target not found.');\r\n }\r\n else {\r\n target = document.body;\r\n }\r\n }\r\n return target;\r\n };\r\n /**@internal */\r\n Portal.prototype.render = function () {\r\n var _this = this;\r\n var oldTarget = this.currentTarget;\r\n var view = this.view;\r\n var target = this.currentTarget = this.getTarget();\r\n var oldViewSlot = this.viewSlot;\r\n if (oldTarget === target && oldViewSlot) {\r\n return;\r\n }\r\n var addAction = function () {\r\n if (_this.isAttached) {\r\n return Promise.resolve(typeof _this.activating === 'function'\r\n ? _this.activating.call(_this.callbackContext, target, view)\r\n : null).then(function () {\r\n if (target === _this.currentTarget || oldTarget === unset) {\r\n var viewSlot = _this.viewSlot = Portal_1.createViewSlot(_this.position, target); // new ViewSlot(target!, true);\r\n viewSlot.attached();\r\n viewSlot.add(view);\r\n _this.removed = false;\r\n }\r\n return Promise.resolve().then(function () {\r\n typeof _this.activated === 'function'\r\n ? _this.activated.call(_this.callbackContext, target, view)\r\n : null;\r\n });\r\n });\r\n }\r\n return Promise.resolve(null);\r\n };\r\n if (oldViewSlot) {\r\n return Promise.resolve(typeof this.deactivating === 'function'\r\n ? this.deactivating.call(this.callbackContext, oldTarget, view)\r\n : null).then(function () {\r\n if (typeof _this.deactivated === 'function') {\r\n _this.deactivated.call(_this.callbackContext, oldTarget, view);\r\n }\r\n _this.viewSlot = null;\r\n if (!_this.removed) {\r\n oldViewSlot.remove(view);\r\n _this.removed = true;\r\n }\r\n return addAction();\r\n });\r\n }\r\n return Promise.resolve(addAction());\r\n };\r\n /**@internal */\r\n Portal.prototype.targetChanged = function () {\r\n return this.render();\r\n };\r\n var Portal_1;\r\n /**\r\n * Only needs the BoundViewFactory as a custom viewslot will be used\r\n * @internal\r\n */\r\n Portal.inject = [BoundViewFactory, ViewSlot];\r\n __decorate([\r\n bindable({\r\n primaryProperty: true,\r\n defaultValue: null\r\n })\r\n ], Portal.prototype, \"target\", void 0);\r\n __decorate([\r\n bindable({ changeHandler: 'targetChanged' })\r\n ], Portal.prototype, \"position\", void 0);\r\n __decorate([\r\n bindable({ changeHandler: 'targetChanged' })\r\n ], Portal.prototype, \"renderContext\", void 0);\r\n __decorate([\r\n bindable()\r\n ], Portal.prototype, \"strict\", void 0);\r\n __decorate([\r\n bindable()\r\n ], Portal.prototype, \"initialRender\", void 0);\r\n __decorate([\r\n bindable()\r\n ], Portal.prototype, \"deactivating\", void 0);\r\n __decorate([\r\n bindable()\r\n ], Portal.prototype, \"activating\", void 0);\r\n __decorate([\r\n bindable()\r\n ], Portal.prototype, \"activated\", void 0);\r\n __decorate([\r\n bindable()\r\n ], Portal.prototype, \"deactivated\", void 0);\r\n __decorate([\r\n bindable()\r\n ], Portal.prototype, \"callbackContext\", void 0);\r\n Portal = Portal_1 = __decorate([\r\n templateController(),\r\n customAttribute('portal')\r\n ], Portal);\r\n return Portal;\r\n}());\r\nvar unset = {};\n\nfunction configure(frameworkConfig) {\r\n frameworkConfig.globalResources(Portal);\r\n}\n\nexport { Portal, configure };\n","\n\nimport { buildQueryString, parseQueryString } from 'aurelia-path';\n\nexport var State = function () {\n function State(charSpec) {\n \n\n this.charSpec = charSpec;\n this.nextStates = [];\n }\n\n State.prototype.get = function get(charSpec) {\n for (var _iterator = this.nextStates, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n var child = _ref;\n\n var isEqual = child.charSpec.validChars === charSpec.validChars && child.charSpec.invalidChars === charSpec.invalidChars;\n\n if (isEqual) {\n return child;\n }\n }\n\n return undefined;\n };\n\n State.prototype.put = function put(charSpec) {\n var state = this.get(charSpec);\n\n if (state) {\n return state;\n }\n\n state = new State(charSpec);\n\n this.nextStates.push(state);\n\n if (charSpec.repeat) {\n state.nextStates.push(state);\n }\n\n return state;\n };\n\n State.prototype.match = function match(ch) {\n var nextStates = this.nextStates;\n var results = [];\n\n for (var i = 0, l = nextStates.length; i < l; i++) {\n var child = nextStates[i];\n var charSpec = child.charSpec;\n\n if (charSpec.validChars !== undefined) {\n if (charSpec.validChars.indexOf(ch) !== -1) {\n results.push(child);\n }\n } else if (charSpec.invalidChars !== undefined) {\n if (charSpec.invalidChars.indexOf(ch) === -1) {\n results.push(child);\n }\n }\n }\n\n return results;\n };\n\n return State;\n}();\n\nvar specials = ['/', '.', '*', '+', '?', '|', '(', ')', '[', ']', '{', '}', '\\\\'];\n\nvar escapeRegex = new RegExp('(\\\\' + specials.join('|\\\\') + ')', 'g');\n\nexport var StaticSegment = function () {\n function StaticSegment(string, caseSensitive) {\n \n\n this.string = string;\n this.caseSensitive = caseSensitive;\n }\n\n StaticSegment.prototype.eachChar = function eachChar(callback) {\n var s = this.string;\n for (var i = 0, ii = s.length; i < ii; ++i) {\n var ch = s[i];\n callback({ validChars: this.caseSensitive ? ch : ch.toUpperCase() + ch.toLowerCase() });\n }\n };\n\n StaticSegment.prototype.regex = function regex() {\n return this.string.replace(escapeRegex, '\\\\$1');\n };\n\n StaticSegment.prototype.generate = function generate() {\n return this.string;\n };\n\n return StaticSegment;\n}();\n\nexport var DynamicSegment = function () {\n function DynamicSegment(name, optional) {\n \n\n this.name = name;\n this.optional = optional;\n }\n\n DynamicSegment.prototype.eachChar = function eachChar(callback) {\n callback({ invalidChars: '/', repeat: true });\n };\n\n DynamicSegment.prototype.regex = function regex() {\n return '([^/]+)';\n };\n\n DynamicSegment.prototype.generate = function generate(params, consumed) {\n consumed[this.name] = true;\n return params[this.name];\n };\n\n return DynamicSegment;\n}();\n\nexport var StarSegment = function () {\n function StarSegment(name) {\n \n\n this.name = name;\n }\n\n StarSegment.prototype.eachChar = function eachChar(callback) {\n callback({ invalidChars: '', repeat: true });\n };\n\n StarSegment.prototype.regex = function regex() {\n return '(.+)';\n };\n\n StarSegment.prototype.generate = function generate(params, consumed) {\n consumed[this.name] = true;\n return params[this.name];\n };\n\n return StarSegment;\n}();\n\nexport var EpsilonSegment = function () {\n function EpsilonSegment() {\n \n }\n\n EpsilonSegment.prototype.eachChar = function eachChar() {};\n\n EpsilonSegment.prototype.regex = function regex() {\n return '';\n };\n\n EpsilonSegment.prototype.generate = function generate() {\n return '';\n };\n\n return EpsilonSegment;\n}();\n\nexport var RouteRecognizer = function () {\n function RouteRecognizer() {\n \n\n this.rootState = new State();\n this.names = {};\n this.routes = new Map();\n }\n\n RouteRecognizer.prototype.add = function add(route) {\n var _this = this;\n\n if (Array.isArray(route)) {\n route.forEach(function (r) {\n return _this.add(r);\n });\n return undefined;\n }\n\n var currentState = this.rootState;\n var skippableStates = [];\n var regex = '^';\n var types = { statics: 0, dynamics: 0, stars: 0 };\n var names = [];\n var routeName = route.handler.name;\n var isEmpty = true;\n var segments = parse(route.path, names, types, route.caseSensitive);\n\n for (var i = 0, ii = segments.length; i < ii; i++) {\n var segment = segments[i];\n if (segment instanceof EpsilonSegment) {\n continue;\n }\n\n var _addSegment = addSegment(currentState, segment),\n firstState = _addSegment[0],\n nextState = _addSegment[1];\n\n for (var j = 0, jj = skippableStates.length; j < jj; j++) {\n skippableStates[j].nextStates.push(firstState);\n }\n\n if (segment.optional) {\n skippableStates.push(nextState);\n regex += '(?:/' + segment.regex() + ')?';\n } else {\n currentState = nextState;\n regex += '/' + segment.regex();\n skippableStates.length = 0;\n isEmpty = false;\n }\n }\n\n if (isEmpty) {\n currentState = currentState.put({ validChars: '/' });\n regex += '/?';\n }\n\n var handlers = [{ handler: route.handler, names: names }];\n\n this.routes.set(route.handler, { segments: segments, handlers: handlers });\n if (routeName) {\n var routeNames = Array.isArray(routeName) ? routeName : [routeName];\n for (var _i2 = 0; _i2 < routeNames.length; _i2++) {\n if (!(routeNames[_i2] in this.names)) {\n this.names[routeNames[_i2]] = { segments: segments, handlers: handlers };\n }\n }\n }\n\n for (var _i3 = 0; _i3 < skippableStates.length; _i3++) {\n var state = skippableStates[_i3];\n state.handlers = handlers;\n state.regex = new RegExp(regex + '$', route.caseSensitive ? '' : 'i');\n state.types = types;\n }\n\n currentState.handlers = handlers;\n currentState.regex = new RegExp(regex + '$', route.caseSensitive ? '' : 'i');\n currentState.types = types;\n\n return currentState;\n };\n\n RouteRecognizer.prototype.getRoute = function getRoute(nameOrRoute) {\n return typeof nameOrRoute === 'string' ? this.names[nameOrRoute] : this.routes.get(nameOrRoute);\n };\n\n RouteRecognizer.prototype.handlersFor = function handlersFor(nameOrRoute) {\n var route = this.getRoute(nameOrRoute);\n if (!route) {\n throw new Error('There is no route named ' + nameOrRoute);\n }\n\n return [].concat(route.handlers);\n };\n\n RouteRecognizer.prototype.hasRoute = function hasRoute(nameOrRoute) {\n return !!this.getRoute(nameOrRoute);\n };\n\n RouteRecognizer.prototype.generate = function generate(nameOrRoute, params) {\n var route = this.getRoute(nameOrRoute);\n if (!route) {\n throw new Error('There is no route named ' + nameOrRoute);\n }\n\n var handler = route.handlers[0].handler;\n if (handler.generationUsesHref) {\n return handler.href;\n }\n\n var routeParams = Object.assign({}, params);\n var segments = route.segments;\n var consumed = {};\n var output = '';\n\n for (var i = 0, l = segments.length; i < l; i++) {\n var segment = segments[i];\n\n if (segment instanceof EpsilonSegment) {\n continue;\n }\n\n var segmentValue = segment.generate(routeParams, consumed);\n if (segmentValue === null || segmentValue === undefined) {\n if (!segment.optional) {\n throw new Error('A value is required for route parameter \\'' + segment.name + '\\' in route \\'' + nameOrRoute + '\\'.');\n }\n } else {\n output += '/';\n output += segmentValue;\n }\n }\n\n if (output.charAt(0) !== '/') {\n output = '/' + output;\n }\n\n for (var param in consumed) {\n delete routeParams[param];\n }\n\n var queryString = buildQueryString(routeParams);\n output += queryString ? '?' + queryString : '';\n\n return output;\n };\n\n RouteRecognizer.prototype.recognize = function recognize(path) {\n var states = [this.rootState];\n var queryParams = {};\n var isSlashDropped = false;\n var normalizedPath = path;\n\n var queryStart = normalizedPath.indexOf('?');\n if (queryStart !== -1) {\n var queryString = normalizedPath.substr(queryStart + 1, normalizedPath.length);\n normalizedPath = normalizedPath.substr(0, queryStart);\n queryParams = parseQueryString(queryString);\n }\n\n normalizedPath = decodeURI(normalizedPath);\n\n if (normalizedPath.charAt(0) !== '/') {\n normalizedPath = '/' + normalizedPath;\n }\n\n var pathLen = normalizedPath.length;\n if (pathLen > 1 && normalizedPath.charAt(pathLen - 1) === '/') {\n normalizedPath = normalizedPath.substr(0, pathLen - 1);\n isSlashDropped = true;\n }\n\n for (var i = 0, l = normalizedPath.length; i < l; i++) {\n states = recognizeChar(states, normalizedPath.charAt(i));\n if (!states.length) {\n break;\n }\n }\n\n var solutions = [];\n for (var _i4 = 0, _l = states.length; _i4 < _l; _i4++) {\n if (states[_i4].handlers) {\n solutions.push(states[_i4]);\n }\n }\n\n states = sortSolutions(solutions);\n\n var state = solutions[0];\n if (state && state.handlers) {\n if (isSlashDropped && state.regex.source.slice(-5) === '(.+)$') {\n normalizedPath = normalizedPath + '/';\n }\n\n return findHandler(state, normalizedPath, queryParams);\n }\n };\n\n return RouteRecognizer;\n}();\n\nvar RecognizeResults = function RecognizeResults(queryParams) {\n \n\n this.splice = Array.prototype.splice;\n this.slice = Array.prototype.slice;\n this.push = Array.prototype.push;\n this.length = 0;\n this.queryParams = queryParams || {};\n};\n\nfunction parse(route, names, types, caseSensitive) {\n var normalizedRoute = route;\n if (route.charAt(0) === '/') {\n normalizedRoute = route.substr(1);\n }\n\n var results = [];\n\n var splitRoute = normalizedRoute.split('/');\n for (var i = 0, ii = splitRoute.length; i < ii; ++i) {\n var segment = splitRoute[i];\n\n var match = segment.match(/^:([^?]+)(\\?)?$/);\n if (match) {\n var _match = match,\n _name = _match[1],\n optional = _match[2];\n\n if (_name.indexOf('=') !== -1) {\n throw new Error('Parameter ' + _name + ' in route ' + route + ' has a default value, which is not supported.');\n }\n results.push(new DynamicSegment(_name, !!optional));\n names.push(_name);\n types.dynamics++;\n continue;\n }\n\n match = segment.match(/^\\*(.+)$/);\n if (match) {\n results.push(new StarSegment(match[1]));\n names.push(match[1]);\n types.stars++;\n } else if (segment === '') {\n results.push(new EpsilonSegment());\n } else {\n results.push(new StaticSegment(segment, caseSensitive));\n types.statics++;\n }\n }\n\n return results;\n}\n\nfunction sortSolutions(states) {\n return states.sort(function (a, b) {\n if (a.types.stars !== b.types.stars) {\n return a.types.stars - b.types.stars;\n }\n\n if (a.types.stars) {\n if (a.types.statics !== b.types.statics) {\n return b.types.statics - a.types.statics;\n }\n if (a.types.dynamics !== b.types.dynamics) {\n return b.types.dynamics - a.types.dynamics;\n }\n }\n\n if (a.types.dynamics !== b.types.dynamics) {\n return a.types.dynamics - b.types.dynamics;\n }\n\n if (a.types.statics !== b.types.statics) {\n return b.types.statics - a.types.statics;\n }\n\n return 0;\n });\n}\n\nfunction recognizeChar(states, ch) {\n var nextStates = [];\n\n for (var i = 0, l = states.length; i < l; i++) {\n var state = states[i];\n nextStates.push.apply(nextStates, state.match(ch));\n }\n\n return nextStates;\n}\n\nfunction findHandler(state, path, queryParams) {\n var handlers = state.handlers;\n var regex = state.regex;\n var captures = path.match(regex);\n var currentCapture = 1;\n var result = new RecognizeResults(queryParams);\n\n for (var i = 0, l = handlers.length; i < l; i++) {\n var _handler = handlers[i];\n var _names = _handler.names;\n var _params = {};\n\n for (var j = 0, m = _names.length; j < m; j++) {\n _params[_names[j]] = captures[currentCapture++];\n }\n\n result.push({ handler: _handler.handler, params: _params, isDynamic: !!_names.length });\n }\n\n return result;\n}\n\nfunction addSegment(currentState, segment) {\n var firstState = currentState.put({ validChars: '/' });\n var nextState = firstState;\n segment.eachChar(function (ch) {\n nextState = nextState.put(ch);\n });\n\n return [firstState, nextState];\n}","import { getLogger } from 'aurelia-logging';\nimport { Container } from 'aurelia-dependency-injection';\nimport { History } from 'aurelia-history';\nimport { RouteRecognizer } from 'aurelia-route-recognizer';\nimport { EventAggregator } from 'aurelia-event-aggregator';\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nfunction __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\n\n/**\r\n * Class used to represent an instruction during a navigation.\r\n */\r\nvar NavigationInstruction = /** @class */ (function () {\r\n function NavigationInstruction(init) {\r\n /**\r\n * Current built viewport plan of this nav instruction\r\n */\r\n this.plan = null;\r\n this.options = {};\r\n Object.assign(this, init);\r\n this.params = this.params || {};\r\n this.viewPortInstructions = {};\r\n var ancestorParams = [];\r\n var current = this;\r\n do {\r\n var currentParams = Object.assign({}, current.params);\r\n if (current.config && current.config.hasChildRouter) {\r\n // remove the param for the injected child route segment\r\n delete currentParams[current.getWildCardName()];\r\n }\r\n ancestorParams.unshift(currentParams);\r\n current = current.parentInstruction;\r\n } while (current);\r\n var allParams = Object.assign.apply(Object, [{}, this.queryParams].concat(ancestorParams));\r\n this.lifecycleArgs = [allParams, this.config, this];\r\n }\r\n /**\r\n * Gets an array containing this instruction and all child instructions for the current navigation.\r\n */\r\n NavigationInstruction.prototype.getAllInstructions = function () {\r\n var instructions = [this];\r\n var viewPortInstructions = this.viewPortInstructions;\r\n for (var key in viewPortInstructions) {\r\n var childInstruction = viewPortInstructions[key].childNavigationInstruction;\r\n if (childInstruction) {\r\n instructions.push.apply(instructions, childInstruction.getAllInstructions());\r\n }\r\n }\r\n return instructions;\r\n };\r\n /**\r\n * Gets an array containing the instruction and all child instructions for the previous navigation.\r\n * Previous instructions are no longer available after navigation completes.\r\n */\r\n NavigationInstruction.prototype.getAllPreviousInstructions = function () {\r\n return this.getAllInstructions().map(function (c) { return c.previousInstruction; }).filter(function (c) { return c; });\r\n };\r\n NavigationInstruction.prototype.addViewPortInstruction = function (nameOrInitOptions, strategy, moduleId, component) {\r\n var viewPortInstruction;\r\n var viewPortName = typeof nameOrInitOptions === 'string' ? nameOrInitOptions : nameOrInitOptions.name;\r\n var lifecycleArgs = this.lifecycleArgs;\r\n var config = Object.assign({}, lifecycleArgs[1], { currentViewPort: viewPortName });\r\n if (typeof nameOrInitOptions === 'string') {\r\n viewPortInstruction = {\r\n name: nameOrInitOptions,\r\n strategy: strategy,\r\n moduleId: moduleId,\r\n component: component,\r\n childRouter: component.childRouter,\r\n lifecycleArgs: [lifecycleArgs[0], config, lifecycleArgs[2]]\r\n };\r\n }\r\n else {\r\n viewPortInstruction = {\r\n name: viewPortName,\r\n strategy: nameOrInitOptions.strategy,\r\n component: nameOrInitOptions.component,\r\n moduleId: nameOrInitOptions.moduleId,\r\n childRouter: nameOrInitOptions.component.childRouter,\r\n lifecycleArgs: [lifecycleArgs[0], config, lifecycleArgs[2]]\r\n };\r\n }\r\n return this.viewPortInstructions[viewPortName] = viewPortInstruction;\r\n };\r\n /**\r\n * Gets the name of the route pattern's wildcard parameter, if applicable.\r\n */\r\n NavigationInstruction.prototype.getWildCardName = function () {\r\n // todo: potential issue, or at least unsafe typings\r\n var configRoute = this.config.route;\r\n var wildcardIndex = configRoute.lastIndexOf('*');\r\n return configRoute.substr(wildcardIndex + 1);\r\n };\r\n /**\r\n * Gets the path and query string created by filling the route\r\n * pattern's wildcard parameter with the matching param.\r\n */\r\n NavigationInstruction.prototype.getWildcardPath = function () {\r\n var wildcardName = this.getWildCardName();\r\n var path = this.params[wildcardName] || '';\r\n var queryString = this.queryString;\r\n if (queryString) {\r\n path += '?' + queryString;\r\n }\r\n return path;\r\n };\r\n /**\r\n * Gets the instruction's base URL, accounting for wildcard route parameters.\r\n */\r\n NavigationInstruction.prototype.getBaseUrl = function () {\r\n var _this = this;\r\n var $encodeURI = encodeURI;\r\n var fragment = decodeURI(this.fragment);\r\n if (fragment === '') {\r\n var nonEmptyRoute = this.router.routes.find(function (route) {\r\n return route.name === _this.config.name &&\r\n route.route !== '';\r\n });\r\n if (nonEmptyRoute) {\r\n fragment = nonEmptyRoute.route;\r\n }\r\n }\r\n if (!this.params) {\r\n return $encodeURI(fragment);\r\n }\r\n var wildcardName = this.getWildCardName();\r\n var path = this.params[wildcardName] || '';\r\n if (!path) {\r\n return $encodeURI(fragment);\r\n }\r\n return $encodeURI(fragment.substr(0, fragment.lastIndexOf(path)));\r\n };\r\n /**\r\n * Finalize a viewport instruction\r\n * @internal\r\n */\r\n NavigationInstruction.prototype._commitChanges = function (waitToSwap) {\r\n var _this = this;\r\n var router = this.router;\r\n router.currentInstruction = this;\r\n var previousInstruction = this.previousInstruction;\r\n if (previousInstruction) {\r\n previousInstruction.config.navModel.isActive = false;\r\n }\r\n this.config.navModel.isActive = true;\r\n router.refreshNavigation();\r\n var loads = [];\r\n var delaySwaps = [];\r\n var viewPortInstructions = this.viewPortInstructions;\r\n var _loop_1 = function (viewPortName) {\r\n var viewPortInstruction = viewPortInstructions[viewPortName];\r\n var viewPort = router.viewPorts[viewPortName];\r\n if (!viewPort) {\r\n throw new Error(\"There was no router-view found in the view for \" + viewPortInstruction.moduleId + \".\");\r\n }\r\n var childNavInstruction = viewPortInstruction.childNavigationInstruction;\r\n if (viewPortInstruction.strategy === \"replace\" /* Replace */) {\r\n if (childNavInstruction && childNavInstruction.parentCatchHandler) {\r\n loads.push(childNavInstruction._commitChanges(waitToSwap));\r\n }\r\n else {\r\n if (waitToSwap) {\r\n delaySwaps.push({ viewPort: viewPort, viewPortInstruction: viewPortInstruction });\r\n }\r\n loads.push(viewPort\r\n .process(viewPortInstruction, waitToSwap)\r\n .then(function () { return childNavInstruction\r\n ? childNavInstruction._commitChanges(waitToSwap)\r\n : Promise.resolve(); }));\r\n }\r\n }\r\n else {\r\n if (childNavInstruction) {\r\n loads.push(childNavInstruction._commitChanges(waitToSwap));\r\n }\r\n }\r\n };\r\n for (var viewPortName in viewPortInstructions) {\r\n _loop_1(viewPortName);\r\n }\r\n return Promise\r\n .all(loads)\r\n .then(function () {\r\n delaySwaps.forEach(function (x) { return x.viewPort.swap(x.viewPortInstruction); });\r\n return null;\r\n })\r\n .then(function () { return prune(_this); });\r\n };\r\n /**@internal */\r\n NavigationInstruction.prototype._updateTitle = function () {\r\n var router = this.router;\r\n var title = this._buildTitle(router.titleSeparator);\r\n if (title) {\r\n router.history.setTitle(title);\r\n }\r\n };\r\n /**@internal */\r\n NavigationInstruction.prototype._buildTitle = function (separator) {\r\n if (separator === void 0) { separator = ' | '; }\r\n var title = '';\r\n var childTitles = [];\r\n var navModelTitle = this.config.navModel.title;\r\n var instructionRouter = this.router;\r\n var viewPortInstructions = this.viewPortInstructions;\r\n if (navModelTitle) {\r\n title = instructionRouter.transformTitle(navModelTitle);\r\n }\r\n for (var viewPortName in viewPortInstructions) {\r\n var viewPortInstruction = viewPortInstructions[viewPortName];\r\n var child_nav_instruction = viewPortInstruction.childNavigationInstruction;\r\n if (child_nav_instruction) {\r\n var childTitle = child_nav_instruction._buildTitle(separator);\r\n if (childTitle) {\r\n childTitles.push(childTitle);\r\n }\r\n }\r\n }\r\n if (childTitles.length) {\r\n title = childTitles.join(separator) + (title ? separator : '') + title;\r\n }\r\n if (instructionRouter.title) {\r\n title += (title ? separator : '') + instructionRouter.transformTitle(instructionRouter.title);\r\n }\r\n return title;\r\n };\r\n return NavigationInstruction;\r\n}());\r\nvar prune = function (instruction) {\r\n instruction.previousInstruction = null;\r\n instruction.plan = null;\r\n};\n\n/**\r\n* Class for storing and interacting with a route's navigation settings.\r\n*/\r\nvar NavModel = /** @class */ (function () {\r\n function NavModel(router, relativeHref) {\r\n /**\r\n * True if this nav item is currently active.\r\n */\r\n this.isActive = false;\r\n /**\r\n * The title.\r\n */\r\n this.title = null;\r\n /**\r\n * This nav item's absolute href.\r\n */\r\n this.href = null;\r\n /**\r\n * This nav item's relative href.\r\n */\r\n this.relativeHref = null;\r\n /**\r\n * Data attached to the route at configuration time.\r\n */\r\n this.settings = {};\r\n /**\r\n * The route config.\r\n */\r\n this.config = null;\r\n this.router = router;\r\n this.relativeHref = relativeHref;\r\n }\r\n /**\r\n * Sets the route's title and updates document.title.\r\n * If the a navigation is in progress, the change will be applied\r\n * to document.title when the navigation completes.\r\n *\r\n * @param title The new title.\r\n */\r\n NavModel.prototype.setTitle = function (title) {\r\n this.title = title;\r\n if (this.isActive) {\r\n this.router.updateTitle();\r\n }\r\n };\r\n return NavModel;\r\n}());\n\nfunction _normalizeAbsolutePath(path, hasPushState, absolute) {\r\n if (absolute === void 0) { absolute = false; }\r\n if (!hasPushState && path[0] !== '#') {\r\n path = '#' + path;\r\n }\r\n if (hasPushState && absolute) {\r\n path = path.substring(1, path.length);\r\n }\r\n return path;\r\n}\r\nfunction _createRootedPath(fragment, baseUrl, hasPushState, absolute) {\r\n if (isAbsoluteUrl.test(fragment)) {\r\n return fragment;\r\n }\r\n var path = '';\r\n if (baseUrl.length && baseUrl[0] !== '/') {\r\n path += '/';\r\n }\r\n path += baseUrl;\r\n if ((!path.length || path[path.length - 1] !== '/') && fragment[0] !== '/') {\r\n path += '/';\r\n }\r\n if (path.length && path[path.length - 1] === '/' && fragment[0] === '/') {\r\n path = path.substring(0, path.length - 1);\r\n }\r\n return _normalizeAbsolutePath(path + fragment, hasPushState, absolute);\r\n}\r\nfunction _resolveUrl(fragment, baseUrl, hasPushState) {\r\n if (isRootedPath.test(fragment)) {\r\n return _normalizeAbsolutePath(fragment, hasPushState);\r\n }\r\n return _createRootedPath(fragment, baseUrl, hasPushState);\r\n}\r\nfunction _ensureArrayWithSingleRoutePerConfig(config) {\r\n var routeConfigs = [];\r\n if (Array.isArray(config.route)) {\r\n for (var i = 0, ii = config.route.length; i < ii; ++i) {\r\n var current = Object.assign({}, config);\r\n current.route = config.route[i];\r\n routeConfigs.push(current);\r\n }\r\n }\r\n else {\r\n routeConfigs.push(Object.assign({}, config));\r\n }\r\n return routeConfigs;\r\n}\r\nvar isRootedPath = /^#?\\//;\r\nvar isAbsoluteUrl = /^([a-z][a-z0-9+\\-.]*:)?\\/\\//i;\n\n/**\r\n * Class used to configure a [[Router]] instance.\r\n *\r\n * @constructor\r\n */\r\nvar RouterConfiguration = /** @class */ (function () {\r\n function RouterConfiguration() {\r\n this.instructions = [];\r\n this.options = {};\r\n this.pipelineSteps = [];\r\n }\r\n /**\r\n * Adds a step to be run during the [[Router]]'s navigation pipeline.\r\n *\r\n * @param name The name of the pipeline slot to insert the step into.\r\n * @param step The pipeline step.\r\n * @chainable\r\n */\r\n RouterConfiguration.prototype.addPipelineStep = function (name, step) {\r\n if (step === null || step === undefined) {\r\n throw new Error('Pipeline step cannot be null or undefined.');\r\n }\r\n this.pipelineSteps.push({ name: name, step: step });\r\n return this;\r\n };\r\n /**\r\n * Adds a step to be run during the [[Router]]'s authorize pipeline slot.\r\n *\r\n * @param step The pipeline step.\r\n * @chainable\r\n */\r\n RouterConfiguration.prototype.addAuthorizeStep = function (step) {\r\n return this.addPipelineStep(\"authorize\" /* Authorize */, step);\r\n };\r\n /**\r\n * Adds a step to be run during the [[Router]]'s preActivate pipeline slot.\r\n *\r\n * @param step The pipeline step.\r\n * @chainable\r\n */\r\n RouterConfiguration.prototype.addPreActivateStep = function (step) {\r\n return this.addPipelineStep(\"preActivate\" /* PreActivate */, step);\r\n };\r\n /**\r\n * Adds a step to be run during the [[Router]]'s preRender pipeline slot.\r\n *\r\n * @param step The pipeline step.\r\n * @chainable\r\n */\r\n RouterConfiguration.prototype.addPreRenderStep = function (step) {\r\n return this.addPipelineStep(\"preRender\" /* PreRender */, step);\r\n };\r\n /**\r\n * Adds a step to be run during the [[Router]]'s postRender pipeline slot.\r\n *\r\n * @param step The pipeline step.\r\n * @chainable\r\n */\r\n RouterConfiguration.prototype.addPostRenderStep = function (step) {\r\n return this.addPipelineStep(\"postRender\" /* PostRender */, step);\r\n };\r\n /**\r\n * Configures a route that will be used if there is no previous location available on navigation cancellation.\r\n *\r\n * @param fragment The URL fragment to use as the navigation destination.\r\n * @chainable\r\n */\r\n RouterConfiguration.prototype.fallbackRoute = function (fragment) {\r\n this._fallbackRoute = fragment;\r\n return this;\r\n };\r\n /**\r\n * Maps one or more routes to be registered with the router.\r\n *\r\n * @param route The [[RouteConfig]] to map, or an array of [[RouteConfig]] to map.\r\n * @chainable\r\n */\r\n RouterConfiguration.prototype.map = function (route) {\r\n var _this = this;\r\n if (Array.isArray(route)) {\r\n route.forEach(function (r) { return _this.map(r); });\r\n return this;\r\n }\r\n return this.mapRoute(route);\r\n };\r\n /**\r\n * Configures defaults to use for any view ports.\r\n *\r\n * @param viewPortConfig a view port configuration object to use as a\r\n * default, of the form { viewPortName: { moduleId } }.\r\n * @chainable\r\n */\r\n RouterConfiguration.prototype.useViewPortDefaults = function (viewPortConfig) {\r\n this.viewPortDefaults = viewPortConfig;\r\n return this;\r\n };\r\n /**\r\n * Maps a single route to be registered with the router.\r\n *\r\n * @param route The [[RouteConfig]] to map.\r\n * @chainable\r\n */\r\n RouterConfiguration.prototype.mapRoute = function (config) {\r\n this.instructions.push(function (router) {\r\n var routeConfigs = _ensureArrayWithSingleRoutePerConfig(config);\r\n var navModel;\r\n for (var i = 0, ii = routeConfigs.length; i < ii; ++i) {\r\n var routeConfig = routeConfigs[i];\r\n routeConfig.settings = routeConfig.settings || {};\r\n if (!navModel) {\r\n navModel = router.createNavModel(routeConfig);\r\n }\r\n router.addRoute(routeConfig, navModel);\r\n }\r\n });\r\n return this;\r\n };\r\n /**\r\n * Registers an unknown route handler to be run when the URL fragment doesn't match any registered routes.\r\n *\r\n * @param config A string containing a moduleId to load, or a [[RouteConfig]], or a function that takes the\r\n * [[NavigationInstruction]] and selects a moduleId to load.\r\n * @chainable\r\n */\r\n RouterConfiguration.prototype.mapUnknownRoutes = function (config) {\r\n this.unknownRouteConfig = config;\r\n return this;\r\n };\r\n /**\r\n * Applies the current configuration to the specified [[Router]].\r\n *\r\n * @param router The [[Router]] to apply the configuration to.\r\n */\r\n RouterConfiguration.prototype.exportToRouter = function (router) {\r\n var instructions = this.instructions;\r\n for (var i = 0, ii = instructions.length; i < ii; ++i) {\r\n instructions[i](router);\r\n }\r\n var _a = this, title = _a.title, titleSeparator = _a.titleSeparator, unknownRouteConfig = _a.unknownRouteConfig, _fallbackRoute = _a._fallbackRoute, viewPortDefaults = _a.viewPortDefaults;\r\n if (title) {\r\n router.title = title;\r\n }\r\n if (titleSeparator) {\r\n router.titleSeparator = titleSeparator;\r\n }\r\n if (unknownRouteConfig) {\r\n router.handleUnknownRoutes(unknownRouteConfig);\r\n }\r\n if (_fallbackRoute) {\r\n router.fallbackRoute = _fallbackRoute;\r\n }\r\n if (viewPortDefaults) {\r\n router.useViewPortDefaults(viewPortDefaults);\r\n }\r\n Object.assign(router.options, this.options);\r\n var pipelineSteps = this.pipelineSteps;\r\n var pipelineStepCount = pipelineSteps.length;\r\n if (pipelineStepCount) {\r\n if (!router.isRoot) {\r\n throw new Error('Pipeline steps can only be added to the root router');\r\n }\r\n var pipelineProvider = router.pipelineProvider;\r\n for (var i = 0, ii = pipelineStepCount; i < ii; ++i) {\r\n var _b = pipelineSteps[i], name_1 = _b.name, step = _b.step;\r\n pipelineProvider.addStep(name_1, step);\r\n }\r\n }\r\n };\r\n return RouterConfiguration;\r\n}());\n\n/**\r\n * The primary class responsible for handling routing and navigation.\r\n */\r\nvar Router = /** @class */ (function () {\r\n /**\r\n * @param container The [[Container]] to use when child routers.\r\n * @param history The [[History]] implementation to delegate navigation requests to.\r\n */\r\n function Router(container, history) {\r\n var _this = this;\r\n /**\r\n * The parent router, or null if this instance is not a child router.\r\n */\r\n this.parent = null;\r\n this.options = {};\r\n /**\r\n * The defaults used when a viewport lacks specified content\r\n */\r\n this.viewPortDefaults = {};\r\n /**\r\n * Extension point to transform the document title before it is built and displayed.\r\n * By default, child routers delegate to the parent router, and the app router\r\n * returns the title unchanged.\r\n */\r\n this.transformTitle = function (title) {\r\n if (_this.parent) {\r\n return _this.parent.transformTitle(title);\r\n }\r\n return title;\r\n };\r\n this.container = container;\r\n this.history = history;\r\n this.reset();\r\n }\r\n /**\r\n * Fully resets the router's internal state. Primarily used internally by the framework when multiple calls to setRoot are made.\r\n * Use with caution (actually, avoid using this). Do not use this to simply change your navigation model.\r\n */\r\n Router.prototype.reset = function () {\r\n var _this = this;\r\n this.viewPorts = {};\r\n this.routes = [];\r\n this.baseUrl = '';\r\n this.isConfigured = false;\r\n this.isNavigating = false;\r\n this.isExplicitNavigation = false;\r\n this.isExplicitNavigationBack = false;\r\n this.isNavigatingFirst = false;\r\n this.isNavigatingNew = false;\r\n this.isNavigatingRefresh = false;\r\n this.isNavigatingForward = false;\r\n this.isNavigatingBack = false;\r\n this.couldDeactivate = false;\r\n this.navigation = [];\r\n this.currentInstruction = null;\r\n this.viewPortDefaults = {};\r\n this._fallbackOrder = 100;\r\n this._recognizer = new RouteRecognizer();\r\n this._childRecognizer = new RouteRecognizer();\r\n this._configuredPromise = new Promise(function (resolve) {\r\n _this._resolveConfiguredPromise = resolve;\r\n });\r\n };\r\n Object.defineProperty(Router.prototype, \"isRoot\", {\r\n /**\r\n * Gets a value indicating whether or not this [[Router]] is the root in the router tree. I.e., it has no parent.\r\n */\r\n get: function () {\r\n return !this.parent;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Registers a viewPort to be used as a rendering target for activated routes.\r\n *\r\n * @param viewPort The viewPort.\r\n * @param name The name of the viewPort. 'default' if unspecified.\r\n */\r\n Router.prototype.registerViewPort = function (viewPort, name) {\r\n name = name || 'default';\r\n this.viewPorts[name] = viewPort;\r\n };\r\n /**\r\n * Returns a Promise that resolves when the router is configured.\r\n */\r\n Router.prototype.ensureConfigured = function () {\r\n return this._configuredPromise;\r\n };\r\n /**\r\n * Configures the router.\r\n *\r\n * @param callbackOrConfig The [[RouterConfiguration]] or a callback that takes a [[RouterConfiguration]].\r\n */\r\n Router.prototype.configure = function (callbackOrConfig) {\r\n var _this = this;\r\n this.isConfigured = true;\r\n var result = callbackOrConfig;\r\n var config;\r\n if (typeof callbackOrConfig === 'function') {\r\n config = new RouterConfiguration();\r\n result = callbackOrConfig(config);\r\n }\r\n return Promise\r\n .resolve(result)\r\n .then(function (c) {\r\n if (c && c.exportToRouter) {\r\n config = c;\r\n }\r\n config.exportToRouter(_this);\r\n _this.isConfigured = true;\r\n _this._resolveConfiguredPromise();\r\n });\r\n };\r\n /**\r\n * Navigates to a new location.\r\n *\r\n * @param fragment The URL fragment to use as the navigation destination.\r\n * @param options The navigation options.\r\n */\r\n Router.prototype.navigate = function (fragment, options) {\r\n if (!this.isConfigured && this.parent) {\r\n return this.parent.navigate(fragment, options);\r\n }\r\n this.isExplicitNavigation = true;\r\n return this.history.navigate(_resolveUrl(fragment, this.baseUrl, this.history._hasPushState), options);\r\n };\r\n /**\r\n * Navigates to a new location corresponding to the route and params specified. Equivallent to [[Router.generate]] followed\r\n * by [[Router.navigate]].\r\n *\r\n * @param route The name of the route to use when generating the navigation location.\r\n * @param params The route parameters to be used when populating the route pattern.\r\n * @param options The navigation options.\r\n */\r\n Router.prototype.navigateToRoute = function (route, params, options) {\r\n var path = this.generate(route, params);\r\n return this.navigate(path, options);\r\n };\r\n /**\r\n * Navigates back to the most recent location in history.\r\n */\r\n Router.prototype.navigateBack = function () {\r\n this.isExplicitNavigationBack = true;\r\n this.history.navigateBack();\r\n };\r\n /**\r\n * Creates a child router of the current router.\r\n *\r\n * @param container The [[Container]] to provide to the child router. Uses the current [[Router]]'s [[Container]] if unspecified.\r\n * @returns {Router} The new child Router.\r\n */\r\n Router.prototype.createChild = function (container) {\r\n var childRouter = new Router(container || this.container.createChild(), this.history);\r\n childRouter.parent = this;\r\n return childRouter;\r\n };\r\n /**\r\n * Generates a URL fragment matching the specified route pattern.\r\n *\r\n * @param name The name of the route whose pattern should be used to generate the fragment.\r\n * @param params The route params to be used to populate the route pattern.\r\n * @param options If options.absolute = true, then absolute url will be generated; otherwise, it will be relative url.\r\n * @returns {string} A string containing the generated URL fragment.\r\n */\r\n Router.prototype.generate = function (nameOrRoute, params, options) {\r\n if (params === void 0) { params = {}; }\r\n if (options === void 0) { options = {}; }\r\n // A child recognizer generates routes for potential child routes. Any potential child route is added\r\n // to the childRoute property of params for the childRouter to recognize. When generating routes, we\r\n // use the childRecognizer when childRoute params are available to generate a child router enabled route.\r\n var recognizer = 'childRoute' in params ? this._childRecognizer : this._recognizer;\r\n var hasRoute = recognizer.hasRoute(nameOrRoute);\r\n if (!hasRoute) {\r\n if (this.parent) {\r\n return this.parent.generate(nameOrRoute, params, options);\r\n }\r\n throw new Error(\"A route with name '\" + nameOrRoute + \"' could not be found. Check that `name: '\" + nameOrRoute + \"'` was specified in the route's config.\");\r\n }\r\n var path = recognizer.generate(nameOrRoute, params);\r\n var rootedPath = _createRootedPath(path, this.baseUrl, this.history._hasPushState, options.absolute);\r\n return options.absolute ? \"\" + this.history.getAbsoluteRoot() + rootedPath : rootedPath;\r\n };\r\n /**\r\n * Creates a [[NavModel]] for the specified route config.\r\n *\r\n * @param config The route config.\r\n */\r\n Router.prototype.createNavModel = function (config) {\r\n var navModel = new NavModel(this, 'href' in config\r\n ? config.href\r\n // potential error when config.route is a string[] ?\r\n : config.route);\r\n navModel.title = config.title;\r\n navModel.order = config.nav;\r\n navModel.href = config.href;\r\n navModel.settings = config.settings;\r\n navModel.config = config;\r\n return navModel;\r\n };\r\n /**\r\n * Registers a new route with the router.\r\n *\r\n * @param config The [[RouteConfig]].\r\n * @param navModel The [[NavModel]] to use for the route. May be omitted for single-pattern routes.\r\n */\r\n Router.prototype.addRoute = function (config, navModel) {\r\n if (Array.isArray(config.route)) {\r\n var routeConfigs = _ensureArrayWithSingleRoutePerConfig(config);\r\n // the following is wrong. todo: fix this after TS refactoring release\r\n routeConfigs.forEach(this.addRoute.bind(this));\r\n return;\r\n }\r\n validateRouteConfig(config);\r\n if (!('viewPorts' in config) && !config.navigationStrategy) {\r\n config.viewPorts = {\r\n 'default': {\r\n moduleId: config.moduleId,\r\n view: config.view\r\n }\r\n };\r\n }\r\n if (!navModel) {\r\n navModel = this.createNavModel(config);\r\n }\r\n this.routes.push(config);\r\n var path = config.route;\r\n if (path.charAt(0) === '/') {\r\n path = path.substr(1);\r\n }\r\n var caseSensitive = config.caseSensitive === true;\r\n var state = this._recognizer.add({\r\n path: path,\r\n handler: config,\r\n caseSensitive: caseSensitive\r\n });\r\n if (path) {\r\n var settings = config.settings;\r\n delete config.settings;\r\n var withChild = JSON.parse(JSON.stringify(config));\r\n config.settings = settings;\r\n withChild.route = path + \"/*childRoute\";\r\n withChild.hasChildRouter = true;\r\n this._childRecognizer.add({\r\n path: withChild.route,\r\n handler: withChild,\r\n caseSensitive: caseSensitive\r\n });\r\n withChild.navModel = navModel;\r\n withChild.settings = config.settings;\r\n withChild.navigationStrategy = config.navigationStrategy;\r\n }\r\n config.navModel = navModel;\r\n var navigation = this.navigation;\r\n if ((navModel.order || navModel.order === 0) && navigation.indexOf(navModel) === -1) {\r\n if ((!navModel.href && navModel.href !== '') && (state.types.dynamics || state.types.stars)) {\r\n throw new Error('Invalid route config for \"' + config.route + '\" : dynamic routes must specify an \"href:\" to be included in the navigation model.');\r\n }\r\n if (typeof navModel.order !== 'number') {\r\n navModel.order = ++this._fallbackOrder;\r\n }\r\n navigation.push(navModel);\r\n // this is a potential error / inconsistency between browsers\r\n //\r\n // MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort\r\n // If compareFunction(a, b) returns 0, leave a and b unchanged with respect to each other,\r\n // but sorted with respect to all different elements.\r\n // Note: the ECMAscript standard does not guarantee this behaviour,\r\n // and thus not all browsers (e.g. Mozilla versions dating back to at least 2003) respect this.\r\n navigation.sort(function (a, b) { return a.order - b.order; });\r\n }\r\n };\r\n /**\r\n * Gets a value indicating whether or not this [[Router]] or one of its ancestors has a route registered with the specified name.\r\n *\r\n * @param name The name of the route to check.\r\n */\r\n Router.prototype.hasRoute = function (name) {\r\n return !!(this._recognizer.hasRoute(name) || this.parent && this.parent.hasRoute(name));\r\n };\r\n /**\r\n * Gets a value indicating whether or not this [[Router]] has a route registered with the specified name.\r\n *\r\n * @param name The name of the route to check.\r\n */\r\n Router.prototype.hasOwnRoute = function (name) {\r\n return this._recognizer.hasRoute(name);\r\n };\r\n /**\r\n * Register a handler to use when the incoming URL fragment doesn't match any registered routes.\r\n *\r\n * @param config The moduleId, or a function that selects the moduleId, or a [[RouteConfig]].\r\n */\r\n Router.prototype.handleUnknownRoutes = function (config) {\r\n var _this = this;\r\n if (!config) {\r\n throw new Error('Invalid unknown route handler');\r\n }\r\n this.catchAllHandler = function (instruction) {\r\n return _this\r\n ._createRouteConfig(config, instruction)\r\n .then(function (c) {\r\n instruction.config = c;\r\n return instruction;\r\n });\r\n };\r\n };\r\n /**\r\n * Updates the document title using the current navigation instruction.\r\n */\r\n Router.prototype.updateTitle = function () {\r\n var parentRouter = this.parent;\r\n if (parentRouter) {\r\n return parentRouter.updateTitle();\r\n }\r\n var currentInstruction = this.currentInstruction;\r\n if (currentInstruction) {\r\n currentInstruction._updateTitle();\r\n }\r\n return undefined;\r\n };\r\n /**\r\n * Updates the navigation routes with hrefs relative to the current location.\r\n * Note: This method will likely move to a plugin in a future release.\r\n */\r\n Router.prototype.refreshNavigation = function () {\r\n var nav = this.navigation;\r\n for (var i = 0, length_1 = nav.length; i < length_1; i++) {\r\n var current = nav[i];\r\n if (!current.config.href) {\r\n current.href = _createRootedPath(current.relativeHref, this.baseUrl, this.history._hasPushState);\r\n }\r\n else {\r\n current.href = _normalizeAbsolutePath(current.config.href, this.history._hasPushState);\r\n }\r\n }\r\n };\r\n /**\r\n * Sets the default configuration for the view ports. This specifies how to\r\n * populate a view port for which no module is specified. The default is\r\n * an empty view/view-model pair.\r\n */\r\n Router.prototype.useViewPortDefaults = function ($viewPortDefaults) {\r\n // a workaround to have strong typings while not requiring to expose interface ViewPortInstruction\r\n var viewPortDefaults = $viewPortDefaults;\r\n for (var viewPortName in viewPortDefaults) {\r\n var viewPortConfig = viewPortDefaults[viewPortName];\r\n this.viewPortDefaults[viewPortName] = {\r\n moduleId: viewPortConfig.moduleId\r\n };\r\n }\r\n };\r\n /**@internal */\r\n Router.prototype._refreshBaseUrl = function () {\r\n var parentRouter = this.parent;\r\n if (parentRouter) {\r\n this.baseUrl = generateBaseUrl(parentRouter, parentRouter.currentInstruction);\r\n }\r\n };\r\n /**@internal */\r\n Router.prototype._createNavigationInstruction = function (url, parentInstruction) {\r\n if (url === void 0) { url = ''; }\r\n if (parentInstruction === void 0) { parentInstruction = null; }\r\n var fragment = url;\r\n var queryString = '';\r\n var queryIndex = url.indexOf('?');\r\n if (queryIndex !== -1) {\r\n fragment = url.substr(0, queryIndex);\r\n queryString = url.substr(queryIndex + 1);\r\n }\r\n var urlRecognizationResults = this._recognizer.recognize(url);\r\n if (!urlRecognizationResults || !urlRecognizationResults.length) {\r\n urlRecognizationResults = this._childRecognizer.recognize(url);\r\n }\r\n var instructionInit = {\r\n fragment: fragment,\r\n queryString: queryString,\r\n config: null,\r\n parentInstruction: parentInstruction,\r\n previousInstruction: this.currentInstruction,\r\n router: this,\r\n options: {\r\n compareQueryParams: this.options.compareQueryParams\r\n }\r\n };\r\n var result;\r\n if (urlRecognizationResults && urlRecognizationResults.length) {\r\n var first = urlRecognizationResults[0];\r\n var instruction = new NavigationInstruction(Object.assign({}, instructionInit, {\r\n params: first.params,\r\n queryParams: first.queryParams || urlRecognizationResults.queryParams,\r\n config: first.config || first.handler\r\n }));\r\n if (typeof first.handler === 'function') {\r\n result = evaluateNavigationStrategy(instruction, first.handler, first);\r\n }\r\n else if (first.handler && typeof first.handler.navigationStrategy === 'function') {\r\n result = evaluateNavigationStrategy(instruction, first.handler.navigationStrategy, first.handler);\r\n }\r\n else {\r\n result = Promise.resolve(instruction);\r\n }\r\n }\r\n else if (this.catchAllHandler) {\r\n var instruction = new NavigationInstruction(Object.assign({}, instructionInit, {\r\n params: { path: fragment },\r\n queryParams: urlRecognizationResults ? urlRecognizationResults.queryParams : {},\r\n config: null // config will be created by the catchAllHandler\r\n }));\r\n result = evaluateNavigationStrategy(instruction, this.catchAllHandler);\r\n }\r\n else if (this.parent) {\r\n var router = this._parentCatchAllHandler(this.parent);\r\n if (router) {\r\n var newParentInstruction = this._findParentInstructionFromRouter(router, parentInstruction);\r\n var instruction = new NavigationInstruction(Object.assign({}, instructionInit, {\r\n params: { path: fragment },\r\n queryParams: urlRecognizationResults ? urlRecognizationResults.queryParams : {},\r\n router: router,\r\n parentInstruction: newParentInstruction,\r\n parentCatchHandler: true,\r\n config: null // config will be created by the chained parent catchAllHandler\r\n }));\r\n result = evaluateNavigationStrategy(instruction, router.catchAllHandler);\r\n }\r\n }\r\n if (result && parentInstruction) {\r\n this.baseUrl = generateBaseUrl(this.parent, parentInstruction);\r\n }\r\n return result || Promise.reject(new Error(\"Route not found: \" + url));\r\n };\r\n /**@internal */\r\n Router.prototype._findParentInstructionFromRouter = function (router, instruction) {\r\n if (instruction.router === router) {\r\n instruction.fragment = router.baseUrl; // need to change the fragment in case of a redirect instead of moduleId\r\n return instruction;\r\n }\r\n else if (instruction.parentInstruction) {\r\n return this._findParentInstructionFromRouter(router, instruction.parentInstruction);\r\n }\r\n return undefined;\r\n };\r\n /**@internal */\r\n Router.prototype._parentCatchAllHandler = function (router) {\r\n if (router.catchAllHandler) {\r\n return router;\r\n }\r\n else if (router.parent) {\r\n return this._parentCatchAllHandler(router.parent);\r\n }\r\n return false;\r\n };\r\n /**\r\n * @internal\r\n */\r\n Router.prototype._createRouteConfig = function (config, instruction) {\r\n var _this = this;\r\n return Promise\r\n .resolve(config)\r\n .then(function (c) {\r\n if (typeof c === 'string') {\r\n return { moduleId: c };\r\n }\r\n else if (typeof c === 'function') {\r\n return c(instruction);\r\n }\r\n return c;\r\n })\r\n // typing here could be either RouteConfig or RedirectConfig\r\n // but temporarily treat both as RouteConfig\r\n // todo: improve typings precision\r\n .then(function (c) { return typeof c === 'string' ? { moduleId: c } : c; })\r\n .then(function (c) {\r\n c.route = instruction.params.path;\r\n validateRouteConfig(c);\r\n if (!c.navModel) {\r\n c.navModel = _this.createNavModel(c);\r\n }\r\n return c;\r\n });\r\n };\r\n return Router;\r\n}());\r\n/* @internal exported for unit testing */\r\nvar generateBaseUrl = function (router, instruction) {\r\n return \"\" + (router.baseUrl || '') + (instruction.getBaseUrl() || '');\r\n};\r\n/* @internal exported for unit testing */\r\nvar validateRouteConfig = function (config) {\r\n if (typeof config !== 'object') {\r\n throw new Error('Invalid Route Config');\r\n }\r\n if (typeof config.route !== 'string') {\r\n var name_1 = config.name || '(no name)';\r\n throw new Error('Invalid Route Config for \"' + name_1 + '\": You must specify a \"route:\" pattern.');\r\n }\r\n if (!('redirect' in config || config.moduleId || config.navigationStrategy || config.viewPorts)) {\r\n throw new Error('Invalid Route Config for \"' + config.route + '\": You must specify a \"moduleId:\", \"redirect:\", \"navigationStrategy:\", or \"viewPorts:\".');\r\n }\r\n};\r\n/* @internal exported for unit testing */\r\nvar evaluateNavigationStrategy = function (instruction, evaluator, context) {\r\n return Promise\r\n .resolve(evaluator.call(context, instruction))\r\n .then(function () {\r\n if (!('viewPorts' in instruction.config)) {\r\n instruction.config.viewPorts = {\r\n 'default': {\r\n moduleId: instruction.config.moduleId\r\n }\r\n };\r\n }\r\n return instruction;\r\n });\r\n};\n\n/**@internal exported for unit testing */\r\nvar createNextFn = function (instruction, steps) {\r\n var index = -1;\r\n var next = function () {\r\n index++;\r\n if (index < steps.length) {\r\n var currentStep = steps[index];\r\n try {\r\n return currentStep(instruction, next);\r\n }\r\n catch (e) {\r\n return next.reject(e);\r\n }\r\n }\r\n else {\r\n return next.complete();\r\n }\r\n };\r\n next.complete = createCompletionHandler(next, \"completed\" /* Completed */);\r\n next.cancel = createCompletionHandler(next, \"canceled\" /* Canceled */);\r\n next.reject = createCompletionHandler(next, \"rejected\" /* Rejected */);\r\n return next;\r\n};\r\n/**@internal exported for unit testing */\r\nvar createCompletionHandler = function (next, status) {\r\n return function (output) { return Promise\r\n .resolve({\r\n status: status,\r\n output: output,\r\n completed: status === \"completed\" /* Completed */\r\n }); };\r\n};\n\n/**\r\n * The class responsible for managing and processing the navigation pipeline.\r\n */\r\nvar Pipeline = /** @class */ (function () {\r\n function Pipeline() {\r\n /**\r\n * The pipeline steps. And steps added via addStep will be converted to a function\r\n * The actualy running functions with correct step contexts of this pipeline\r\n */\r\n this.steps = [];\r\n }\r\n /**\r\n * Adds a step to the pipeline.\r\n *\r\n * @param step The pipeline step.\r\n */\r\n Pipeline.prototype.addStep = function (step) {\r\n var run;\r\n if (typeof step === 'function') {\r\n run = step;\r\n }\r\n else if (typeof step.getSteps === 'function') {\r\n // getSteps is to enable support open slots\r\n // where devs can add multiple steps into the same slot name\r\n var steps = step.getSteps();\r\n for (var i = 0, l = steps.length; i < l; i++) {\r\n this.addStep(steps[i]);\r\n }\r\n return this;\r\n }\r\n else {\r\n run = step.run.bind(step);\r\n }\r\n this.steps.push(run);\r\n return this;\r\n };\r\n /**\r\n * Runs the pipeline.\r\n *\r\n * @param instruction The navigation instruction to process.\r\n */\r\n Pipeline.prototype.run = function (instruction) {\r\n var nextFn = createNextFn(instruction, this.steps);\r\n return nextFn();\r\n };\r\n return Pipeline;\r\n}());\n\n/**\r\n* Determines if the provided object is a navigation command.\r\n* A navigation command is anything with a navigate method.\r\n*\r\n* @param obj The object to check.\r\n*/\r\nfunction isNavigationCommand(obj) {\r\n return obj && typeof obj.navigate === 'function';\r\n}\r\n/**\r\n* Used during the activation lifecycle to cause a redirect.\r\n*/\r\nvar Redirect = /** @class */ (function () {\r\n /**\r\n * @param url The URL fragment to use as the navigation destination.\r\n * @param options The navigation options.\r\n */\r\n function Redirect(url, options) {\r\n if (options === void 0) { options = {}; }\r\n this.url = url;\r\n this.options = Object.assign({ trigger: true, replace: true }, options);\r\n this.shouldContinueProcessing = false;\r\n }\r\n /**\r\n * Called by the activation system to set the child router.\r\n *\r\n * @param router The router.\r\n */\r\n Redirect.prototype.setRouter = function (router) {\r\n this.router = router;\r\n };\r\n /**\r\n * Called by the navigation pipeline to navigate.\r\n *\r\n * @param appRouter The router to be redirected.\r\n */\r\n Redirect.prototype.navigate = function (appRouter) {\r\n var navigatingRouter = this.options.useAppRouter ? appRouter : (this.router || appRouter);\r\n navigatingRouter.navigate(this.url, this.options);\r\n };\r\n return Redirect;\r\n}());\r\n/**\r\n * Used during the activation lifecycle to cause a redirect to a named route.\r\n */\r\nvar RedirectToRoute = /** @class */ (function () {\r\n /**\r\n * @param route The name of the route.\r\n * @param params The parameters to be sent to the activation method.\r\n * @param options The options to use for navigation.\r\n */\r\n function RedirectToRoute(route, params, options) {\r\n if (params === void 0) { params = {}; }\r\n if (options === void 0) { options = {}; }\r\n this.route = route;\r\n this.params = params;\r\n this.options = Object.assign({ trigger: true, replace: true }, options);\r\n this.shouldContinueProcessing = false;\r\n }\r\n /**\r\n * Called by the activation system to set the child router.\r\n *\r\n * @param router The router.\r\n */\r\n RedirectToRoute.prototype.setRouter = function (router) {\r\n this.router = router;\r\n };\r\n /**\r\n * Called by the navigation pipeline to navigate.\r\n *\r\n * @param appRouter The router to be redirected.\r\n */\r\n RedirectToRoute.prototype.navigate = function (appRouter) {\r\n var navigatingRouter = this.options.useAppRouter ? appRouter : (this.router || appRouter);\r\n navigatingRouter.navigateToRoute(this.route, this.params, this.options);\r\n };\r\n return RedirectToRoute;\r\n}());\n\n/**\r\n * @internal exported for unit testing\r\n */\r\nfunction _buildNavigationPlan(instruction, forceLifecycleMinimum) {\r\n var config = instruction.config;\r\n if ('redirect' in config) {\r\n return buildRedirectPlan(instruction);\r\n }\r\n var prevInstruction = instruction.previousInstruction;\r\n var defaultViewPortConfigs = instruction.router.viewPortDefaults;\r\n if (prevInstruction) {\r\n return buildTransitionPlans(instruction, prevInstruction, defaultViewPortConfigs, forceLifecycleMinimum);\r\n }\r\n // first navigation, only need to prepare a few information for each viewport plan\r\n var viewPortPlans = {};\r\n var viewPortConfigs = config.viewPorts;\r\n for (var viewPortName in viewPortConfigs) {\r\n var viewPortConfig = viewPortConfigs[viewPortName];\r\n if (viewPortConfig.moduleId === null && viewPortName in defaultViewPortConfigs) {\r\n viewPortConfig = defaultViewPortConfigs[viewPortName];\r\n }\r\n viewPortPlans[viewPortName] = {\r\n name: viewPortName,\r\n strategy: \"replace\" /* Replace */,\r\n config: viewPortConfig\r\n };\r\n }\r\n return Promise.resolve(viewPortPlans);\r\n}\r\n/**\r\n * Build redirect plan based on config of a navigation instruction\r\n * @internal exported for unit testing\r\n */\r\nvar buildRedirectPlan = function (instruction) {\r\n var config = instruction.config;\r\n var router = instruction.router;\r\n return router\r\n ._createNavigationInstruction(config.redirect)\r\n .then(function (redirectInstruction) {\r\n var params = {};\r\n var originalInstructionParams = instruction.params;\r\n var redirectInstructionParams = redirectInstruction.params;\r\n for (var key in redirectInstructionParams) {\r\n // If the param on the redirect points to another param, e.g. { route: first/:this, redirect: second/:this }\r\n var val = redirectInstructionParams[key];\r\n if (typeof val === 'string' && val[0] === ':') {\r\n val = val.slice(1);\r\n // And if that param is found on the original instruction then use it\r\n if (val in originalInstructionParams) {\r\n params[key] = originalInstructionParams[val];\r\n }\r\n }\r\n else {\r\n params[key] = redirectInstructionParams[key];\r\n }\r\n }\r\n var redirectLocation = router.generate(redirectInstruction.config, params, instruction.options);\r\n // Special handling for child routes\r\n for (var key in originalInstructionParams) {\r\n redirectLocation = redirectLocation.replace(\":\" + key, originalInstructionParams[key]);\r\n }\r\n var queryString = instruction.queryString;\r\n if (queryString) {\r\n redirectLocation += '?' + queryString;\r\n }\r\n return Promise.resolve(new Redirect(redirectLocation));\r\n });\r\n};\r\n/**\r\n * @param viewPortPlans the Plan record that holds information about built plans\r\n * @internal exported for unit testing\r\n */\r\nvar buildTransitionPlans = function (currentInstruction, previousInstruction, defaultViewPortConfigs, forceLifecycleMinimum) {\r\n var viewPortPlans = {};\r\n var newInstructionConfig = currentInstruction.config;\r\n var hasNewParams = hasDifferentParameterValues(previousInstruction, currentInstruction);\r\n var pending = [];\r\n var previousViewPortInstructions = previousInstruction.viewPortInstructions;\r\n var _loop_1 = function (viewPortName) {\r\n var prevViewPortInstruction = previousViewPortInstructions[viewPortName];\r\n var prevViewPortComponent = prevViewPortInstruction.component;\r\n var newInstructionViewPortConfigs = newInstructionConfig.viewPorts;\r\n // if this is invoked on a viewport without any changes, based on new url,\r\n // newViewPortConfig will be the existing viewport instruction\r\n var nextViewPortConfig = viewPortName in newInstructionViewPortConfigs\r\n ? newInstructionViewPortConfigs[viewPortName]\r\n : prevViewPortInstruction;\r\n if (nextViewPortConfig.moduleId === null && viewPortName in defaultViewPortConfigs) {\r\n nextViewPortConfig = defaultViewPortConfigs[viewPortName];\r\n }\r\n var viewPortActivationStrategy = determineActivationStrategy(currentInstruction, prevViewPortInstruction, nextViewPortConfig, hasNewParams, forceLifecycleMinimum);\r\n var viewPortPlan = viewPortPlans[viewPortName] = {\r\n name: viewPortName,\r\n // ViewPortInstruction can quack like a RouteConfig\r\n config: nextViewPortConfig,\r\n prevComponent: prevViewPortComponent,\r\n prevModuleId: prevViewPortInstruction.moduleId,\r\n strategy: viewPortActivationStrategy\r\n };\r\n // recursively build nav plans for all existing child routers/viewports of this viewport\r\n // this is possible because existing child viewports and routers already have necessary information\r\n // to process the wildcard path from parent instruction\r\n if (viewPortActivationStrategy !== \"replace\" /* Replace */ && prevViewPortInstruction.childRouter) {\r\n var path = currentInstruction.getWildcardPath();\r\n var task = prevViewPortInstruction\r\n .childRouter\r\n ._createNavigationInstruction(path, currentInstruction)\r\n .then(function (childInstruction) {\r\n viewPortPlan.childNavigationInstruction = childInstruction;\r\n return _buildNavigationPlan(childInstruction, \r\n // is it safe to assume viewPortPlan has not been changed from previous assignment?\r\n // if so, can just use local variable viewPortPlanStrategy\r\n // there could be user code modifying viewport plan during _createNavigationInstruction?\r\n viewPortPlan.strategy === \"invoke-lifecycle\" /* InvokeLifecycle */)\r\n .then(function (childPlan) {\r\n if (childPlan instanceof Redirect) {\r\n return Promise.reject(childPlan);\r\n }\r\n childInstruction.plan = childPlan;\r\n // for bluebird ?\r\n return null;\r\n });\r\n });\r\n pending.push(task);\r\n }\r\n };\r\n for (var viewPortName in previousViewPortInstructions) {\r\n _loop_1(viewPortName);\r\n }\r\n return Promise.all(pending).then(function () { return viewPortPlans; });\r\n};\r\n/**\r\n * @param newViewPortConfig if this is invoked on a viewport without any changes, based on new url, newViewPortConfig will be the existing viewport instruction\r\n * @internal exported for unit testing\r\n */\r\nvar determineActivationStrategy = function (currentNavInstruction, prevViewPortInstruction, newViewPortConfig, \r\n// indicates whether there is difference between old and new url params\r\nhasNewParams, forceLifecycleMinimum) {\r\n var newInstructionConfig = currentNavInstruction.config;\r\n var prevViewPortViewModel = prevViewPortInstruction.component.viewModel;\r\n var viewPortPlanStrategy;\r\n if (prevViewPortInstruction.moduleId !== newViewPortConfig.moduleId) {\r\n viewPortPlanStrategy = \"replace\" /* Replace */;\r\n }\r\n else if ('determineActivationStrategy' in prevViewPortViewModel) {\r\n viewPortPlanStrategy = prevViewPortViewModel.determineActivationStrategy.apply(prevViewPortViewModel, currentNavInstruction.lifecycleArgs);\r\n }\r\n else if (newInstructionConfig.activationStrategy) {\r\n viewPortPlanStrategy = newInstructionConfig.activationStrategy;\r\n }\r\n else if (hasNewParams || forceLifecycleMinimum) {\r\n viewPortPlanStrategy = \"invoke-lifecycle\" /* InvokeLifecycle */;\r\n }\r\n else {\r\n viewPortPlanStrategy = \"no-change\" /* NoChange */;\r\n }\r\n return viewPortPlanStrategy;\r\n};\r\n/**@internal exported for unit testing */\r\nvar hasDifferentParameterValues = function (prev, next) {\r\n var prevParams = prev.params;\r\n var nextParams = next.params;\r\n var nextWildCardName = next.config.hasChildRouter ? next.getWildCardName() : null;\r\n for (var key in nextParams) {\r\n if (key === nextWildCardName) {\r\n continue;\r\n }\r\n if (prevParams[key] !== nextParams[key]) {\r\n return true;\r\n }\r\n }\r\n for (var key in prevParams) {\r\n if (key === nextWildCardName) {\r\n continue;\r\n }\r\n if (prevParams[key] !== nextParams[key]) {\r\n return true;\r\n }\r\n }\r\n if (!next.options.compareQueryParams) {\r\n return false;\r\n }\r\n var prevQueryParams = prev.queryParams;\r\n var nextQueryParams = next.queryParams;\r\n for (var key in nextQueryParams) {\r\n if (prevQueryParams[key] !== nextQueryParams[key]) {\r\n return true;\r\n }\r\n }\r\n for (var key in prevQueryParams) {\r\n if (prevQueryParams[key] !== nextQueryParams[key]) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n};\n\n/**\r\n * Transform a navigation instruction into viewport plan record object,\r\n * or a redirect request if user viewmodel demands\r\n */\r\nvar BuildNavigationPlanStep = /** @class */ (function () {\r\n function BuildNavigationPlanStep() {\r\n }\r\n BuildNavigationPlanStep.prototype.run = function (navigationInstruction, next) {\r\n return _buildNavigationPlan(navigationInstruction)\r\n .then(function (plan) {\r\n if (plan instanceof Redirect) {\r\n return next.cancel(plan);\r\n }\r\n navigationInstruction.plan = plan;\r\n return next();\r\n })\r\n .catch(next.cancel);\r\n };\r\n return BuildNavigationPlanStep;\r\n}());\n\n/**\r\n * @internal Exported for unit testing\r\n */\r\nvar loadNewRoute = function (routeLoader, navigationInstruction) {\r\n var loadingPlans = determineLoadingPlans(navigationInstruction);\r\n var loadPromises = loadingPlans.map(function (loadingPlan) { return loadRoute(routeLoader, loadingPlan.navigationInstruction, loadingPlan.viewPortPlan); });\r\n return Promise.all(loadPromises);\r\n};\r\n/**\r\n * @internal Exported for unit testing\r\n */\r\nvar determineLoadingPlans = function (navigationInstruction, loadingPlans) {\r\n if (loadingPlans === void 0) { loadingPlans = []; }\r\n var viewPortPlans = navigationInstruction.plan;\r\n for (var viewPortName in viewPortPlans) {\r\n var viewPortPlan = viewPortPlans[viewPortName];\r\n var childNavInstruction = viewPortPlan.childNavigationInstruction;\r\n if (viewPortPlan.strategy === \"replace\" /* Replace */) {\r\n loadingPlans.push({ viewPortPlan: viewPortPlan, navigationInstruction: navigationInstruction });\r\n if (childNavInstruction) {\r\n determineLoadingPlans(childNavInstruction, loadingPlans);\r\n }\r\n }\r\n else {\r\n var viewPortInstruction = navigationInstruction.addViewPortInstruction({\r\n name: viewPortName,\r\n strategy: viewPortPlan.strategy,\r\n moduleId: viewPortPlan.prevModuleId,\r\n component: viewPortPlan.prevComponent\r\n });\r\n if (childNavInstruction) {\r\n viewPortInstruction.childNavigationInstruction = childNavInstruction;\r\n determineLoadingPlans(childNavInstruction, loadingPlans);\r\n }\r\n }\r\n }\r\n return loadingPlans;\r\n};\r\n/**\r\n * @internal Exported for unit testing\r\n */\r\nvar loadRoute = function (routeLoader, navigationInstruction, viewPortPlan) {\r\n var planConfig = viewPortPlan.config;\r\n var moduleId = planConfig ? planConfig.moduleId : null;\r\n return loadComponent(routeLoader, navigationInstruction, planConfig)\r\n .then(function (component) {\r\n var viewPortInstruction = navigationInstruction.addViewPortInstruction({\r\n name: viewPortPlan.name,\r\n strategy: viewPortPlan.strategy,\r\n moduleId: moduleId,\r\n component: component\r\n });\r\n var childRouter = component.childRouter;\r\n if (childRouter) {\r\n var path = navigationInstruction.getWildcardPath();\r\n return childRouter\r\n ._createNavigationInstruction(path, navigationInstruction)\r\n .then(function (childInstruction) {\r\n viewPortPlan.childNavigationInstruction = childInstruction;\r\n return _buildNavigationPlan(childInstruction)\r\n .then(function (childPlan) {\r\n if (childPlan instanceof Redirect) {\r\n return Promise.reject(childPlan);\r\n }\r\n childInstruction.plan = childPlan;\r\n viewPortInstruction.childNavigationInstruction = childInstruction;\r\n return loadNewRoute(routeLoader, childInstruction);\r\n });\r\n });\r\n }\r\n // ts complains without this, though they are same\r\n return void 0;\r\n });\r\n};\r\n/**\r\n * Load a routed-component based on navigation instruction and route config\r\n * @internal exported for unit testing only\r\n */\r\nvar loadComponent = function (routeLoader, navigationInstruction, config) {\r\n var router = navigationInstruction.router;\r\n var lifecycleArgs = navigationInstruction.lifecycleArgs;\r\n return Promise.resolve()\r\n .then(function () { return routeLoader.loadRoute(router, config, navigationInstruction); })\r\n .then(\r\n /**\r\n * @param component an object carrying information about loaded route\r\n * typically contains information about view model, childContainer, view and router\r\n */\r\n function (component) {\r\n var viewModel = component.viewModel, childContainer = component.childContainer;\r\n component.router = router;\r\n component.config = config;\r\n if ('configureRouter' in viewModel) {\r\n var childRouter_1 = childContainer.getChildRouter();\r\n component.childRouter = childRouter_1;\r\n return childRouter_1\r\n .configure(function (c) { return viewModel.configureRouter(c, childRouter_1, lifecycleArgs[0], lifecycleArgs[1], lifecycleArgs[2]); })\r\n .then(function () { return component; });\r\n }\r\n return component;\r\n });\r\n};\n\n/**\r\n * Abstract class that is responsible for loading view / view model from a route config\r\n * The default implementation can be found in `aurelia-templating-router`\r\n */\r\nvar RouteLoader = /** @class */ (function () {\r\n function RouteLoader() {\r\n }\r\n /**\r\n * Load a route config based on its viewmodel / view configuration\r\n */\r\n // return typing: return typings used to be never\r\n // as it was a throw. Changing it to Promise should not cause any issues\r\n RouteLoader.prototype.loadRoute = function (router, config, navigationInstruction) {\r\n throw new Error('Route loaders must implement \"loadRoute(router, config, navigationInstruction)\".');\r\n };\r\n return RouteLoader;\r\n}());\n\n/**\r\n * A pipeline step responsible for loading a route config of a navigation instruction\r\n */\r\nvar LoadRouteStep = /** @class */ (function () {\r\n function LoadRouteStep(routeLoader) {\r\n this.routeLoader = routeLoader;\r\n }\r\n /**@internal */\r\n LoadRouteStep.inject = function () { return [RouteLoader]; };\r\n /**\r\n * Run the internal to load route config of a navigation instruction to prepare for next steps in the pipeline\r\n */\r\n LoadRouteStep.prototype.run = function (navigationInstruction, next) {\r\n return loadNewRoute(this.routeLoader, navigationInstruction)\r\n .then(next, next.cancel);\r\n };\r\n return LoadRouteStep;\r\n}());\n\n/**\r\n * A pipeline step for instructing a piepline to commit changes on a navigation instruction\r\n */\r\nvar CommitChangesStep = /** @class */ (function () {\r\n function CommitChangesStep() {\r\n }\r\n CommitChangesStep.prototype.run = function (navigationInstruction, next) {\r\n return navigationInstruction\r\n ._commitChanges(/*wait to swap?*/ true)\r\n .then(function () {\r\n navigationInstruction._updateTitle();\r\n return next();\r\n });\r\n };\r\n return CommitChangesStep;\r\n}());\n\n/**\r\n * An optional interface describing the available activation strategies.\r\n * @internal Used internally.\r\n */\r\nvar InternalActivationStrategy;\r\n(function (InternalActivationStrategy) {\r\n /**\r\n * Reuse the existing view model, without invoking Router lifecycle hooks.\r\n */\r\n InternalActivationStrategy[\"NoChange\"] = \"no-change\";\r\n /**\r\n * Reuse the existing view model, invoking Router lifecycle hooks.\r\n */\r\n InternalActivationStrategy[\"InvokeLifecycle\"] = \"invoke-lifecycle\";\r\n /**\r\n * Replace the existing view model, invoking Router lifecycle hooks.\r\n */\r\n InternalActivationStrategy[\"Replace\"] = \"replace\";\r\n})(InternalActivationStrategy || (InternalActivationStrategy = {}));\r\n/**\r\n * The strategy to use when activating modules during navigation.\r\n */\r\n// kept for compat reason\r\nvar activationStrategy = {\r\n noChange: \"no-change\" /* NoChange */,\r\n invokeLifecycle: \"invoke-lifecycle\" /* InvokeLifecycle */,\r\n replace: \"replace\" /* Replace */\r\n};\n\n/**\r\n * Recursively find list of deactivate-able view models\r\n * and invoke the either 'canDeactivate' or 'deactivate' on each\r\n * @internal exported for unit testing\r\n */\r\nvar processDeactivatable = function (navigationInstruction, callbackName, next, ignoreResult) {\r\n var plan = navigationInstruction.plan;\r\n var infos = findDeactivatable(plan, callbackName);\r\n var i = infos.length; // query from inside out\r\n function inspect(val) {\r\n if (ignoreResult || shouldContinue(val)) {\r\n return iterate();\r\n }\r\n return next.cancel(val);\r\n }\r\n function iterate() {\r\n if (i--) {\r\n try {\r\n var viewModel = infos[i];\r\n var result = viewModel[callbackName](navigationInstruction);\r\n return processPotential(result, inspect, next.cancel);\r\n }\r\n catch (error) {\r\n return next.cancel(error);\r\n }\r\n }\r\n navigationInstruction.router.couldDeactivate = true;\r\n return next();\r\n }\r\n return iterate();\r\n};\r\n/**\r\n * Recursively find and returns a list of deactivate-able view models\r\n * @internal exported for unit testing\r\n */\r\nvar findDeactivatable = function (plan, callbackName, list) {\r\n if (list === void 0) { list = []; }\r\n for (var viewPortName in plan) {\r\n var viewPortPlan = plan[viewPortName];\r\n var prevComponent = viewPortPlan.prevComponent;\r\n if ((viewPortPlan.strategy === activationStrategy.invokeLifecycle || viewPortPlan.strategy === activationStrategy.replace)\r\n && prevComponent) {\r\n var viewModel = prevComponent.viewModel;\r\n if (callbackName in viewModel) {\r\n list.push(viewModel);\r\n }\r\n }\r\n if (viewPortPlan.strategy === activationStrategy.replace && prevComponent) {\r\n addPreviousDeactivatable(prevComponent, callbackName, list);\r\n }\r\n else if (viewPortPlan.childNavigationInstruction) {\r\n findDeactivatable(viewPortPlan.childNavigationInstruction.plan, callbackName, list);\r\n }\r\n }\r\n return list;\r\n};\r\n/**\r\n * @internal exported for unit testing\r\n */\r\nvar addPreviousDeactivatable = function (component, callbackName, list) {\r\n var childRouter = component.childRouter;\r\n if (childRouter && childRouter.currentInstruction) {\r\n var viewPortInstructions = childRouter.currentInstruction.viewPortInstructions;\r\n for (var viewPortName in viewPortInstructions) {\r\n var viewPortInstruction = viewPortInstructions[viewPortName];\r\n var prevComponent = viewPortInstruction.component;\r\n var prevViewModel = prevComponent.viewModel;\r\n if (callbackName in prevViewModel) {\r\n list.push(prevViewModel);\r\n }\r\n addPreviousDeactivatable(prevComponent, callbackName, list);\r\n }\r\n }\r\n};\r\n/**\r\n * @internal exported for unit testing\r\n */\r\nvar processActivatable = function (navigationInstruction, callbackName, next, ignoreResult) {\r\n var infos = findActivatable(navigationInstruction, callbackName);\r\n var length = infos.length;\r\n var i = -1; // query from top down\r\n function inspect(val, router) {\r\n if (ignoreResult || shouldContinue(val, router)) {\r\n return iterate();\r\n }\r\n return next.cancel(val);\r\n }\r\n function iterate() {\r\n var _a;\r\n i++;\r\n if (i < length) {\r\n try {\r\n var current_1 = infos[i];\r\n var result = (_a = current_1.viewModel)[callbackName].apply(_a, current_1.lifecycleArgs);\r\n return processPotential(result, function (val) { return inspect(val, current_1.router); }, next.cancel);\r\n }\r\n catch (error) {\r\n return next.cancel(error);\r\n }\r\n }\r\n return next();\r\n }\r\n return iterate();\r\n};\r\n/**\r\n * Find list of activatable view model and add to list (3rd parameter)\r\n * @internal exported for unit testing\r\n */\r\nvar findActivatable = function (navigationInstruction, callbackName, list, router) {\r\n if (list === void 0) { list = []; }\r\n var plan = navigationInstruction.plan;\r\n Object\r\n .keys(plan)\r\n .forEach(function (viewPortName) {\r\n var viewPortPlan = plan[viewPortName];\r\n var viewPortInstruction = navigationInstruction.viewPortInstructions[viewPortName];\r\n var viewPortComponent = viewPortInstruction.component;\r\n var viewModel = viewPortComponent.viewModel;\r\n if ((viewPortPlan.strategy === activationStrategy.invokeLifecycle\r\n || viewPortPlan.strategy === activationStrategy.replace)\r\n && callbackName in viewModel) {\r\n list.push({\r\n viewModel: viewModel,\r\n lifecycleArgs: viewPortInstruction.lifecycleArgs,\r\n router: router\r\n });\r\n }\r\n var childNavInstruction = viewPortPlan.childNavigationInstruction;\r\n if (childNavInstruction) {\r\n findActivatable(childNavInstruction, callbackName, list, viewPortComponent.childRouter || router);\r\n }\r\n });\r\n return list;\r\n};\r\nvar shouldContinue = function (output, router) {\r\n if (output instanceof Error) {\r\n return false;\r\n }\r\n if (isNavigationCommand(output)) {\r\n if (typeof output.setRouter === 'function') {\r\n output.setRouter(router);\r\n }\r\n return !!output.shouldContinueProcessing;\r\n }\r\n if (output === undefined) {\r\n return true;\r\n }\r\n return output;\r\n};\r\n/**\r\n * wraps a subscription, allowing unsubscribe calls even if\r\n * the first value comes synchronously\r\n */\r\nvar SafeSubscription = /** @class */ (function () {\r\n function SafeSubscription(subscriptionFunc) {\r\n this._subscribed = true;\r\n this._subscription = subscriptionFunc(this);\r\n if (!this._subscribed) {\r\n this.unsubscribe();\r\n }\r\n }\r\n Object.defineProperty(SafeSubscription.prototype, \"subscribed\", {\r\n get: function () {\r\n return this._subscribed;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n SafeSubscription.prototype.unsubscribe = function () {\r\n if (this._subscribed && this._subscription) {\r\n this._subscription.unsubscribe();\r\n }\r\n this._subscribed = false;\r\n };\r\n return SafeSubscription;\r\n}());\r\n/**\r\n * A function to process return value from `activate`/`canActivate` steps\r\n * Supports observable/promise\r\n *\r\n * For observable, resolve at first next() or on complete()\r\n */\r\nvar processPotential = function (obj, resolve, reject) {\r\n // if promise like\r\n if (obj && typeof obj.then === 'function') {\r\n return Promise.resolve(obj).then(resolve).catch(reject);\r\n }\r\n // if observable\r\n if (obj && typeof obj.subscribe === 'function') {\r\n var obs_1 = obj;\r\n return new SafeSubscription(function (sub) { return obs_1.subscribe({\r\n next: function () {\r\n if (sub.subscribed) {\r\n sub.unsubscribe();\r\n resolve(obj);\r\n }\r\n },\r\n error: function (error) {\r\n if (sub.subscribed) {\r\n sub.unsubscribe();\r\n reject(error);\r\n }\r\n },\r\n complete: function () {\r\n if (sub.subscribed) {\r\n sub.unsubscribe();\r\n resolve(obj);\r\n }\r\n }\r\n }); });\r\n }\r\n // else just resolve\r\n try {\r\n return resolve(obj);\r\n }\r\n catch (error) {\r\n return reject(error);\r\n }\r\n};\n\n/**\r\n * A pipeline step responsible for finding and activating method `canDeactivate` on a view model of a route\r\n */\r\nvar CanDeactivatePreviousStep = /** @class */ (function () {\r\n function CanDeactivatePreviousStep() {\r\n }\r\n CanDeactivatePreviousStep.prototype.run = function (navigationInstruction, next) {\r\n return processDeactivatable(navigationInstruction, 'canDeactivate', next);\r\n };\r\n return CanDeactivatePreviousStep;\r\n}());\r\n/**\r\n * A pipeline step responsible for finding and activating method `canActivate` on a view model of a route\r\n */\r\nvar CanActivateNextStep = /** @class */ (function () {\r\n function CanActivateNextStep() {\r\n }\r\n CanActivateNextStep.prototype.run = function (navigationInstruction, next) {\r\n return processActivatable(navigationInstruction, 'canActivate', next);\r\n };\r\n return CanActivateNextStep;\r\n}());\r\n/**\r\n * A pipeline step responsible for finding and activating method `deactivate` on a view model of a route\r\n */\r\nvar DeactivatePreviousStep = /** @class */ (function () {\r\n function DeactivatePreviousStep() {\r\n }\r\n DeactivatePreviousStep.prototype.run = function (navigationInstruction, next) {\r\n return processDeactivatable(navigationInstruction, 'deactivate', next, true);\r\n };\r\n return DeactivatePreviousStep;\r\n}());\r\n/**\r\n * A pipeline step responsible for finding and activating method `activate` on a view model of a route\r\n */\r\nvar ActivateNextStep = /** @class */ (function () {\r\n function ActivateNextStep() {\r\n }\r\n ActivateNextStep.prototype.run = function (navigationInstruction, next) {\r\n return processActivatable(navigationInstruction, 'activate', next, true);\r\n };\r\n return ActivateNextStep;\r\n}());\n\n/**\r\n * A multi-slots Pipeline Placeholder Step for hooking into a pipeline execution\r\n */\r\nvar PipelineSlot = /** @class */ (function () {\r\n function PipelineSlot(container, name, alias) {\r\n this.steps = [];\r\n this.container = container;\r\n this.slotName = name;\r\n this.slotAlias = alias;\r\n }\r\n PipelineSlot.prototype.getSteps = function () {\r\n var _this = this;\r\n return this.steps.map(function (x) { return _this.container.get(x); });\r\n };\r\n return PipelineSlot;\r\n}());\r\n/**\r\n * Class responsible for creating the navigation pipeline.\r\n */\r\nvar PipelineProvider = /** @class */ (function () {\r\n function PipelineProvider(container) {\r\n this.container = container;\r\n this.steps = [\r\n BuildNavigationPlanStep,\r\n CanDeactivatePreviousStep,\r\n LoadRouteStep,\r\n createPipelineSlot(container, \"authorize\" /* Authorize */),\r\n CanActivateNextStep,\r\n createPipelineSlot(container, \"preActivate\" /* PreActivate */, 'modelbind'),\r\n // NOTE: app state changes start below - point of no return\r\n DeactivatePreviousStep,\r\n ActivateNextStep,\r\n createPipelineSlot(container, \"preRender\" /* PreRender */, 'precommit'),\r\n CommitChangesStep,\r\n createPipelineSlot(container, \"postRender\" /* PostRender */, 'postcomplete')\r\n ];\r\n }\r\n /**@internal */\r\n PipelineProvider.inject = function () { return [Container]; };\r\n /**\r\n * Create the navigation pipeline.\r\n */\r\n PipelineProvider.prototype.createPipeline = function (useCanDeactivateStep) {\r\n var _this = this;\r\n if (useCanDeactivateStep === void 0) { useCanDeactivateStep = true; }\r\n var pipeline = new Pipeline();\r\n this.steps.forEach(function (step) {\r\n if (useCanDeactivateStep || step !== CanDeactivatePreviousStep) {\r\n pipeline.addStep(_this.container.get(step));\r\n }\r\n });\r\n return pipeline;\r\n };\r\n /**@internal */\r\n PipelineProvider.prototype._findStep = function (name) {\r\n // Steps that are not PipelineSlots are constructor functions, and they will automatically fail. Probably.\r\n return this.steps.find(function (x) { return x.slotName === name || x.slotAlias === name; });\r\n };\r\n /**\r\n * Adds a step into the pipeline at a known slot location.\r\n */\r\n PipelineProvider.prototype.addStep = function (name, step) {\r\n var found = this._findStep(name);\r\n if (found) {\r\n var slotSteps = found.steps;\r\n // prevent duplicates\r\n if (!slotSteps.includes(step)) {\r\n slotSteps.push(step);\r\n }\r\n }\r\n else {\r\n throw new Error(\"Invalid pipeline slot name: \" + name + \".\");\r\n }\r\n };\r\n /**\r\n * Removes a step from a slot in the pipeline\r\n */\r\n PipelineProvider.prototype.removeStep = function (name, step) {\r\n var slot = this._findStep(name);\r\n if (slot) {\r\n var slotSteps = slot.steps;\r\n slotSteps.splice(slotSteps.indexOf(step), 1);\r\n }\r\n };\r\n /**\r\n * Clears all steps from a slot in the pipeline\r\n * @internal\r\n */\r\n PipelineProvider.prototype._clearSteps = function (name) {\r\n if (name === void 0) { name = ''; }\r\n var slot = this._findStep(name);\r\n if (slot) {\r\n slot.steps = [];\r\n }\r\n };\r\n /**\r\n * Resets all pipeline slots\r\n */\r\n PipelineProvider.prototype.reset = function () {\r\n this._clearSteps(\"authorize\" /* Authorize */);\r\n this._clearSteps(\"preActivate\" /* PreActivate */);\r\n this._clearSteps(\"preRender\" /* PreRender */);\r\n this._clearSteps(\"postRender\" /* PostRender */);\r\n };\r\n return PipelineProvider;\r\n}());\r\n/**@internal */\r\nvar createPipelineSlot = function (container, name, alias) {\r\n return new PipelineSlot(container, name, alias);\r\n};\n\nvar logger = getLogger('app-router');\r\n/**\r\n * The main application router.\r\n */\r\nvar AppRouter = /** @class */ (function (_super) {\r\n __extends(AppRouter, _super);\r\n function AppRouter(container, history, pipelineProvider, events) {\r\n var _this = _super.call(this, container, history) || this;\r\n _this.pipelineProvider = pipelineProvider;\r\n _this.events = events;\r\n return _this;\r\n }\r\n /**@internal */\r\n AppRouter.inject = function () { return [Container, History, PipelineProvider, EventAggregator]; };\r\n /**\r\n * Fully resets the router's internal state. Primarily used internally by the framework when multiple calls to setRoot are made.\r\n * Use with caution (actually, avoid using this). Do not use this to simply change your navigation model.\r\n */\r\n AppRouter.prototype.reset = function () {\r\n _super.prototype.reset.call(this);\r\n this.maxInstructionCount = 10;\r\n if (!this._queue) {\r\n this._queue = [];\r\n }\r\n else {\r\n this._queue.length = 0;\r\n }\r\n };\r\n /**\r\n * Loads the specified URL.\r\n *\r\n * @param url The URL fragment to load.\r\n */\r\n AppRouter.prototype.loadUrl = function (url) {\r\n var _this = this;\r\n return this\r\n ._createNavigationInstruction(url)\r\n .then(function (instruction) { return _this._queueInstruction(instruction); })\r\n .catch(function (error) {\r\n logger.error(error);\r\n restorePreviousLocation(_this);\r\n });\r\n };\r\n /**\r\n * Registers a viewPort to be used as a rendering target for activated routes.\r\n *\r\n * @param viewPort The viewPort. This is typically a element in Aurelia default impl\r\n * @param name The name of the viewPort. 'default' if unspecified.\r\n */\r\n AppRouter.prototype.registerViewPort = function (viewPort, name) {\r\n var _this = this;\r\n // having strong typing without changing public API\r\n var $viewPort = viewPort;\r\n _super.prototype.registerViewPort.call(this, $viewPort, name);\r\n // beside adding viewport to the registry of this instance\r\n // AppRouter also configure routing/history to start routing functionality\r\n // There are situation where there are more than 1 element at root view\r\n // in that case, still only activate once via the following guard\r\n if (!this.isActive) {\r\n var viewModel_1 = this._findViewModel($viewPort);\r\n if ('configureRouter' in viewModel_1) {\r\n // If there are more than one element at root view\r\n // use this flag to guard against configure method being invoked multiple times\r\n // this flag is set inside method configure\r\n if (!this.isConfigured) {\r\n // replace the real resolve with a noop to guarantee that any action in base class Router\r\n // won't resolve the configurePromise prematurely\r\n var resolveConfiguredPromise_1 = this._resolveConfiguredPromise;\r\n this._resolveConfiguredPromise = function () { };\r\n return this\r\n .configure(function (config) {\r\n return Promise\r\n .resolve(viewModel_1.configureRouter(config, _this))\r\n // an issue with configure interface. Should be fixed there\r\n // todo: fix this via configure interface in router\r\n .then(function () { return config; });\r\n })\r\n .then(function () {\r\n _this.activate();\r\n resolveConfiguredPromise_1();\r\n });\r\n }\r\n }\r\n else {\r\n this.activate();\r\n }\r\n }\r\n // when a viewport is added dynamically to a root view that is already activated\r\n // just process the navigation instruction\r\n else {\r\n this._dequeueInstruction();\r\n }\r\n return Promise.resolve();\r\n };\r\n /**\r\n * Activates the router. This instructs the router to begin listening for history changes and processing instructions.\r\n *\r\n * @params options The set of options to activate the router with.\r\n */\r\n AppRouter.prototype.activate = function (options) {\r\n if (this.isActive) {\r\n return;\r\n }\r\n this.isActive = true;\r\n // route handler property is responsible for handling url change\r\n // the interface of aurelia-history isn't clear on this perspective\r\n this.options = Object.assign({ routeHandler: this.loadUrl.bind(this) }, this.options, options);\r\n this.history.activate(this.options);\r\n this._dequeueInstruction();\r\n };\r\n /**\r\n * Deactivates the router.\r\n */\r\n AppRouter.prototype.deactivate = function () {\r\n this.isActive = false;\r\n this.history.deactivate();\r\n };\r\n /**@internal */\r\n AppRouter.prototype._queueInstruction = function (instruction) {\r\n var _this = this;\r\n return new Promise(function (resolve) {\r\n instruction.resolve = resolve;\r\n _this._queue.unshift(instruction);\r\n _this._dequeueInstruction();\r\n });\r\n };\r\n /**@internal */\r\n AppRouter.prototype._dequeueInstruction = function (instructionCount) {\r\n var _this = this;\r\n if (instructionCount === void 0) { instructionCount = 0; }\r\n return Promise.resolve().then(function () {\r\n if (_this.isNavigating && !instructionCount) {\r\n // ts complains about inconsistent returns without void 0\r\n return void 0;\r\n }\r\n var instruction = _this._queue.shift();\r\n _this._queue.length = 0;\r\n if (!instruction) {\r\n // ts complains about inconsistent returns without void 0\r\n return void 0;\r\n }\r\n _this.isNavigating = true;\r\n var navtracker = _this.history.getState('NavigationTracker');\r\n var currentNavTracker = _this.currentNavigationTracker;\r\n if (!navtracker && !currentNavTracker) {\r\n _this.isNavigatingFirst = true;\r\n _this.isNavigatingNew = true;\r\n }\r\n else if (!navtracker) {\r\n _this.isNavigatingNew = true;\r\n }\r\n else if (!currentNavTracker) {\r\n _this.isNavigatingRefresh = true;\r\n }\r\n else if (currentNavTracker < navtracker) {\r\n _this.isNavigatingForward = true;\r\n }\r\n else if (currentNavTracker > navtracker) {\r\n _this.isNavigatingBack = true;\r\n }\r\n if (!navtracker) {\r\n navtracker = Date.now();\r\n _this.history.setState('NavigationTracker', navtracker);\r\n }\r\n _this.currentNavigationTracker = navtracker;\r\n instruction.previousInstruction = _this.currentInstruction;\r\n var maxInstructionCount = _this.maxInstructionCount;\r\n if (!instructionCount) {\r\n _this.events.publish(\"router:navigation:processing\" /* Processing */, { instruction: instruction });\r\n }\r\n else if (instructionCount === maxInstructionCount - 1) {\r\n logger.error(instructionCount + 1 + \" navigation instructions have been attempted without success. Restoring last known good location.\");\r\n restorePreviousLocation(_this);\r\n return _this._dequeueInstruction(instructionCount + 1);\r\n }\r\n else if (instructionCount > maxInstructionCount) {\r\n throw new Error('Maximum navigation attempts exceeded. Giving up.');\r\n }\r\n var pipeline = _this.pipelineProvider.createPipeline(!_this.couldDeactivate);\r\n return pipeline\r\n .run(instruction)\r\n .then(function (result) { return processResult(instruction, result, instructionCount, _this); })\r\n .catch(function (error) {\r\n return { output: error instanceof Error ? error : new Error(error) };\r\n })\r\n .then(function (result) { return resolveInstruction(instruction, result, !!instructionCount, _this); });\r\n });\r\n };\r\n /**@internal */\r\n AppRouter.prototype._findViewModel = function (viewPort) {\r\n if (this.container.viewModel) {\r\n return this.container.viewModel;\r\n }\r\n if (viewPort.container) {\r\n var container = viewPort.container;\r\n while (container) {\r\n if (container.viewModel) {\r\n this.container.viewModel = container.viewModel;\r\n return container.viewModel;\r\n }\r\n container = container.parent;\r\n }\r\n }\r\n return undefined;\r\n };\r\n return AppRouter;\r\n}(Router));\r\nvar processResult = function (instruction, result, instructionCount, router) {\r\n if (!(result && 'completed' in result && 'output' in result)) {\r\n result = result || {};\r\n result.output = new Error(\"Expected router pipeline to return a navigation result, but got [\" + JSON.stringify(result) + \"] instead.\");\r\n }\r\n var finalResult = null;\r\n var navigationCommandResult = null;\r\n if (isNavigationCommand(result.output)) {\r\n navigationCommandResult = result.output.navigate(router);\r\n }\r\n else {\r\n finalResult = result;\r\n if (!result.completed) {\r\n if (result.output instanceof Error) {\r\n logger.error(result.output.toString());\r\n }\r\n restorePreviousLocation(router);\r\n }\r\n }\r\n return Promise.resolve(navigationCommandResult)\r\n .then(function (_) { return router._dequeueInstruction(instructionCount + 1); })\r\n .then(function (innerResult) { return finalResult || innerResult || result; });\r\n};\r\nvar resolveInstruction = function (instruction, result, isInnerInstruction, router) {\r\n instruction.resolve(result);\r\n var eventAggregator = router.events;\r\n var eventArgs = { instruction: instruction, result: result };\r\n if (!isInnerInstruction) {\r\n router.isNavigating = false;\r\n router.isExplicitNavigation = false;\r\n router.isExplicitNavigationBack = false;\r\n router.isNavigatingFirst = false;\r\n router.isNavigatingNew = false;\r\n router.isNavigatingRefresh = false;\r\n router.isNavigatingForward = false;\r\n router.isNavigatingBack = false;\r\n router.couldDeactivate = false;\r\n var eventName = void 0;\r\n if (result.output instanceof Error) {\r\n eventName = \"router:navigation:error\" /* Error */;\r\n }\r\n else if (!result.completed) {\r\n eventName = \"router:navigation:canceled\" /* Canceled */;\r\n }\r\n else {\r\n var queryString = instruction.queryString ? ('?' + instruction.queryString) : '';\r\n router.history.previousLocation = instruction.fragment + queryString;\r\n eventName = \"router:navigation:success\" /* Success */;\r\n }\r\n eventAggregator.publish(eventName, eventArgs);\r\n eventAggregator.publish(\"router:navigation:complete\" /* Complete */, eventArgs);\r\n }\r\n else {\r\n eventAggregator.publish(\"router:navigation:child:complete\" /* ChildComplete */, eventArgs);\r\n }\r\n return result;\r\n};\r\nvar restorePreviousLocation = function (router) {\r\n var previousLocation = router.history.previousLocation;\r\n if (previousLocation) {\r\n router.navigate(previousLocation, { trigger: false, replace: true });\r\n }\r\n else if (router.fallbackRoute) {\r\n router.navigate(router.fallbackRoute, { trigger: true, replace: true });\r\n }\r\n else {\r\n logger.error('Router navigation failed, and no previous location or fallbackRoute could be restored.');\r\n }\r\n};\n\n/**\r\n* The status of a Pipeline.\r\n*/\r\nvar PipelineStatus;\r\n(function (PipelineStatus) {\r\n PipelineStatus[\"Completed\"] = \"completed\";\r\n PipelineStatus[\"Canceled\"] = \"canceled\";\r\n PipelineStatus[\"Rejected\"] = \"rejected\";\r\n PipelineStatus[\"Running\"] = \"running\";\r\n})(PipelineStatus || (PipelineStatus = {}));\n\n/**\r\n * A list of known router events used by the Aurelia router\r\n * to signal the pipeline has come to a certain state\r\n */\r\n// const enum is preserved in tsconfig\r\nvar RouterEvent;\r\n(function (RouterEvent) {\r\n RouterEvent[\"Processing\"] = \"router:navigation:processing\";\r\n RouterEvent[\"Error\"] = \"router:navigation:error\";\r\n RouterEvent[\"Canceled\"] = \"router:navigation:canceled\";\r\n RouterEvent[\"Complete\"] = \"router:navigation:complete\";\r\n RouterEvent[\"Success\"] = \"router:navigation:success\";\r\n RouterEvent[\"ChildComplete\"] = \"router:navigation:child:complete\";\r\n})(RouterEvent || (RouterEvent = {}));\n\n/**\r\n * Available pipeline slot names to insert interceptor into router pipeline\r\n */\r\n// const enum is preserved in tsconfig\r\nvar PipelineSlotName;\r\n(function (PipelineSlotName) {\r\n /**\r\n * Authorization slot. Invoked early in the pipeline,\r\n * before `canActivate` hook of incoming route\r\n */\r\n PipelineSlotName[\"Authorize\"] = \"authorize\";\r\n /**\r\n * Pre-activation slot. Invoked early in the pipeline,\r\n * Invoked timing:\r\n * - after Authorization slot\r\n * - after canActivate hook on new view model\r\n * - before deactivate hook on old view model\r\n * - before activate hook on new view model\r\n */\r\n PipelineSlotName[\"PreActivate\"] = \"preActivate\";\r\n /**\r\n * Pre-render slot. Invoked later in the pipeline\r\n * Invokcation timing:\r\n * - after activate hook on new view model\r\n * - before commit step on new navigation instruction\r\n */\r\n PipelineSlotName[\"PreRender\"] = \"preRender\";\r\n /**\r\n * Post-render slot. Invoked last in the pipeline\r\n */\r\n PipelineSlotName[\"PostRender\"] = \"postRender\";\r\n})(PipelineSlotName || (PipelineSlotName = {}));\n\nexport { ActivateNextStep, AppRouter, BuildNavigationPlanStep, CanActivateNextStep, CanDeactivatePreviousStep, CommitChangesStep, DeactivatePreviousStep, LoadRouteStep, NavModel, NavigationInstruction, Pipeline, PipelineProvider, PipelineSlotName, PipelineStatus, Redirect, RedirectToRoute, RouteLoader, Router, RouterConfiguration, RouterEvent, activationStrategy, isNavigationCommand };\n//# sourceMappingURL=aurelia-router.js.map\n"],"names":["Symbol","iterator","String","prototype","endsWith","e","searchString","position","subjectString","this","toString","isFinite","Math","floor","length","lastIndex","indexOf","startsWith","substr","__decorate","decorators","target","key","desc","d","c","arguments","r","Object","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","document","global","validPositions","beforebegin","afterbegin","beforeend","afterend","Portal","viewFactory","originalViewslot","strict","initialRender","currentTarget","unset","Portal_1","getTarget","context","queryContext","querySelector","Element","createViewSlot","toLowerCase","Error","anchorCommentHolder","createElement","normalizedPosition","insertAdjacentElement","anchorComment","createComment","parentNode","replaceChild","bind","bindingContext","overrideContext","callbackContext","view","create","shouldInitRender","add","remove","attached","isAttached","render","detached","viewSlot","unbind","renderContext","body","_this","oldTarget","oldViewSlot","addAction","Promise","resolve","activating","call","then","removed","activated","deactivating","deactivated","targetChanged","inject","primaryProperty","defaultValue","changeHandler","configure","frameworkConfig","globalResources","State","charSpec","nextStates","get","_iterator","_isArray","Array","isArray","_i","_ref","next","done","value","child","validChars","invalidChars","put","state","push","repeat","match","ch","results","l","undefined","escapeRegex","RegExp","join","StaticSegment","string","caseSensitive","eachChar","callback","s","ii","toUpperCase","regex","replace","generate","DynamicSegment","name","optional","params","consumed","StarSegment","EpsilonSegment","RouteRecognizer","rootState","names","routes","Map","route","currentState","skippableStates","types","statics","dynamics","stars","routeName","handler","isEmpty","segments","normalizedRoute","charAt","splitRoute","split","segment","_match","_name","parse","path","_addSegment","addSegment","firstState","nextState","j","jj","handlers","set","routeNames","_i2","_i3","forEach","getRoute","nameOrRoute","handlersFor","concat","hasRoute","generationUsesHref","href","routeParams","assign","output","segmentValue","param","queryString","recognize","states","queryParams","isSlashDropped","normalizedPath","queryStart","decodeURI","pathLen","recognizeChar","solutions","_i4","_l","sort","a","b","sortSolutions","source","slice","captures","currentCapture","result","RecognizeResults","_handler","_names","_params","m","isDynamic","findHandler","splice","apply","extendStatics","setPrototypeOf","__proto__","p","hasOwnProperty","NavigationInstruction","init","plan","options","viewPortInstructions","ancestorParams","current","currentParams","config","hasChildRouter","getWildCardName","unshift","parentInstruction","allParams","lifecycleArgs","getAllInstructions","instructions","childInstruction","childNavigationInstruction","getAllPreviousInstructions","map","previousInstruction","filter","addViewPortInstruction","nameOrInitOptions","strategy","moduleId","component","viewPortInstruction","viewPortName","currentViewPort","childRouter","configRoute","wildcardIndex","lastIndexOf","getWildcardPath","wildcardName","getBaseUrl","$encodeURI","encodeURI","fragment","nonEmptyRoute","router","find","_commitChanges","waitToSwap","currentInstruction","navModel","isActive","refreshNavigation","loads","delaySwaps","_loop_1","viewPort","viewPorts","childNavInstruction","parentCatchHandler","process","all","x","swap","prune","_updateTitle","title","_buildTitle","titleSeparator","history","setTitle","separator","childTitles","navModelTitle","instructionRouter","transformTitle","child_nav_instruction","childTitle","instruction","NavModel","relativeHref","settings","updateTitle","_normalizeAbsolutePath","hasPushState","absolute","substring","_createRootedPath","baseUrl","isAbsoluteUrl","test","_ensureArrayWithSingleRoutePerConfig","routeConfigs","isRootedPath","RouterConfiguration","pipelineSteps","addPipelineStep","step","addAuthorizeStep","addPreActivateStep","addPreRenderStep","addPostRenderStep","fallbackRoute","_fallbackRoute","mapRoute","useViewPortDefaults","viewPortConfig","viewPortDefaults","routeConfig","createNavModel","addRoute","mapUnknownRoutes","unknownRouteConfig","exportToRouter","_a","handleUnknownRoutes","pipelineStepCount","isRoot","pipelineProvider","_b","name_1","addStep","Router","container","parent","reset","isConfigured","isNavigating","isExplicitNavigation","isExplicitNavigationBack","isNavigatingFirst","isNavigatingNew","isNavigatingRefresh","isNavigatingForward","isNavigatingBack","couldDeactivate","navigation","_fallbackOrder","_recognizer","_childRecognizer","_configuredPromise","_resolveConfiguredPromise","enumerable","configurable","registerViewPort","ensureConfigured","callbackOrConfig","navigate","_resolveUrl","_hasPushState","navigateToRoute","navigateBack","createChild","recognizer","rootedPath","getAbsoluteRoot","order","nav","validateRouteConfig","navigationStrategy","withChild","JSON","stringify","hasOwnRoute","catchAllHandler","_createRouteConfig","parentRouter","length_1","$viewPortDefaults","_refreshBaseUrl","generateBaseUrl","_createNavigationInstruction","url","queryIndex","urlRecognizationResults","instructionInit","compareQueryParams","first","evaluateNavigationStrategy","_parentCatchAllHandler","newParentInstruction","_findParentInstructionFromRouter","reject","evaluator","createCompletionHandler","status","completed","Pipeline","steps","run","getSteps","nextFn","index","complete","currentStep","cancel","createNextFn","isNavigationCommand","obj","Redirect","trigger","shouldContinueProcessing","setRouter","appRouter","useAppRouter","_buildNavigationPlan","forceLifecycleMinimum","buildRedirectPlan","prevInstruction","defaultViewPortConfigs","buildTransitionPlans","viewPortPlans","viewPortConfigs","RedirectToRoute","InternalActivationStrategy","redirect","redirectInstruction","originalInstructionParams","redirectInstructionParams","val","redirectLocation","newInstructionConfig","hasNewParams","hasDifferentParameterValues","pending","previousViewPortInstructions","prevViewPortInstruction","prevViewPortComponent","newInstructionViewPortConfigs","nextViewPortConfig","viewPortActivationStrategy","determineActivationStrategy","viewPortPlan","prevComponent","prevModuleId","task","childPlan","currentNavInstruction","newViewPortConfig","prevViewPortViewModel","viewModel","activationStrategy","prev","prevParams","nextParams","nextWildCardName","prevQueryParams","nextQueryParams","BuildNavigationPlanStep","navigationInstruction","catch","loadNewRoute","routeLoader","loadPromises","determineLoadingPlans","loadingPlan","loadRoute","loadingPlans","planConfig","loadComponent","childContainer","childRouter_1","getChildRouter","configureRouter","RouteLoader","LoadRouteStep","CommitChangesStep","PipelineStatus","RouterEvent","PipelineSlotName","noChange","invokeLifecycle","processDeactivatable","callbackName","ignoreResult","infos","findDeactivatable","inspect","shouldContinue","iterate","processPotential","error","list","addPreviousDeactivatable","prevViewModel","processActivatable","findActivatable","current_1","keys","viewPortComponent","SafeSubscription","subscriptionFunc","_subscribed","_subscription","unsubscribe","subscribe","obs_1","sub","subscribed","CanDeactivatePreviousStep","CanActivateNextStep","DeactivatePreviousStep","ActivateNextStep","PipelineSlot","alias","slotName","slotAlias","PipelineProvider","createPipelineSlot","Container","createPipeline","useCanDeactivateStep","pipeline","_findStep","found","slotSteps","includes","removeStep","slot","_clearSteps","logger","getLogger","AppRouter","_super","events","__","constructor","__extends","EventAggregator","maxInstructionCount","_queue","loadUrl","_queueInstruction","restorePreviousLocation","$viewPort","_dequeueInstruction","viewModel_1","_findViewModel","resolveConfiguredPromise_1","activate","routeHandler","deactivate","instructionCount","shift","navtracker","getState","currentNavTracker","currentNavigationTracker","Date","now","setState","publish","processResult","resolveInstruction","finalResult","navigationCommandResult","_","innerResult","isInnerInstruction","eventAggregator","eventArgs","eventName","previousLocation"],"sourceRoot":""}