{"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","webpack://iadviser/./node_modules/aurelia-store/dist/native-modules/aurelia-store.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","import { BehaviorSubject, Subscription, Observable } from 'rxjs';\nimport { Container } from 'aurelia-dependency-injection';\nimport { Logger, getLogger } from 'aurelia-logging';\nimport { PLATFORM } from 'aurelia-pal';\nimport { skip, take, delay } from 'rxjs/operators';\n\n/* istanbul ignore next */\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/entries#Polyfill\nif (!Object.entries) {\n Object.entries = function (obj) {\n var ownProps = Object.keys(obj), i = ownProps.length, resArray = new Array(i); // preallocate the Array\n while (i--) {\n resArray[i] = [ownProps[i], obj[ownProps[i]]];\n }\n return resArray;\n };\n}\n\n/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\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 (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nfunction __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\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}\r\n\r\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\n\r\nfunction __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nfunction __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nfunction __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\n\nfunction jump(state, n) {\n if (!isStateHistory(state)) {\n return state;\n }\n if (n > 0)\n return jumpToFuture(state, n - 1);\n if (n < 0)\n return jumpToPast(state, state.past.length + n);\n return state;\n}\nfunction jumpToFuture(state, index) {\n if (index < 0 || index >= state.future.length) {\n return state;\n }\n var past = state.past, future = state.future, present = state.present;\n var newPast = __spreadArray(__spreadArray(__spreadArray([], past, true), [present], false), future.slice(0, index), true);\n var newPresent = future[index];\n var newFuture = future.slice(index + 1);\n return { past: newPast, present: newPresent, future: newFuture };\n}\nfunction jumpToPast(state, index) {\n if (index < 0 || index >= state.past.length) {\n return state;\n }\n var past = state.past, future = state.future, present = state.present;\n var newPast = past.slice(0, index);\n var newFuture = __spreadArray(__spreadArray(__spreadArray([], past.slice(index + 1), true), [present], false), future, true);\n var newPresent = past[index];\n return { past: newPast, present: newPresent, future: newFuture };\n}\nfunction nextStateHistory(presentStateHistory, nextPresent) {\n return Object.assign({}, presentStateHistory, {\n past: __spreadArray(__spreadArray([], presentStateHistory.past, true), [presentStateHistory.present], false),\n present: nextPresent,\n future: []\n });\n}\nfunction applyLimits(state, limit) {\n if (isStateHistory(state)) {\n if (state.past.length > limit) {\n state.past = state.past.slice(state.past.length - limit);\n }\n if (state.future.length > limit) {\n state.future = state.future.slice(0, limit);\n }\n }\n return state;\n}\nfunction isStateHistory(history) {\n return typeof history.present !== \"undefined\" &&\n typeof history.future !== \"undefined\" &&\n typeof history.past !== \"undefined\" &&\n Array.isArray(history.future) &&\n Array.isArray(history.past);\n}\n\nvar DEFAULT_LOCAL_STORAGE_KEY = \"aurelia-store-state\";\nvar MiddlewarePlacement;\n(function (MiddlewarePlacement) {\n MiddlewarePlacement[\"Before\"] = \"before\";\n MiddlewarePlacement[\"After\"] = \"after\";\n})(MiddlewarePlacement || (MiddlewarePlacement = {}));\nfunction logMiddleware(state, _, settings) {\n var logType = settings && settings.logType && console.hasOwnProperty(settings.logType) ? settings.logType : \"log\";\n console[logType](\"New state: \", state);\n}\nfunction localStorageMiddleware(state, _, settings) {\n if (PLATFORM.global.localStorage) {\n var key = settings && settings.key || DEFAULT_LOCAL_STORAGE_KEY;\n PLATFORM.global.localStorage.setItem(key, JSON.stringify(state));\n }\n}\nfunction rehydrateFromLocalStorage(state, key) {\n if (!PLATFORM.global.localStorage) {\n return state;\n }\n var storedState = PLATFORM.global.localStorage.getItem(key || DEFAULT_LOCAL_STORAGE_KEY);\n if (!storedState) {\n return state;\n }\n try {\n return JSON.parse(storedState);\n }\n catch (e) { }\n return state;\n}\n\nvar LogLevel;\n(function (LogLevel) {\n LogLevel[\"trace\"] = \"trace\";\n LogLevel[\"debug\"] = \"debug\";\n LogLevel[\"info\"] = \"info\";\n LogLevel[\"log\"] = \"log\";\n LogLevel[\"warn\"] = \"warn\";\n LogLevel[\"error\"] = \"error\";\n})(LogLevel || (LogLevel = {}));\nvar LoggerIndexed = /** @class */ (function (_super) {\n __extends(LoggerIndexed, _super);\n function LoggerIndexed() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return LoggerIndexed;\n}(Logger));\nfunction getLogType(options, definition, defaultLevel) {\n if (definition &&\n options.logDefinitions &&\n options.logDefinitions.hasOwnProperty(definition) &&\n options.logDefinitions[definition] &&\n Object.values(LogLevel).includes(options.logDefinitions[definition])) {\n return options.logDefinitions[definition];\n }\n return defaultLevel;\n}\n\nvar PerformanceMeasurement;\n(function (PerformanceMeasurement) {\n PerformanceMeasurement[\"StartEnd\"] = \"startEnd\";\n PerformanceMeasurement[\"All\"] = \"all\";\n})(PerformanceMeasurement || (PerformanceMeasurement = {}));\nvar UnregisteredActionError = /** @class */ (function (_super) {\n __extends(UnregisteredActionError, _super);\n function UnregisteredActionError(reducer) {\n return _super.call(this, \"Tried to dispatch an unregistered action \".concat(reducer && (typeof reducer === \"string\" ? reducer : reducer.name))) || this;\n }\n return UnregisteredActionError;\n}(Error));\nvar Store = /** @class */ (function () {\n function Store(initialState, options) {\n this.initialState = initialState;\n this.logger = getLogger(\"aurelia-store\");\n this.devToolsAvailable = false;\n this.actions = new Map();\n this.middlewares = new Map();\n this._markNames = new Set();\n this._measureNames = new Set();\n this.dispatchQueue = [];\n this.options = options || {};\n var isUndoable = this.options.history && this.options.history.undoable === true;\n this._state = new BehaviorSubject(initialState);\n this.state = this._state.asObservable();\n if (!this.options.devToolsOptions || this.options.devToolsOptions.disable !== true) {\n this.setupDevTools();\n }\n if (isUndoable) {\n this.registerHistoryMethods();\n }\n }\n Store.prototype.registerMiddleware = function (reducer, placement, settings) {\n this.middlewares.set(reducer, { placement: placement, settings: settings });\n };\n Store.prototype.unregisterMiddleware = function (reducer) {\n if (this.middlewares.has(reducer)) {\n this.middlewares.delete(reducer);\n }\n };\n Store.prototype.isMiddlewareRegistered = function (middleware) {\n return this.middlewares.has(middleware);\n };\n Store.prototype.registerAction = function (name, reducer) {\n if (reducer.length === 0) {\n throw new Error(\"The reducer is expected to have one or more parameters, where the first will be the present state\");\n }\n this.actions.set(reducer, { type: name });\n };\n Store.prototype.unregisterAction = function (reducer) {\n if (this.actions.has(reducer)) {\n this.actions.delete(reducer);\n }\n };\n Store.prototype.isActionRegistered = function (reducer) {\n if (typeof reducer === \"string\") {\n return Array.from(this.actions).find(function (action) { return action[1].type === reducer; }) !== undefined;\n }\n return this.actions.has(reducer);\n };\n Store.prototype.resetToState = function (state) {\n this._state.next(state);\n };\n Store.prototype.dispatch = function (reducer) {\n var params = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n params[_i - 1] = arguments[_i];\n }\n var action = this.lookupAction(reducer);\n if (!action) {\n return Promise.reject(new UnregisteredActionError(reducer));\n }\n return this.queueDispatch([{\n reducer: action,\n params: params\n }]);\n };\n Store.prototype.pipe = function (reducer) {\n var _this = this;\n var params = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n params[_i - 1] = arguments[_i];\n }\n var pipeline = [];\n var dispatchPipe = {\n dispatch: function () { return _this.queueDispatch(pipeline); },\n pipe: function (nextReducer) {\n var nextParams = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n nextParams[_i - 1] = arguments[_i];\n }\n var action = _this.lookupAction(nextReducer);\n if (!action) {\n throw new UnregisteredActionError(reducer);\n }\n pipeline.push({ reducer: action, params: nextParams });\n return dispatchPipe;\n }\n };\n return dispatchPipe.pipe.apply(dispatchPipe, __spreadArray([reducer], params, false));\n };\n Store.prototype.lookupAction = function (reducer) {\n if (typeof reducer === \"string\") {\n var result = Array.from(this.actions).find(function (_a) {\n _a[0]; var action = _a[1];\n return action.type === reducer;\n });\n if (result) {\n return result[0];\n }\n }\n else if (this.actions.has(reducer)) {\n return reducer;\n }\n return undefined;\n };\n Store.prototype.queueDispatch = function (actions) {\n var _this = this;\n return new Promise(function (resolve, reject) {\n _this.dispatchQueue.push({ actions: actions, resolve: resolve, reject: reject });\n if (_this.dispatchQueue.length === 1) {\n _this.handleQueue();\n }\n });\n };\n Store.prototype.handleQueue = function () {\n return __awaiter(this, void 0, void 0, function () {\n var queueItem, e_1;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!(this.dispatchQueue.length > 0)) return [3 /*break*/, 5];\n queueItem = this.dispatchQueue[0];\n _a.label = 1;\n case 1:\n _a.trys.push([1, 3, , 4]);\n return [4 /*yield*/, this.internalDispatch(queueItem.actions)];\n case 2:\n _a.sent();\n queueItem.resolve();\n return [3 /*break*/, 4];\n case 3:\n e_1 = _a.sent();\n queueItem.reject(e_1);\n return [3 /*break*/, 4];\n case 4:\n this.dispatchQueue.shift();\n this.handleQueue();\n _a.label = 5;\n case 5: return [2 /*return*/];\n }\n });\n });\n };\n Store.prototype.internalDispatch = function (actions) {\n return __awaiter(this, void 0, void 0, function () {\n var unregisteredAction, pipedActions, callingAction, beforeMiddleswaresResult, result, _i, pipedActions_1, action, resultingState, measures, marks, totalDuration;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n unregisteredAction = actions.find(function (a) { return !_this.actions.has(a.reducer); });\n if (unregisteredAction) {\n throw new UnregisteredActionError(unregisteredAction.reducer);\n }\n this.mark(\"dispatch-start\");\n pipedActions = actions.map(function (a) { return ({\n type: _this.actions.get(a.reducer).type,\n params: a.params,\n reducer: a.reducer\n }); });\n callingAction = {\n name: pipedActions.map(function (a) { return a.type; }).join(\"->\"),\n params: pipedActions.reduce(function (p, a) { return p.concat(a.params); }, []),\n pipedActions: pipedActions.map(function (a) { return ({\n name: a.type,\n params: a.params\n }); })\n };\n if (this.options.logDispatchedActions) {\n this.logger[getLogType(this.options, \"dispatchedActions\", LogLevel.info)](\"Dispatching: \".concat(callingAction.name));\n }\n return [4 /*yield*/, this.executeMiddlewares(this._state.getValue(), MiddlewarePlacement.Before, callingAction)];\n case 1:\n beforeMiddleswaresResult = _a.sent();\n if (beforeMiddleswaresResult === false) {\n this.clearMarks();\n this.clearMeasures();\n return [2 /*return*/];\n }\n result = beforeMiddleswaresResult;\n _i = 0, pipedActions_1 = pipedActions;\n _a.label = 2;\n case 2:\n if (!(_i < pipedActions_1.length)) return [3 /*break*/, 5];\n action = pipedActions_1[_i];\n return [4 /*yield*/, action.reducer.apply(action, __spreadArray([result], action.params, false))];\n case 3:\n result = _a.sent();\n if (result === false) {\n this.clearMarks();\n this.clearMeasures();\n return [2 /*return*/];\n }\n this.mark(\"dispatch-after-reducer-\" + action.type);\n if (!result && typeof result !== \"object\") {\n throw new Error(\"The reducer has to return a new state\");\n }\n _a.label = 4;\n case 4:\n _i++;\n return [3 /*break*/, 2];\n case 5: return [4 /*yield*/, this.executeMiddlewares(result, MiddlewarePlacement.After, callingAction)];\n case 6:\n resultingState = _a.sent();\n if (resultingState === false) {\n this.clearMarks();\n this.clearMeasures();\n return [2 /*return*/];\n }\n if (isStateHistory(resultingState) &&\n this.options.history &&\n this.options.history.limit) {\n resultingState = applyLimits(resultingState, this.options.history.limit);\n }\n this._state.next(resultingState);\n this.mark(\"dispatch-end\");\n if (this.options.measurePerformance === PerformanceMeasurement.StartEnd) {\n this.measure(\"startEndDispatchDuration\", \"dispatch-start\", \"dispatch-end\");\n measures = PLATFORM.performance.getEntriesByName(\"startEndDispatchDuration\", \"measure\");\n this.logger[getLogType(this.options, \"performanceLog\", LogLevel.info)](\"Total duration \".concat(measures[0].duration, \" of dispatched action \").concat(callingAction.name, \":\"), measures);\n }\n else if (this.options.measurePerformance === PerformanceMeasurement.All) {\n marks = PLATFORM.performance.getEntriesByType(\"mark\");\n totalDuration = marks[marks.length - 1].startTime - marks[0].startTime;\n this.logger[getLogType(this.options, \"performanceLog\", LogLevel.info)](\"Total duration \".concat(totalDuration, \" of dispatched action \").concat(callingAction.name, \":\"), marks);\n }\n this.clearMarks();\n this.clearMeasures();\n this.updateDevToolsState({ type: callingAction.name, params: callingAction.params }, resultingState);\n return [2 /*return*/];\n }\n });\n });\n };\n Store.prototype.executeMiddlewares = function (state, placement, action) {\n var _this = this;\n return Array.from(this.middlewares)\n .filter(function (middleware) { return middleware[1].placement === placement; })\n .reduce(function (prev, curr, _, _arr) { return __awaiter(_this, void 0, void 0, function () {\n var result, _a, _b, _c, e_2;\n return __generator(this, function (_d) {\n switch (_d.label) {\n case 0:\n _d.trys.push([0, 5, 7, 8]);\n _b = (_a = curr)[0];\n return [4 /*yield*/, prev];\n case 1: return [4 /*yield*/, _b.apply(_a, [_d.sent(), this._state.getValue(), curr[1].settings, action])];\n case 2:\n result = _d.sent();\n if (result === false) {\n return [2 /*return*/, false];\n }\n _c = result;\n if (_c) return [3 /*break*/, 4];\n return [4 /*yield*/, prev];\n case 3:\n _c = (_d.sent());\n _d.label = 4;\n case 4: return [2 /*return*/, _c];\n case 5:\n e_2 = _d.sent();\n if (this.options.propagateError) {\n throw e_2;\n }\n return [4 /*yield*/, prev];\n case 6: return [2 /*return*/, _d.sent()];\n case 7:\n this.mark(\"dispatch-\".concat(placement, \"-\").concat(curr[0].name));\n return [7 /*endfinally*/];\n case 8: return [2 /*return*/];\n }\n });\n }); }, state);\n };\n Store.prototype.setupDevTools = function () {\n var _this = this;\n if (PLATFORM.global.__REDUX_DEVTOOLS_EXTENSION__) {\n this.logger[getLogType(this.options, \"devToolsStatus\", LogLevel.debug)](\"DevTools are available\");\n this.devToolsAvailable = true;\n this.devTools = PLATFORM.global.__REDUX_DEVTOOLS_EXTENSION__.connect(this.options.devToolsOptions);\n this.devTools.init(this.initialState);\n this.devTools.subscribe(function (message) {\n _this.logger[getLogType(_this.options, \"devToolsStatus\", LogLevel.debug)](\"DevTools sent change \".concat(message.type));\n if (message.type === \"ACTION\" && message.payload) {\n var byName = Array.from(_this.actions).find(function (_a) {\n var reducer = _a[0];\n return reducer.name === message.payload.name;\n });\n var action = _this.lookupAction(message.payload.name) || byName && byName[0];\n if (!action) {\n throw new Error(\"Tried to remotely dispatch an unregistered action\");\n }\n if (!message.payload.args || message.payload.args.length < 1) {\n throw new Error(\"No action arguments provided\");\n }\n _this.dispatch.apply(_this, __spreadArray([action], message.payload.args.slice(1).map(function (arg) { return JSON.parse(arg); }), false));\n return;\n }\n if (message.type === \"DISPATCH\" && message.payload) {\n switch (message.payload.type) {\n case \"JUMP_TO_STATE\":\n case \"JUMP_TO_ACTION\":\n _this._state.next(JSON.parse(message.state));\n return;\n case \"COMMIT\":\n _this.devTools.init(_this._state.getValue());\n return;\n case \"RESET\":\n _this.devTools.init(_this.initialState);\n _this.resetToState(_this.initialState);\n return;\n case \"ROLLBACK\":\n var parsedState = JSON.parse(message.state);\n _this.resetToState(parsedState);\n _this.devTools.init(parsedState);\n return;\n }\n }\n });\n }\n };\n Store.prototype.updateDevToolsState = function (action, state) {\n if (this.devToolsAvailable) {\n this.devTools.send(action, state);\n }\n };\n Store.prototype.registerHistoryMethods = function () {\n this.registerAction(\"jump\", jump);\n };\n Store.prototype.mark = function (markName) {\n this._markNames.add(markName);\n PLATFORM.performance.mark(markName);\n };\n Store.prototype.clearMarks = function () {\n this._markNames.forEach(function (markName) {\n return PLATFORM.performance.clearMarks(markName);\n });\n this._markNames.clear();\n };\n Store.prototype.measure = function (measureName, startMarkName, endMarkName) {\n this._measureNames.add(measureName);\n PLATFORM.performance.measure(measureName, startMarkName, endMarkName);\n };\n Store.prototype.clearMeasures = function () {\n this._measureNames.forEach(function (measureName) {\n return PLATFORM.performance.clearMeasures(measureName);\n });\n this._measureNames.clear();\n };\n return Store;\n}());\nfunction dispatchify(action) {\n var store = Container.instance.get(Store);\n return function () {\n var params = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n params[_i] = arguments[_i];\n }\n return store.dispatch.apply(store, __spreadArray([action], params, false));\n };\n}\n\nfunction executeSteps(store, shouldLogResults) {\n var steps = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n steps[_i - 2] = arguments[_i];\n }\n return __awaiter(this, void 0, void 0, function () {\n var logStep, tryStep, lastStep;\n return __generator(this, function (_a) {\n logStep = function (step, stepIdx) { return function (res) {\n if (shouldLogResults) {\n console.group(\"Step \".concat(stepIdx));\n console.log(res);\n console.groupEnd();\n }\n step(res);\n }; };\n tryStep = function (step, reject) {\n return function (res) {\n try {\n step(res);\n }\n catch (err) {\n reject(err);\n }\n };\n };\n lastStep = function (step, resolve) {\n return function (res) {\n step(res);\n resolve();\n };\n };\n return [2 /*return*/, new Promise(function (resolve, reject) {\n var currentStep = 0;\n steps.slice(0, -1).forEach(function (step) {\n store.state.pipe(skip(currentStep), take(1), delay(0)).subscribe(tryStep(logStep(step, currentStep), reject));\n currentStep++;\n });\n store.state.pipe(skip(currentStep), take(1)).subscribe(lastStep(tryStep(logStep(steps[steps.length - 1], currentStep), reject), resolve));\n })];\n });\n });\n}\n\nvar defaultSelector = function (store) { return store.state; };\nfunction connectTo(settings) {\n var $store;\n // const store = Container.instance.get(Store) as Store;\n var _settings = __assign({ selector: typeof settings === \"function\" ? settings : defaultSelector }, settings);\n function getSource(selector) {\n // if for some reason getSource is invoked before setup (bind lifecycle, typically)\n // then we have no choice but to get the store instance from global container instance\n // otherwise, assume that $store variable in the closure would be already assigned the right\n // value from created callback\n // Could also be in situation where it doesn't come from custom element, or some exotic setups/scenarios\n var store = $store || ($store = Container.instance.get(Store));\n var source = selector(store);\n if (source instanceof Observable) {\n return source;\n }\n return store.state;\n }\n function createSelectors() {\n var _a;\n var isSelectorObj = typeof _settings.selector === \"object\";\n var fallbackSelector = (_a = {},\n _a[_settings.target || \"state\"] = _settings.selector || defaultSelector,\n _a);\n return Object.entries(__assign({}, (isSelectorObj ? _settings.selector : fallbackSelector))).map(function (_a) {\n var _b;\n var target = _a[0], selector = _a[1];\n return ({\n targets: _settings.target && isSelectorObj ? [_settings.target, target] : [target],\n selector: selector,\n // numbers are the starting index to slice all the change handling args, \n // which are prop name, new state and old state\n changeHandlers: (_b = {},\n _b[_settings.onChanged || \"\"] = 1,\n _b[\"\".concat(_settings.target || target, \"Changed\")] = _settings.target ? 0 : 1,\n _b[\"propertyChanged\"] = 0,\n _b)\n });\n });\n }\n return function (target) {\n var originalCreated = target.prototype.created;\n var originalSetup = typeof settings === \"object\" && settings.setup\n ? target.prototype[settings.setup]\n : target.prototype.bind;\n var originalTeardown = typeof settings === \"object\" && settings.teardown\n ? target.prototype[settings.teardown]\n : target.prototype.unbind;\n // only override if prototype callback is a function\n if (typeof originalCreated === \"function\" || originalCreated === undefined) {\n target.prototype.created = function created(_, view) {\n // here we relies on the fact that the class Store\n // has not been registered somewhere in one of child containers, instead of root container\n // if there is any issue with this approach, needs to walk all the way up to resolve from root\n // typically like invoking from global Container.instance\n $store = view.container.get(Store);\n if (originalCreated !== undefined) {\n return originalCreated.call(this, _, view);\n }\n };\n }\n target.prototype[typeof settings === \"object\" && settings.setup ? settings.setup : \"bind\"] = function () {\n var _this = this;\n if (typeof settings == \"object\" &&\n typeof settings.onChanged === \"string\" &&\n !(settings.onChanged in this)) {\n throw new Error(\"Provided onChanged handler does not exist on target VM\");\n }\n this._stateSubscriptions = createSelectors().map(function (s) { return getSource(s.selector).subscribe(function (state) {\n var lastTargetIdx = s.targets.length - 1;\n var oldState = s.targets.reduce(function (accu, curr) {\n if (accu === void 0) { accu = {}; }\n return accu[curr];\n }, _this);\n Object.entries(s.changeHandlers).forEach(function (_a) {\n var handlerName = _a[0], args = _a[1];\n if (handlerName in _this) {\n _this[handlerName].apply(_this, [s.targets[lastTargetIdx], state, oldState].slice(args, 3));\n }\n });\n s.targets.reduce(function (accu, curr, idx) {\n accu[curr] = idx === lastTargetIdx ? state : accu[curr] || {};\n return accu[curr];\n }, _this);\n }); });\n if (originalSetup) {\n return originalSetup.apply(this, arguments);\n }\n };\n target.prototype[typeof settings === \"object\" && settings.teardown ? settings.teardown : \"unbind\"] = function () {\n if (this._stateSubscriptions && Array.isArray(this._stateSubscriptions)) {\n this._stateSubscriptions.forEach(function (sub) {\n if (sub instanceof Subscription && sub.closed === false) {\n sub.unsubscribe();\n }\n });\n }\n if (originalTeardown) {\n return originalTeardown.apply(this, arguments);\n }\n };\n };\n}\n\nfunction configure(aurelia, options) {\n if (!options || !options.initialState) {\n throw new Error(\"initialState must be provided via options\");\n }\n var initState = options.initialState;\n if (options && options.history && options.history.undoable && !isStateHistory(options.initialState)) {\n initState = { past: [], present: options.initialState, future: [] };\n }\n delete options.initialState;\n aurelia.container\n .registerInstance(Store, new Store(initState, options));\n}\n\nexport { DEFAULT_LOCAL_STORAGE_KEY, LogLevel, LoggerIndexed, MiddlewarePlacement, PerformanceMeasurement, Store, UnregisteredActionError, applyLimits, configure, connectTo, dispatchify, executeSteps, getLogType, isStateHistory, jump, localStorageMiddleware, logMiddleware, nextStateHistory, rehydrateFromLocalStorage };\n"],"names":["O","descriptor","dP","ObjectProto","toString","toStringTag","toLength","iterCall","_typeof","Symbol","iterator","obj","constructor","prototype","FEATURE_NO_ES2015","Object","GOPS","setDescriptor","G","id","random","Math","prefix","prefixLength","length","internalSymbol","DP","DPies","GOPN","GOPD","PIE","gOPN","gOPD","create","keys","defineProperty","$defineProperties","hOP","hasOwnProperty","pIE","addInternalIfNeeded","Array","indexOf","o","uid","enumerable","call","configurable","writable","value","createWithSymbols","proto","descriptors","self","forEach","key","propertyIsEnumerable","$defineProperty","get","onlyNonSymbols","name","source","onlySymbols","this","setAndGetSymbol","set","sourceConstructor","_Symbol","description","TypeError","concat","sourceMap","newDescriptor","copyAsNonEnumerable","$getOwnPropertySymbols","split","filter","map","cachedWindowNames","window","getOwnPropertyNames","originalObjectGetOwnPropertyNames","e","symbols","symbol","slice","arguments","str","o_O","protoDescriptor","getOwnPropertyDescriptor","tst","undefined","Si","AP","SP","returnThis","i","next","done","fromCodePoint","String","c","codePointAt","Number","isNaN","isFinite","endsWith","searchString","position","subjectString","floor","lastIndex","startsWith","substr","from","it","min","ceil","toInteger","iter","fn","val","index","E","return","arrayLike","result","step","C","aLen","mapfn","mapping","iterFn","bind","isArray","find","predicate","list","thisArg","findIndex","FEATURE_NO_ES2016","includes","searchElement","len","parseInt","k","currentElement","n","hasDontEnumBug","dontEnums","dontEnumsLength","needsFix","s","prop","push","gOPS","filterOS","getOwnPropertySymbols","where","keyOrSymbol","arg","console","warn","ii","is","x","y","global","_createCollection","_createCollection2","a","b","createCollection","objectOnly","Collection","_keys","_values","_itp","init","sharedSize","add","sharedDelete","has","splice","p","sharedGet","setHas","mapHas","sharedSet","sharedAdd","sharedClear","sharedValues","sharedIterator","mapEntries","itp","array","array2","_ref","v","sharedForEach","callback","context","entries","r","WeakMap","clear","Map","values","Set","WeakSet","Function","Reflect","target","propertyKey","construct","Target","args","apply","ownKeys","FEATURE_NO_ESNEXT","emptyMetadata","freeze","metadataContainerKey","getOwnMetadata","metadataKey","targetKey","defineMetadata","metadataValue","metadataContainer","metadata","__decorate","decorators","desc","d","decorate","document","validPositions","beforebegin","afterbegin","beforeend","afterend","Portal","viewFactory","originalViewslot","strict","initialRender","currentTarget","unset","Portal_1","getTarget","queryContext","querySelector","Element","createViewSlot","toLowerCase","Error","anchorCommentHolder","createElement","normalizedPosition","insertAdjacentElement","anchorComment","createComment","parentNode","replaceChild","bindingContext","overrideContext","callbackContext","view","shouldInitRender","remove","attached","isAttached","render","detached","viewSlot","unbind","renderContext","body","_this","oldTarget","oldViewSlot","addAction","Promise","resolve","activating","then","removed","activated","deactivating","deactivated","targetChanged","inject","primaryProperty","defaultValue","changeHandler","configure","frameworkConfig","globalResources","State","charSpec","nextStates","_iterator","_isArray","_i","child","validChars","invalidChars","put","state","repeat","match","ch","results","l","escapeRegex","RegExp","join","StaticSegment","string","caseSensitive","eachChar","toUpperCase","regex","replace","generate","DynamicSegment","optional","params","consumed","StarSegment","EpsilonSegment","RouteRecognizer","rootState","names","routes","route","currentState","skippableStates","types","statics","dynamics","stars","routeName","handler","isEmpty","segments","normalizedRoute","charAt","splitRoute","segment","_match","_name","parse","path","_addSegment","addSegment","firstState","nextState","j","jj","handlers","routeNames","_i2","_i3","getRoute","nameOrRoute","handlersFor","hasRoute","generationUsesHref","href","routeParams","assign","output","segmentValue","param","queryString","recognize","states","queryParams","isSlashDropped","normalizedPath","queryStart","decodeURI","pathLen","recognizeChar","solutions","_i4","_l","sort","sortSolutions","captures","currentCapture","RecognizeResults","_handler","_names","_params","m","isDynamic","findHandler","extendStatics","setPrototypeOf","__proto__","NavigationInstruction","plan","options","viewPortInstructions","ancestorParams","current","currentParams","config","hasChildRouter","getWildCardName","unshift","parentInstruction","allParams","lifecycleArgs","getAllInstructions","instructions","childInstruction","childNavigationInstruction","getAllPreviousInstructions","previousInstruction","addViewPortInstruction","nameOrInitOptions","strategy","moduleId","component","viewPortInstruction","viewPortName","currentViewPort","childRouter","configRoute","wildcardIndex","lastIndexOf","getWildcardPath","wildcardName","getBaseUrl","$encodeURI","encodeURI","fragment","nonEmptyRoute","router","_commitChanges","waitToSwap","currentInstruction","navModel","isActive","refreshNavigation","loads","delaySwaps","_loop_1","viewPort","viewPorts","childNavInstruction","parentCatchHandler","process","all","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","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","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","complete","currentStep","cancel","createNextFn","isNavigationCommand","Redirect","trigger","shouldContinueProcessing","setRouter","appRouter","useAppRouter","_buildNavigationPlan","forceLifecycleMinimum","buildRedirectPlan","prevInstruction","defaultViewPortConfigs","buildTransitionPlans","viewPortPlans","viewPortConfigs","RedirectToRoute","InternalActivationStrategy","redirect","redirectInstruction","originalInstructionParams","redirectInstructionParams","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","addPreviousDeactivatable","prevViewModel","processActivatable","findActivatable","current_1","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","removeStep","slot","_clearSteps","logger","getLogger","AppRouter","_super","events","__","__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","ownProps","resArray","__assign","t","__awaiter","_arguments","P","generator","fulfilled","rejected","__generator","f","g","label","sent","trys","ops","verb","op","pop","__spreadArray","to","pack","ar","jump","isStateHistory","future","past","present","jumpToFuture","newPast","newFuture","jumpToPast","nextStateHistory","presentStateHistory","nextPresent","applyLimits","limit","MiddlewarePlacement","LogLevel","DEFAULT_LOCAL_STORAGE_KEY","logMiddleware","logType","localStorageMiddleware","rehydrateFromLocalStorage","storedState","PerformanceMeasurement","LoggerIndexed","Logger","getLogType","definition","defaultLevel","logDefinitions","UnregisteredActionError","reducer","Store","initialState","devToolsAvailable","actions","middlewares","_markNames","_measureNames","dispatchQueue","isUndoable","undoable","_state","asObservable","devToolsOptions","disable","setupDevTools","registerHistoryMethods","registerMiddleware","placement","unregisterMiddleware","delete","isMiddlewareRegistered","middleware","registerAction","type","unregisterAction","isActionRegistered","action","resetToState","dispatch","lookupAction","queueDispatch","pipe","dispatchPipe","nextReducer","handleQueue","queueItem","e_1","internalDispatch","unregisteredAction","pipedActions","callingAction","beforeMiddleswaresResult","pipedActions_1","resultingState","measures","marks","totalDuration","mark","reduce","logDispatchedActions","info","executeMiddlewares","getValue","Before","clearMarks","clearMeasures","After","measurePerformance","StartEnd","measure","duration","All","startTime","updateDevToolsState","curr","_arr","_c","e_2","_d","propagateError","debug","devTools","message","payload","byName","parsedState","send","markName","measureName","startMarkName","endMarkName","dispatchify","store","executeSteps","shouldLogResults","logStep","tryStep","lastStep","stepIdx","res","group","log","groupEnd","err","defaultSelector","connectTo","$store","_settings","selector","originalCreated","created","originalSetup","setup","originalTeardown","teardown","isSelectorObj","fallbackSelector","onChanged","_stateSubscriptions","targets","changeHandlers","lastTargetIdx","oldState","accu","handlerName","idx","closed","aurelia","initState","registerInstance"],"sourceRoot":""}