@angular/router 2.0.0-rc.1 → 2.0.0-rc.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/{router.umd.js → bundles/router.umd.js} +727 -637
- package/bundles/router.umd.min.js +2 -0
- package/esm/index.d.ts +7 -25
- package/esm/index.js +10 -30
- package/esm/index.js.map +1 -1
- package/esm/src/constants.js +4 -4
- package/esm/src/constants.js.map +1 -1
- package/esm/src/constants.metadata.json +1 -1
- package/esm/src/core_private.d.ts +3 -2
- package/esm/src/core_private.js +3 -2
- package/esm/src/core_private.js.map +1 -1
- package/esm/src/core_private.metadata.json +1 -1
- package/esm/src/directives/router_directives.d.ts +21 -0
- package/esm/src/directives/router_directives.js +24 -0
- package/esm/src/directives/router_directives.js.map +1 -0
- package/esm/src/directives/router_directives.metadata.json +1 -0
- package/esm/src/directives/router_link.d.ts +4 -2
- package/esm/src/directives/router_link.js +21 -13
- package/esm/src/directives/router_link.js.map +1 -1
- package/esm/src/directives/router_link.metadata.json +1 -1
- package/esm/src/directives/router_outlet.d.ts +6 -6
- package/esm/src/directives/router_outlet.js +13 -11
- package/esm/src/directives/router_outlet.js.map +1 -1
- package/esm/src/directives/router_outlet.metadata.json +1 -1
- package/esm/src/facade/async.d.ts +11 -4
- package/esm/src/facade/async.js +25 -15
- package/esm/src/facade/async.js.map +1 -1
- package/esm/src/facade/base_wrapped_exception.js +4 -4
- package/esm/src/facade/base_wrapped_exception.js.map +1 -1
- package/esm/src/facade/collection.js +1 -1
- package/esm/src/facade/collection.js.map +1 -1
- package/esm/src/facade/collection.metadata.json +1 -1
- package/esm/src/facade/exception_handler.d.ts +2 -11
- package/esm/src/facade/exception_handler.js +8 -7
- package/esm/src/facade/exception_handler.js.map +1 -1
- package/esm/src/facade/exceptions.d.ts +4 -0
- package/esm/src/facade/exceptions.js +6 -2
- package/esm/src/facade/exceptions.js.map +1 -1
- package/esm/src/facade/exceptions.metadata.json +1 -0
- package/esm/src/facade/lang.d.ts +6 -4
- package/esm/src/facade/lang.js +12 -11
- package/esm/src/facade/lang.js.map +1 -1
- package/esm/src/facade/lang.metadata.json +1 -1
- package/esm/src/facade/promise.js.map +1 -1
- package/esm/src/interfaces.js.map +1 -1
- package/esm/src/lifecycle_reflector.js.map +1 -1
- package/esm/src/link.d.ts +1 -1
- package/esm/src/link.js +31 -18
- package/esm/src/link.js.map +1 -1
- package/esm/src/metadata/decorators.d.ts +1 -1
- package/esm/src/metadata/decorators.js +1 -1
- package/esm/src/metadata/decorators.js.map +1 -1
- package/esm/src/metadata/decorators.metadata.json +1 -1
- package/esm/src/metadata/metadata.d.ts +3 -3
- package/esm/src/metadata/metadata.js +1 -1
- package/esm/src/metadata/metadata.js.map +1 -1
- package/esm/src/recognize.d.ts +3 -3
- package/esm/src/recognize.js +57 -41
- package/esm/src/recognize.js.map +1 -1
- package/esm/src/router.d.ts +3 -23
- package/esm/src/router.js +54 -58
- package/esm/src/router.js.map +1 -1
- package/esm/src/router_providers.d.ts +1 -1
- package/esm/src/router_providers.js +3 -7
- package/esm/src/router_providers.js.map +1 -1
- package/esm/src/router_providers.metadata.json +1 -1
- package/esm/src/router_providers_common.d.ts +7 -0
- package/esm/src/router_providers_common.js +10 -7
- package/esm/src/router_providers_common.js.map +1 -1
- package/esm/src/router_providers_common.metadata.json +1 -1
- package/esm/src/router_url_serializer.js +9 -9
- package/esm/src/router_url_serializer.js.map +1 -1
- package/esm/src/segments.d.ts +7 -12
- package/esm/src/segments.js +27 -45
- package/esm/src/segments.js.map +1 -1
- package/esm/src/segments.metadata.json +1 -0
- package/esm/testing/router_testing_providers.js +10 -3
- package/esm/testing/router_testing_providers.js.map +1 -1
- package/esm/testing/router_testing_providers.metadata.json +1 -1
- package/esm/testing.js.map +1 -1
- package/index.d.ts +7 -25
- package/index.js +22 -39
- package/index.js.map +1 -1
- package/package.json +8 -4
- package/src/constants.js +4 -4
- package/src/constants.js.map +1 -1
- package/src/constants.metadata.json +1 -1
- package/src/core_private.d.ts +3 -2
- package/src/core_private.js +1 -0
- package/src/core_private.js.map +1 -1
- package/src/core_private.metadata.json +1 -1
- package/src/directives/router_directives.d.ts +21 -0
- package/src/directives/router_directives.js +25 -0
- package/src/directives/router_directives.js.map +1 -0
- package/src/directives/router_directives.metadata.json +1 -0
- package/src/directives/router_link.d.ts +4 -2
- package/src/directives/router_link.js +20 -12
- package/src/directives/router_link.js.map +1 -1
- package/src/directives/router_link.metadata.json +1 -1
- package/src/directives/router_outlet.d.ts +6 -6
- package/src/directives/router_outlet.js +13 -11
- package/src/directives/router_outlet.js.map +1 -1
- package/src/directives/router_outlet.metadata.json +1 -1
- package/src/facade/async.d.ts +11 -4
- package/src/facade/async.js +27 -17
- package/src/facade/async.js.map +1 -1
- package/src/facade/base_wrapped_exception.js +4 -4
- package/src/facade/base_wrapped_exception.js.map +1 -1
- package/src/facade/collection.js.map +1 -1
- package/src/facade/collection.metadata.json +1 -1
- package/src/facade/exception_handler.d.ts +2 -11
- package/src/facade/exception_handler.js +8 -7
- package/src/facade/exception_handler.js.map +1 -1
- package/src/facade/exceptions.d.ts +4 -0
- package/src/facade/exceptions.js +6 -2
- package/src/facade/exceptions.js.map +1 -1
- package/src/facade/exceptions.metadata.json +1 -0
- package/src/facade/lang.d.ts +6 -4
- package/src/facade/lang.js +12 -11
- package/src/facade/lang.js.map +1 -1
- package/src/facade/lang.metadata.json +1 -1
- package/src/facade/promise.js.map +1 -1
- package/src/interfaces.js.map +1 -1
- package/src/lifecycle_reflector.js.map +1 -1
- package/src/link.d.ts +1 -1
- package/src/link.js +33 -18
- package/src/link.js.map +1 -1
- package/src/metadata/decorators.d.ts +1 -1
- package/src/metadata/decorators.js +1 -1
- package/src/metadata/decorators.js.map +1 -1
- package/src/metadata/decorators.metadata.json +1 -1
- package/src/metadata/metadata.d.ts +3 -3
- package/src/metadata/metadata.js +1 -1
- package/src/metadata/metadata.js.map +1 -1
- package/src/recognize.d.ts +3 -3
- package/src/recognize.js +62 -42
- package/src/recognize.js.map +1 -1
- package/src/router.d.ts +3 -23
- package/src/router.js +64 -64
- package/src/router.js.map +1 -1
- package/src/router_providers.d.ts +1 -1
- package/src/router_providers.js +3 -7
- package/src/router_providers.js.map +1 -1
- package/src/router_providers.metadata.json +1 -1
- package/src/router_providers_common.d.ts +7 -0
- package/src/router_providers_common.js +10 -5
- package/src/router_providers_common.js.map +1 -1
- package/src/router_providers_common.metadata.json +1 -1
- package/src/router_url_serializer.js +8 -8
- package/src/router_url_serializer.js.map +1 -1
- package/src/segments.d.ts +7 -12
- package/src/segments.js +26 -44
- package/src/segments.js.map +1 -1
- package/src/segments.metadata.json +1 -0
- package/testing/router_testing_providers.js +9 -2
- package/testing/router_testing_providers.js.map +1 -1
- package/testing/router_testing_providers.metadata.json +1 -1
- package/testing.js.map +1 -1
- package/esm/index.metadata.json +0 -1
- package/index.metadata.json +0 -1
package/src/router.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router.js","sourceRoot":"","sources":["../../../../modules/@angular/router/src/router.ts"],"names":[],"mappings":"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","sourcesContent":["interface DecoratorInvocation {\n type: Function;\n args?: any[];\n }\n import {OnInit, provide, ReflectiveInjector, ComponentResolver} from '@angular/core';\nimport {RouterOutlet} from './directives/router_outlet';\nimport {Type, isBlank, isPresent} from './facade/lang';\nimport {ListWrapper} from './facade/collection';\nimport {EventEmitter, Observable, PromiseWrapper, ObservableWrapper} from './facade/async';\nimport {StringMapWrapper} from './facade/collection';\nimport {BaseException} from '@angular/core';\nimport {RouterUrlSerializer} from './router_url_serializer';\nimport {CanDeactivate} from './interfaces';\nimport {recognize} from './recognize';\nimport {Location} from '@angular/common';\nimport {link} from './link';\n\nimport {\n equalSegments,\n routeSegmentComponentFactory,\n RouteSegment,\n UrlTree,\n RouteTree,\n rootNode,\n TreeNode,\n UrlSegment,\n serializeRouteSegmentTree\n} from './segments';\nimport {hasLifecycleHook} from './lifecycle_reflector';\nimport {DEFAULT_OUTLET_NAME} from './constants';\n\n/**\n * @internal\n */\nexport class RouterOutletMap {\n /** @internal */\n _outlets: {[name: string]: RouterOutlet} = {};\n registerOutlet(name: string, outlet: RouterOutlet): void { this._outlets[name] = outlet; }\n}\n\n/**\n * The `Router` is responsible for mapping URLs to components.\n *\n * You can see the state of the router by inspecting the read-only fields `router.urlTree`\n * and `router.routeTree`.\n */\nexport class Router {\n private _prevTree: RouteTree;\n private _urlTree: UrlTree;\n private _locationSubscription: any;\n private _changes: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * @internal\n */\n constructor(private _rootComponent: Object, private _rootComponentType: Type,\n private _componentResolver: ComponentResolver,\n private _urlSerializer: RouterUrlSerializer,\n private _routerOutletMap: RouterOutletMap, private _location: Location) {\n this._prevTree = this._createInitialTree();\n this._setUpLocationChangeListener();\n this.navigateByUrl(this._location.path());\n }\n\n /**\n * Returns the current url tree.\n */\n get urlTree(): UrlTree { return this._urlTree; }\n\n /**\n * Returns the current route tree.\n */\n get routeTree(): RouteTree { return this._prevTree; }\n\n /**\n * An observable or url changes from the router.\n */\n get changes(): Observable<void> { return this._changes; }\n\n /**\n * Navigate based on the provided url. This navigation is always absolute.\n *\n * ### Usage\n *\n * ```\n * router.navigateByUrl(\"/team/33/user/11\");\n * ```\n */\n navigateByUrl(url: string): Promise<void> {\n return this._navigate(this._urlSerializer.parse(url));\n }\n\n /**\n * Navigate based on the provided array of commands and a starting point.\n * If no segment is provided, the navigation is absolute.\n *\n * ### Usage\n *\n * ```\n * router.navigate(['team', 33, 'team', '11], segment);\n * ```\n */\n navigate(commands: any[], segment?: RouteSegment): Promise<void> {\n return this._navigate(this.createUrlTree(commands, segment));\n }\n\n /**\n * @internal\n */\n dispose(): void { ObservableWrapper.dispose(this._locationSubscription); }\n\n /**\n * Applies an array of commands to the current url tree and creates\n * a new url tree.\n *\n * When given a segment, applies the given commands starting from the segment.\n * When not given a segment, applies the given command starting from the root.\n *\n * ### Usage\n *\n * ```\n * // create /team/33/user/11\n * router.createUrlTree(['/team', 33, 'user', 11]);\n *\n * // create /team/33;expand=true/user/11\n * router.createUrlTree(['/team', 33, {expand: true}, 'user', 11]);\n *\n * // you can collapse static fragments like this\n * router.createUrlTree(['/team/33/user', userId]);\n *\n * // assuming the current url is `/team/33/user/11` and the segment points to `user/11`\n *\n * // navigate to /team/33/user/11/details\n * router.createUrlTree(['details'], segment);\n *\n * // navigate to /team/33/user/22\n * router.createUrlTree(['../22'], segment);\n *\n * // navigate to /team/44/user/22\n * router.createUrlTree(['../../team/44/user/22'], segment);\n * ```\n */\n createUrlTree(commands: any[], segment?: RouteSegment): UrlTree {\n let s = isPresent(segment) ? segment : this._prevTree.root;\n return link(s, this._prevTree, this.urlTree, commands);\n }\n\n /**\n * Serializes a {@link UrlTree} into a string.\n */\n serializeUrl(url: UrlTree): string { return this._urlSerializer.serialize(url); }\n\n private _createInitialTree(): RouteTree {\n let root = new RouteSegment([new UrlSegment(\"\", {}, null)], {}, DEFAULT_OUTLET_NAME,\n this._rootComponentType, null);\n return new RouteTree(new TreeNode<RouteSegment>(root, []));\n }\n\n private _setUpLocationChangeListener(): void {\n this._locationSubscription = this._location.subscribe(\n (change) => { this._navigate(this._urlSerializer.parse(change['url'])); });\n }\n\n private _navigate(url: UrlTree): Promise<void> {\n this._urlTree = url;\n return recognize(this._componentResolver, this._rootComponentType, url)\n .then(currTree => {\n return new _LoadSegments(currTree, this._prevTree)\n .load(this._routerOutletMap, this._rootComponent)\n .then(updated => {\n if (updated) {\n this._prevTree = currTree;\n this._location.go(this._urlSerializer.serialize(this._urlTree));\n this._changes.emit(null);\n }\n });\n });\n }\n}\n\n\nclass _LoadSegments {\n private deactivations: Object[][] = [];\n private performMutation: boolean = true;\n\n constructor(private currTree: RouteTree, private prevTree: RouteTree) {}\n\n load(parentOutletMap: RouterOutletMap, rootComponent: Object): Promise<boolean> {\n let prevRoot = isPresent(this.prevTree) ? rootNode(this.prevTree) : null;\n let currRoot = rootNode(this.currTree);\n\n return this.canDeactivate(currRoot, prevRoot, parentOutletMap, rootComponent)\n .then(res => {\n this.performMutation = true;\n if (res) {\n this.loadChildSegments(currRoot, prevRoot, parentOutletMap, [rootComponent]);\n }\n return res;\n });\n }\n\n private canDeactivate(currRoot: TreeNode<RouteSegment>, prevRoot: TreeNode<RouteSegment>,\n outletMap: RouterOutletMap, rootComponent: Object): Promise<boolean> {\n this.performMutation = false;\n this.loadChildSegments(currRoot, prevRoot, outletMap, [rootComponent]);\n\n let allPaths = PromiseWrapper.all(this.deactivations.map(r => this.checkCanDeactivatePath(r)));\n return allPaths.then((values: boolean[]) => values.filter(v => v).length === values.length);\n }\n\n private checkCanDeactivatePath(path: Object[]): Promise<boolean> {\n let curr = PromiseWrapper.resolve(true);\n for (let p of ListWrapper.reversed(path)) {\n curr = curr.then(_ => {\n if (hasLifecycleHook(\"routerCanDeactivate\", p)) {\n return (<CanDeactivate>p).routerCanDeactivate(this.prevTree, this.currTree);\n } else {\n return _;\n }\n });\n }\n return curr;\n }\n\n private loadChildSegments(currNode: TreeNode<RouteSegment>, prevNode: TreeNode<RouteSegment>,\n outletMap: RouterOutletMap, components: Object[]): void {\n let prevChildren = isPresent(prevNode) ?\n prevNode.children.reduce(\n (m, c) => {\n m[c.value.outlet] = c;\n return m;\n },\n {}) :\n {};\n\n currNode.children.forEach(c => {\n this.loadSegments(c, prevChildren[c.value.outlet], outletMap, components);\n StringMapWrapper.delete(prevChildren, c.value.outlet);\n });\n\n StringMapWrapper.forEach(prevChildren,\n (v, k) => this.unloadOutlet(outletMap._outlets[k], components));\n }\n\n loadSegments(currNode: TreeNode<RouteSegment>, prevNode: TreeNode<RouteSegment>,\n parentOutletMap: RouterOutletMap, components: Object[]): void {\n let curr = currNode.value;\n let prev = isPresent(prevNode) ? prevNode.value : null;\n let outlet = this.getOutlet(parentOutletMap, currNode.value);\n\n if (equalSegments(curr, prev)) {\n this.loadChildSegments(currNode, prevNode, outlet.outletMap,\n components.concat([outlet.loadedComponent]));\n } else {\n this.unloadOutlet(outlet, components);\n if (this.performMutation) {\n let outletMap = new RouterOutletMap();\n let loadedComponent = this.loadNewSegment(outletMap, curr, prev, outlet);\n this.loadChildSegments(currNode, prevNode, outletMap, components.concat([loadedComponent]));\n }\n }\n }\n\n private loadNewSegment(outletMap: RouterOutletMap, curr: RouteSegment, prev: RouteSegment,\n outlet: RouterOutlet): Object {\n let resolved = ReflectiveInjector.resolve(\n [provide(RouterOutletMap, {useValue: outletMap}), provide(RouteSegment, {useValue: curr})]);\n let ref = outlet.load(routeSegmentComponentFactory(curr), resolved, outletMap);\n if (hasLifecycleHook(\"routerOnActivate\", ref.instance)) {\n ref.instance.routerOnActivate(curr, prev, this.currTree, this.prevTree);\n }\n return ref.instance;\n }\n\n private getOutlet(outletMap: RouterOutletMap, segment: RouteSegment): RouterOutlet {\n let outlet = outletMap._outlets[segment.outlet];\n if (isBlank(outlet)) {\n if (segment.outlet == DEFAULT_OUTLET_NAME) {\n throw new BaseException(`Cannot find default outlet`);\n } else {\n throw new BaseException(`Cannot find the outlet ${segment.outlet}`);\n }\n }\n return outlet;\n }\n\n private unloadOutlet(outlet: RouterOutlet, components: Object[]): void {\n if (isPresent(outlet) && outlet.isLoaded) {\n StringMapWrapper.forEach(outlet.outletMap._outlets,\n (v, k) => this.unloadOutlet(v, components));\n if (this.performMutation) {\n outlet.unload();\n } else {\n this.deactivations.push(components.concat([outlet.loadedComponent]));\n }\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"router.js","sourceRoot":"","sources":["../../../../modules/@angular/router/src/router.ts"],"names":[],"mappings":";AACA,qBAA4E,eAAe,CAAC,CAAA;AAE5F,0BAAkC,aAAa,CAAC,CAAA;AAEhD,sBAA0E,gBAAgB,CAAC,CAAA;AAC3F,2BAA4C,qBAAqB,CAAC,CAAA;AAClE,qBAAuC,eAAe,CAAC,CAAA;AAEvD,oCAA+B,uBAAuB,CAAC,CAAA;AACvD,qBAAmB,QAAQ,CAAC,CAAA;AAC5B,0BAAwB,aAAa,CAAC,CAAA;AAEtC,yBAA8J,YAAY,CAAC,CAAA;AAE3K;IAAA;QACE,gBAAgB;QAChB,aAAQ,GAAmC,EAAE,CAAC;IAEhD,CAAC;IADC,wCAAc,GAAd,UAAe,IAAY,EAAE,MAAoB,IAAU,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;IAC5F,sBAAC;AAAD,CAAC,AAJD,IAIC;AAJY,uBAAe,kBAI3B,CAAA;AAED;;;;;GAKG;AACH;IAME;;OAEG;IACH,gBACY,cAAsB,EAAU,kBAAwB,EACxD,kBAAqC,EAAU,cAAmC,EAClF,gBAAiC,EAAU,SAAmB;QAF9D,mBAAc,GAAd,cAAc,CAAQ;QAAU,uBAAkB,GAAlB,kBAAkB,CAAM;QACxD,uBAAkB,GAAlB,kBAAkB,CAAmB;QAAU,mBAAc,GAAd,cAAc,CAAqB;QAClF,qBAAgB,GAAhB,gBAAgB,CAAiB;QAAU,cAAS,GAAT,SAAS,CAAU;QARlE,aAAQ,GAAuB,IAAI,oBAAY,EAAQ,CAAC;QAS9D,IAAI,CAAC,UAAU,GAAG,+BAAoB,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAChE,IAAI,CAAC,4BAA4B,EAAE,CAAC;QACpC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;IAC5C,CAAC;IAKD,sBAAI,2BAAO;QAHX;;WAEG;aACH,cAAyB,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;;;OAAA;IAKhD,sBAAI,6BAAS;QAHb;;WAEG;aACH,cAA6B,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;;;OAAA;IAKtD,sBAAI,2BAAO;QAHX;;WAEG;aACH,cAAkC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;;;OAAA;IAEzD;;;;;;;;OAQG;IACH,8BAAa,GAAb,UAAc,GAAW;QACvB,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;IACxD,CAAC;IAED;;;;;;;;;OASG;IACH,yBAAQ,GAAR,UAAS,QAAe,EAAE,OAAsB;QAC9C,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;IAC/D,CAAC;IAED;;OAEG;IACH,wBAAO,GAAP,cAAkB,yBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;IAE1E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA8BG;IACH,8BAAa,GAAb,UAAc,QAAe,EAAE,OAAsB;QACnD,IAAI,CAAC,GAAG,gBAAS,CAAC,OAAO,CAAC,GAAG,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAC5D,MAAM,CAAC,WAAI,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC1D,CAAC;IAED;;OAEG;IACH,6BAAY,GAAZ,UAAa,GAAY,IAAY,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAEzE,6CAA4B,GAApC;QAAA,iBAGC;QAFC,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CACjD,UAAC,MAAM,IAAO,KAAI,CAAC,SAAS,CAAC,KAAI,CAAC,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAChG,CAAC;IAEO,0BAAS,GAAjB,UAAkB,GAAY,EAAE,gBAA0B;QAA1D,iBAqBC;QApBC,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC;QACpB,MAAM,CAAC,qBAAS,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,kBAAkB,EAAE,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC;aACnF,IAAI,CAAC,UAAA,QAAQ;YACZ,MAAM,CAAC,IAAI,iBAAiB,CAAC,QAAQ,EAAE,KAAI,CAAC,UAAU,CAAC;iBAClD,QAAQ,CAAC,KAAI,CAAC,gBAAgB,EAAE,KAAI,CAAC,cAAc,CAAC;iBACpD,IAAI,CAAC,UAAA,OAAO;gBACX,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;oBACZ,KAAI,CAAC,UAAU,GAAG,QAAQ,CAAC;oBAC3B,EAAE,CAAC,CAAC,cAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;wBACnD,IAAI,IAAI,GAAG,KAAI,CAAC,cAAc,CAAC,SAAS,CAAC,KAAI,CAAC,QAAQ,CAAC,CAAC;wBACxD,EAAE,CAAC,CAAC,KAAI,CAAC,SAAS,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;4BAC9C,KAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;wBACpC,CAAC;wBAAC,IAAI,CAAC,CAAC;4BACN,KAAI,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;wBAC1B,CAAC;oBACH,CAAC;oBACD,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC3B,CAAC;YACH,CAAC,CAAC,CAAC;QACT,CAAC,CAAC,CAAC;IACT,CAAC;IACH,aAAC;AAAD,CAAC,AArID,IAqIC;AArIY,cAAM,SAqIlB,CAAA;AAGD;IAIE,2BAAoB,QAAmB,EAAU,QAAmB;QAAhD,aAAQ,GAAR,QAAQ,CAAW;QAAU,aAAQ,GAAR,QAAQ,CAAW;QAH5D,kBAAa,GAAe,EAAE,CAAC;QAC/B,oBAAe,GAAY,IAAI,CAAC;IAE+B,CAAC;IAExE,oCAAQ,GAAR,UAAS,eAAgC,EAAE,aAAqB;QAAhE,iBAWC;QAVC,IAAI,QAAQ,GAAG,gBAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,mBAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC;QACzE,IAAI,QAAQ,GAAG,mBAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAEvC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,QAAQ,EAAE,eAAe,EAAE,aAAa,CAAC,CAAC,IAAI,CAAC,UAAA,GAAG;YACpF,KAAI,CAAC,eAAe,GAAG,IAAI,CAAC;YAC5B,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBACR,KAAI,CAAC,qBAAqB,CAAC,QAAQ,EAAE,QAAQ,EAAE,eAAe,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;YACnF,CAAC;YACD,MAAM,CAAC,GAAG,CAAC;QACb,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,yCAAa,GAArB,UACI,QAAgC,EAAE,QAAgC,EAClE,SAA0B,EAAE,aAAqB;QAFrD,iBAQC;QALC,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QAC7B,IAAI,CAAC,qBAAqB,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;QAE3E,IAAI,QAAQ,GAAG,sBAAc,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,UAAA,CAAC,IAAI,OAAA,KAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,EAA9B,CAA8B,CAAC,CAAC,CAAC;QAC/F,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAC,MAAiB,IAAK,OAAA,MAAM,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,EAAD,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,EAA9C,CAA8C,CAAC,CAAC;IAC9F,CAAC;IAEO,kDAAsB,GAA9B,UAA+B,IAAc;QAA7C,iBAYC;QAXC,IAAI,IAAI,GAAG,sBAAc,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACxC;YACE,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,UAAA,CAAC;gBAChB,EAAE,CAAC,CAAC,sCAAgB,CAAC,qBAAqB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC/C,MAAM,CAAiB,CAAE,CAAC,mBAAmB,CAAC,KAAI,CAAC,QAAQ,EAAE,KAAI,CAAC,QAAQ,CAAC,CAAC;gBAC9E,CAAC;gBAAC,IAAI,CAAC,CAAC;oBACN,MAAM,CAAC,CAAC,CAAC;gBACX,CAAC;YACH,CAAC,CAAC,CAAC;;QAPL,GAAG,CAAC,CAAU,UAA0B,EAA1B,KAAA,wBAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,EAA1B,cAA0B,EAA1B,IAA0B,CAAC;YAApC,IAAI,CAAC,SAAA;;SAQT;QACD,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAEO,iDAAqB,GAA7B,UACI,QAAgC,EAAE,QAAgC,EAClE,SAA0B,EAAE,UAAoB;QAFpD,iBAiBC;QAdC,IAAI,YAAY,GAAG,gBAAS,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAC,CAAC,EAAE,CAAC;YACpE,CAA2B,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACjD,MAAM,CAAC,CAAC,CAAC;QACX,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC;QAEZ,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAA,CAAC;YACzB,KAAI,CAAC,gBAAgB,CACjB,CAAC,EAAG,YAAsC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;YACvF,6BAAgB,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACxD,CAAC,CAAC,CAAC;QAEH,6BAAgB,CAAC,OAAO,CACpB,YAAY,EAAE,UAAC,CAAM,CAAC,iBAAiB,EAAE,CAAM,CAAC,iBAAiB;YAC/C,OAAA,KAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC;QAAxD,CAAwD,CAAC,CAAC;IAClF,CAAC;IAED,4CAAgB,GAAhB,UACI,QAAgC,EAAE,QAAgC,EAClE,eAAgC,EAAE,UAAoB;QACxD,IAAI,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC;QAC1B,IAAI,IAAI,GAAG,gBAAS,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC;QACvD,IAAI,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;QAE7D,EAAE,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC;YAClB,IAAI,CAAC,qBAAqB,CACtB,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QACnF,CAAC;QAAC,IAAI,CAAC,CAAC;YACN,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;YAC1C,EAAE,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;gBACzB,IAAI,SAAS,GAAG,IAAI,eAAe,EAAE,CAAC;gBACtC,IAAI,SAAS,GAAG,IAAI,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;gBACxE,IAAI,CAAC,qBAAqB,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YAC5F,CAAC;QACH,CAAC;IACH,CAAC;IAEO,+CAAmB,GAA3B,UACI,SAA0B,EAAE,IAAkB,EAAE,IAAkB,EAClE,MAAoB;QACtB,IAAI,QAAQ,GAAG,yBAAkB,CAAC,OAAO,CACrC,CAAC,EAAC,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,SAAS,EAAC,EAAE,EAAC,OAAO,EAAE,uBAAY,EAAE,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAC,CAAC;QAChG,IAAI,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,uCAA4B,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;QACnF,EAAE,CAAC,CAAC,sCAAgB,CAAC,kBAAkB,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YACvD,GAAG,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC1E,CAAC;QACD,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IACtB,CAAC;IAEO,qCAAS,GAAjB,UAAkB,SAA0B,EAAE,OAAqB;QACjE,IAAI,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAChD,EAAE,CAAC,CAAC,cAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACpB,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,IAAI,+BAAmB,CAAC,CAAC,CAAC;gBAC1C,MAAM,IAAI,oBAAa,CAAC,4BAA4B,CAAC,CAAC;YACxD,CAAC;YAAC,IAAI,CAAC,CAAC;gBACN,MAAM,IAAI,oBAAa,CAAC,4BAA0B,OAAO,CAAC,MAAQ,CAAC,CAAC;YACtE,CAAC;QACH,CAAC;QACD,MAAM,CAAC,MAAM,CAAC;IAChB,CAAC;IAEO,4CAAgB,GAAxB,UAAyB,MAAoB,EAAE,UAAoB;QAAnE,iBAWC;QAVC,EAAE,CAAC,CAAC,gBAAS,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;YAC5C,6BAAgB,CAAC,OAAO,CACpB,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,UAAC,CAAM,CAAC,iBAAiB,EAAE,CAAM,CAAC,iBAAiB;gBAC/C,OAAA,KAAI,CAAC,gBAAgB,CAAC,CAAC,EAAE,UAAU,CAAC;YAApC,CAAoC,CAAC,CAAC;YACzE,EAAE,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;gBACzB,MAAM,CAAC,UAAU,EAAE,CAAC;YACtB,CAAC;YAAC,IAAI,CAAC,CAAC;gBACN,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YACjE,CAAC;QACH,CAAC;IACH,CAAC;IACH,wBAAC;AAAD,CAAC,AAtHD,IAsHC","sourcesContent":["import {Location} from '@angular/common';\nimport {BaseException, ComponentResolver, ReflectiveInjector, provide} from '@angular/core';\n\nimport {DEFAULT_OUTLET_NAME} from './constants';\nimport {RouterOutlet} from './directives/router_outlet';\nimport {EventEmitter, Observable, ObservableWrapper, PromiseWrapper} from './facade/async';\nimport {ListWrapper, StringMapWrapper} from './facade/collection';\nimport {Type, isBlank, isPresent} from './facade/lang';\nimport {CanDeactivate} from './interfaces';\nimport {hasLifecycleHook} from './lifecycle_reflector';\nimport {link} from './link';\nimport {recognize} from './recognize';\nimport {RouterUrlSerializer} from './router_url_serializer';\nimport {RouteSegment, RouteTree, TreeNode, UrlSegment, UrlTree, createEmptyRouteTree, rootNode, routeSegmentComponentFactory, serializeRouteSegmentTree} from './segments';\n\nexport class RouterOutletMap {\n /** @internal */\n _outlets: {[name: string]: RouterOutlet} = {};\n registerOutlet(name: string, outlet: RouterOutlet): void { this._outlets[name] = outlet; }\n}\n\n/**\n * The `Router` is responsible for mapping URLs to components.\n *\n * You can see the state of the router by inspecting the read-only fields `router.urlTree`\n * and `router.routeTree`.\n */\nexport class Router {\n private _routeTree: RouteTree;\n private _urlTree: UrlTree;\n private _locationSubscription: any;\n private _changes: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * @internal\n */\n constructor(\n private _rootComponent: Object, private _rootComponentType: Type,\n private _componentResolver: ComponentResolver, private _urlSerializer: RouterUrlSerializer,\n private _routerOutletMap: RouterOutletMap, private _location: Location) {\n this._routeTree = createEmptyRouteTree(this._rootComponentType);\n this._setUpLocationChangeListener();\n this.navigateByUrl(this._location.path());\n }\n\n /**\n * Returns the current url tree.\n */\n get urlTree(): UrlTree { return this._urlTree; }\n\n /**\n * Returns the current route tree.\n */\n get routeTree(): RouteTree { return this._routeTree; }\n\n /**\n * An observable or url changes from the router.\n */\n get changes(): Observable<void> { return this._changes; }\n\n /**\n * Navigate based on the provided url. This navigation is always absolute.\n *\n * ### Usage\n *\n * ```\n * router.navigateByUrl(\"/team/33/user/11\");\n * ```\n */\n navigateByUrl(url: string): Promise<void> {\n return this._navigate(this._urlSerializer.parse(url));\n }\n\n /**\n * Navigate based on the provided array of commands and a starting point.\n * If no segment is provided, the navigation is absolute.\n *\n * ### Usage\n *\n * ```\n * router.navigate(['team', 33, 'team', '11], segment);\n * ```\n */\n navigate(commands: any[], segment?: RouteSegment): Promise<void> {\n return this._navigate(this.createUrlTree(commands, segment));\n }\n\n /**\n * @internal\n */\n dispose(): void { ObservableWrapper.dispose(this._locationSubscription); }\n\n /**\n * Applies an array of commands to the current url tree and creates\n * a new url tree.\n *\n * When given a segment, applies the given commands starting from the segment.\n * When not given a segment, applies the given command starting from the root.\n *\n * ### Usage\n *\n * ```\n * // create /team/33/user/11\n * router.createUrlTree(['/team', 33, 'user', 11]);\n *\n * // create /team/33;expand=true/user/11\n * router.createUrlTree(['/team', 33, {expand: true}, 'user', 11]);\n *\n * // you can collapse static fragments like this\n * router.createUrlTree(['/team/33/user', userId]);\n *\n * // assuming the current url is `/team/33/user/11` and the segment points to `user/11`\n *\n * // navigate to /team/33/user/11/details\n * router.createUrlTree(['details'], segment);\n *\n * // navigate to /team/33/user/22\n * router.createUrlTree(['../22'], segment);\n *\n * // navigate to /team/44/user/22\n * router.createUrlTree(['../../team/44/user/22'], segment);\n * ```\n */\n createUrlTree(commands: any[], segment?: RouteSegment): UrlTree {\n let s = isPresent(segment) ? segment : this._routeTree.root;\n return link(s, this._routeTree, this.urlTree, commands);\n }\n\n /**\n * Serializes a {@link UrlTree} into a string.\n */\n serializeUrl(url: UrlTree): string { return this._urlSerializer.serialize(url); }\n\n private _setUpLocationChangeListener(): void {\n this._locationSubscription = this._location.subscribe(\n (change) => { this._navigate(this._urlSerializer.parse(change['url']), change['pop']); });\n }\n\n private _navigate(url: UrlTree, preventPushState?: boolean): Promise<void> {\n this._urlTree = url;\n return recognize(this._componentResolver, this._rootComponentType, url, this._routeTree)\n .then(currTree => {\n return new _ActivateSegments(currTree, this._routeTree)\n .activate(this._routerOutletMap, this._rootComponent)\n .then(updated => {\n if (updated) {\n this._routeTree = currTree;\n if (isBlank(preventPushState) || !preventPushState) {\n let path = this._urlSerializer.serialize(this._urlTree);\n if (this._location.isCurrentPathEqualTo(path)) {\n this._location.replaceState(path);\n } else {\n this._location.go(path);\n }\n }\n this._changes.emit(null);\n }\n });\n });\n }\n}\n\n\nclass _ActivateSegments {\n private deactivations: Object[][] = [];\n private performMutation: boolean = true;\n\n constructor(private currTree: RouteTree, private prevTree: RouteTree) {}\n\n activate(parentOutletMap: RouterOutletMap, rootComponent: Object): Promise<boolean> {\n let prevRoot = isPresent(this.prevTree) ? rootNode(this.prevTree) : null;\n let currRoot = rootNode(this.currTree);\n\n return this.canDeactivate(currRoot, prevRoot, parentOutletMap, rootComponent).then(res => {\n this.performMutation = true;\n if (res) {\n this.activateChildSegments(currRoot, prevRoot, parentOutletMap, [rootComponent]);\n }\n return res;\n });\n }\n\n private canDeactivate(\n currRoot: TreeNode<RouteSegment>, prevRoot: TreeNode<RouteSegment>,\n outletMap: RouterOutletMap, rootComponent: Object): Promise<boolean> {\n this.performMutation = false;\n this.activateChildSegments(currRoot, prevRoot, outletMap, [rootComponent]);\n\n let allPaths = PromiseWrapper.all(this.deactivations.map(r => this.checkCanDeactivatePath(r)));\n return allPaths.then((values: boolean[]) => values.filter(v => v).length === values.length);\n }\n\n private checkCanDeactivatePath(path: Object[]): Promise<boolean> {\n let curr = PromiseWrapper.resolve(true);\n for (let p of ListWrapper.reversed(path)) {\n curr = curr.then(_ => {\n if (hasLifecycleHook('routerCanDeactivate', p)) {\n return (<CanDeactivate>p).routerCanDeactivate(this.prevTree, this.currTree);\n } else {\n return _;\n }\n });\n }\n return curr;\n }\n\n private activateChildSegments(\n currNode: TreeNode<RouteSegment>, prevNode: TreeNode<RouteSegment>,\n outletMap: RouterOutletMap, components: Object[]): void {\n let prevChildren = isPresent(prevNode) ? prevNode.children.reduce((m, c) => {\n (m as any /** TODO #9100 */)[c.value.outlet] = c;\n return m;\n }, {}) : {};\n\n currNode.children.forEach(c => {\n this.activateSegments(\n c, (prevChildren as any /** TODO #9100 */)[c.value.outlet], outletMap, components);\n StringMapWrapper.delete(prevChildren, c.value.outlet);\n });\n\n StringMapWrapper.forEach(\n prevChildren, (v: any /** TODO #9100 */, k: any /** TODO #9100 */) =>\n this.deactivateOutlet(outletMap._outlets[k], components));\n }\n\n activateSegments(\n currNode: TreeNode<RouteSegment>, prevNode: TreeNode<RouteSegment>,\n parentOutletMap: RouterOutletMap, components: Object[]): void {\n let curr = currNode.value;\n let prev = isPresent(prevNode) ? prevNode.value : null;\n let outlet = this.getOutlet(parentOutletMap, currNode.value);\n\n if (curr === prev) {\n this.activateChildSegments(\n currNode, prevNode, outlet.outletMap, components.concat([outlet.component]));\n } else {\n this.deactivateOutlet(outlet, components);\n if (this.performMutation) {\n let outletMap = new RouterOutletMap();\n let component = this.activateNewSegments(outletMap, curr, prev, outlet);\n this.activateChildSegments(currNode, prevNode, outletMap, components.concat([component]));\n }\n }\n }\n\n private activateNewSegments(\n outletMap: RouterOutletMap, curr: RouteSegment, prev: RouteSegment,\n outlet: RouterOutlet): Object {\n let resolved = ReflectiveInjector.resolve(\n [{provide: RouterOutletMap, useValue: outletMap}, {provide: RouteSegment, useValue: curr}]);\n let ref = outlet.activate(routeSegmentComponentFactory(curr), resolved, outletMap);\n if (hasLifecycleHook('routerOnActivate', ref.instance)) {\n ref.instance.routerOnActivate(curr, prev, this.currTree, this.prevTree);\n }\n return ref.instance;\n }\n\n private getOutlet(outletMap: RouterOutletMap, segment: RouteSegment): RouterOutlet {\n let outlet = outletMap._outlets[segment.outlet];\n if (isBlank(outlet)) {\n if (segment.outlet == DEFAULT_OUTLET_NAME) {\n throw new BaseException(`Cannot find default outlet`);\n } else {\n throw new BaseException(`Cannot find the outlet ${segment.outlet}`);\n }\n }\n return outlet;\n }\n\n private deactivateOutlet(outlet: RouterOutlet, components: Object[]): void {\n if (isPresent(outlet) && outlet.isActivated) {\n StringMapWrapper.forEach(\n outlet.outletMap._outlets, (v: any /** TODO #9100 */, k: any /** TODO #9100 */) =>\n this.deactivateOutlet(v, components));\n if (this.performMutation) {\n outlet.deactivate();\n } else {\n this.deactivations.push(components.concat([outlet.component]));\n }\n }\n }\n}\n\ninterface DecoratorInvocation {\n type: Function;\n args?: any[];\n}\n"]}
|
package/src/router_providers.js
CHANGED
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var router_providers_common_1 = require('./router_providers_common');
|
|
3
|
-
var platform_browser_1 = require('@angular/platform-browser');
|
|
4
|
-
var common_1 = require('@angular/common');
|
|
5
3
|
/**
|
|
6
|
-
* A list of
|
|
4
|
+
* A list of providers. To use the router, you must add this to your application.
|
|
7
5
|
*
|
|
8
6
|
* ```
|
|
9
7
|
* import {Component} from '@angular/core';
|
|
@@ -24,8 +22,6 @@ var common_1 = require('@angular/common');
|
|
|
24
22
|
* bootstrap(AppCmp, [ROUTER_PROVIDERS]);
|
|
25
23
|
* ```
|
|
26
24
|
*/
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
/*@ts2dart_Provider*/ { provide: common_1.PlatformLocation, useClass: platform_browser_1.BrowserPlatformLocation },
|
|
30
|
-
];
|
|
25
|
+
// TODO: merge with router_providers_common.ts
|
|
26
|
+
exports.ROUTER_PROVIDERS = [router_providers_common_1.ROUTER_PROVIDERS_COMMON];
|
|
31
27
|
//# sourceMappingURL=router_providers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router_providers.js","sourceRoot":"","sources":["../../../../modules/@angular/router/src/router_providers.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"router_providers.js","sourceRoot":"","sources":["../../../../modules/@angular/router/src/router_providers.ts"],"names":[],"mappings":";AAAA,wCAAsC,2BAA2B,CAAC,CAAA;AAElE;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,8CAA8C;AACjC,wBAAgB,GAA4B,CAAC,iDAAuB,CAAC,CAAC","sourcesContent":["import {ROUTER_PROVIDERS_COMMON} from './router_providers_common';\n\n/**\n * A list of providers. To use the router, you must add this to your application.\n *\n * ```\n * import {Component} from '@angular/core';\n * import {\n * ROUTER_DIRECTIVES,\n * ROUTER_PROVIDERS,\n * Routes\n * } from '@angular/router';\n *\n * @Component({directives: [ROUTER_DIRECTIVES]})\n * @Routes([\n * {...},\n * ])\n * class AppCmp {\n * // ...\n * }\n *\n * bootstrap(AppCmp, [ROUTER_PROVIDERS]);\n * ```\n */\n// TODO: merge with router_providers_common.ts\nexport const ROUTER_PROVIDERS: any[] = /*@ts2dart_const*/[ROUTER_PROVIDERS_COMMON];\n\ninterface DecoratorInvocation {\n type: Function;\n args?: any[];\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"__symbolic":"module","metadata":{"ROUTER_PROVIDERS":[{"__symbolic":"reference","
|
|
1
|
+
{"__symbolic":"module","version":1,"metadata":{"ROUTER_PROVIDERS":[{"__symbolic":"reference","module":"./router_providers_common","name":"ROUTER_PROVIDERS_COMMON"}]}}
|
|
@@ -1,4 +1,11 @@
|
|
|
1
|
+
import { Location } from '@angular/common';
|
|
2
|
+
import { ApplicationRef, ComponentResolver } from '@angular/core';
|
|
3
|
+
import { Router, RouterOutletMap } from './router';
|
|
4
|
+
import { RouterUrlSerializer } from './router_url_serializer';
|
|
5
|
+
import { RouteSegment } from './segments';
|
|
1
6
|
/**
|
|
2
7
|
* The Platform agnostic ROUTER PROVIDERS
|
|
3
8
|
*/
|
|
4
9
|
export declare const ROUTER_PROVIDERS_COMMON: any[];
|
|
10
|
+
export declare function routerFactory(app: ApplicationRef, componentResolver: ComponentResolver, urlSerializer: RouterUrlSerializer, routerOutletMap: RouterOutletMap, location: Location): Router;
|
|
11
|
+
export declare function routeSegmentFactory(router: Router): RouteSegment;
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var core_1 = require('@angular/core');
|
|
3
2
|
var common_1 = require('@angular/common');
|
|
3
|
+
var core_1 = require('@angular/core');
|
|
4
4
|
var router_1 = require('./router');
|
|
5
5
|
var router_url_serializer_1 = require('./router_url_serializer');
|
|
6
|
-
var
|
|
7
|
-
var core_3 = require('@angular/core');
|
|
6
|
+
var segments_1 = require('./segments');
|
|
8
7
|
/**
|
|
9
8
|
* The Platform agnostic ROUTER PROVIDERS
|
|
10
9
|
*/
|
|
@@ -15,16 +14,22 @@ exports.ROUTER_PROVIDERS_COMMON = [
|
|
|
15
14
|
/*@ts2dart_Provider*/ {
|
|
16
15
|
provide: router_1.Router,
|
|
17
16
|
useFactory: routerFactory,
|
|
18
|
-
deps: /*@ts2dart_const*/ [
|
|
17
|
+
deps: /*@ts2dart_const*/ [core_1.ApplicationRef, core_1.ComponentResolver, router_url_serializer_1.RouterUrlSerializer, router_1.RouterOutletMap, common_1.Location],
|
|
19
18
|
},
|
|
19
|
+
/*@ts2dart_Provider*/ { provide: segments_1.RouteSegment, useFactory: routeSegmentFactory, deps: [router_1.Router] }
|
|
20
20
|
];
|
|
21
21
|
function routerFactory(app, componentResolver, urlSerializer, routerOutletMap, location) {
|
|
22
22
|
if (app.componentTypes.length == 0) {
|
|
23
|
-
throw new
|
|
23
|
+
throw new core_1.BaseException('Bootstrap at least one component before injecting Router.');
|
|
24
24
|
}
|
|
25
25
|
// TODO: vsavkin this should not be null
|
|
26
26
|
var router = new router_1.Router(null, app.componentTypes[0], componentResolver, urlSerializer, routerOutletMap, location);
|
|
27
27
|
app.registerDisposeListener(function () { return router.dispose(); });
|
|
28
28
|
return router;
|
|
29
29
|
}
|
|
30
|
+
exports.routerFactory = routerFactory;
|
|
31
|
+
function routeSegmentFactory(router) {
|
|
32
|
+
return router.routeTree.root;
|
|
33
|
+
}
|
|
34
|
+
exports.routeSegmentFactory = routeSegmentFactory;
|
|
30
35
|
//# sourceMappingURL=router_providers_common.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router_providers_common.js","sourceRoot":"","sources":["../../../../modules/@angular/router/src/router_providers_common.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"router_providers_common.js","sourceRoot":"","sources":["../../../../modules/@angular/router/src/router_providers_common.ts"],"names":[],"mappings":";AAAA,uBAA+D,iBAAiB,CAAC,CAAA;AACjF,qBAA+D,eAAe,CAAC,CAAA;AAE/E,uBAAsC,UAAU,CAAC,CAAA;AACjD,sCAA8D,yBAAyB,CAAC,CAAA;AACxF,yBAA2B,YAAY,CAAC,CAAA;AAGxC;;GAEG;AACU,+BAAuB,GAA4B;IAC9D,wBAAe;IACf,qBAAqB,CAAC,EAAC,OAAO,EAAE,2CAAmB,EAAE,QAAQ,EAAE,kDAA0B,EAAC;IAC1F,qBAAqB,CAAC,EAAC,OAAO,EAAE,yBAAgB,EAAE,QAAQ,EAAE,6BAAoB,EAAC,EAAE,iBAAQ;IAC3F,qBAAqB,CAAC;QACpB,OAAO,EAAE,eAAM;QACf,UAAU,EAAE,aAAa;QACzB,IAAI,EAAE,kBAAkB,CACpB,CAAC,qBAAc,EAAE,wBAAiB,EAAE,2CAAmB,EAAE,wBAAe,EAAE,iBAAQ,CAAC;KACxF;IACD,qBAAqB,CAAC,EAAC,OAAO,EAAE,uBAAY,EAAE,UAAU,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAAC,eAAM,CAAC,EAAC;CAC/F,CAAC;AAEF,uBACI,GAAmB,EAAE,iBAAoC,EAAE,aAAkC,EAC7F,eAAgC,EAAE,QAAkB;IACtD,EAAE,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC;QACnC,MAAM,IAAI,oBAAa,CAAC,2DAA2D,CAAC,CAAC;IACvF,CAAC;IACD,wCAAwC;IACxC,IAAI,MAAM,GAAG,IAAI,eAAM,CACnB,IAAI,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,aAAa,EAAE,eAAe,EAAE,QAAQ,CAAC,CAAC;IAC9F,GAAG,CAAC,uBAAuB,CAAC,cAAM,OAAA,MAAM,CAAC,OAAO,EAAE,EAAhB,CAAgB,CAAC,CAAC;IACpD,MAAM,CAAC,MAAM,CAAC;AAChB,CAAC;AAXe,qBAAa,gBAW5B,CAAA;AAED,6BAAoC,MAAc;IAChD,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC;AAC/B,CAAC;AAFe,2BAAmB,sBAElC,CAAA","sourcesContent":["import {Location, LocationStrategy, PathLocationStrategy} from '@angular/common';\nimport {ApplicationRef, BaseException, ComponentResolver} from '@angular/core';\n\nimport {Router, RouterOutletMap} from './router';\nimport {DefaultRouterUrlSerializer, RouterUrlSerializer} from './router_url_serializer';\nimport {RouteSegment} from './segments';\n\n\n/**\n * The Platform agnostic ROUTER PROVIDERS\n */\nexport const ROUTER_PROVIDERS_COMMON: any[] = /*@ts2dart_const*/[\n RouterOutletMap,\n /*@ts2dart_Provider*/ {provide: RouterUrlSerializer, useClass: DefaultRouterUrlSerializer},\n /*@ts2dart_Provider*/ {provide: LocationStrategy, useClass: PathLocationStrategy}, Location,\n /*@ts2dart_Provider*/ {\n provide: Router,\n useFactory: routerFactory,\n deps: /*@ts2dart_const*/\n [ApplicationRef, ComponentResolver, RouterUrlSerializer, RouterOutletMap, Location],\n },\n /*@ts2dart_Provider*/ {provide: RouteSegment, useFactory: routeSegmentFactory, deps: [Router]}\n];\n\nexport function routerFactory(\n app: ApplicationRef, componentResolver: ComponentResolver, urlSerializer: RouterUrlSerializer,\n routerOutletMap: RouterOutletMap, location: Location): Router {\n if (app.componentTypes.length == 0) {\n throw new BaseException('Bootstrap at least one component before injecting Router.');\n }\n // TODO: vsavkin this should not be null\n let router = new Router(\n null, app.componentTypes[0], componentResolver, urlSerializer, routerOutletMap, location);\n app.registerDisposeListener(() => router.dispose());\n return router;\n}\n\nexport function routeSegmentFactory(router: Router): RouteSegment {\n return router.routeTree.root;\n}\n\ninterface DecoratorInvocation {\n type: Function;\n args?: any[];\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"__symbolic":"module","metadata":{"ROUTER_PROVIDERS_COMMON":[{"__symbolic":"reference","
|
|
1
|
+
{"__symbolic":"module","version":1,"metadata":{"ROUTER_PROVIDERS_COMMON":[{"__symbolic":"reference","module":"./router","name":"RouterOutletMap"},{"provide":{"__symbolic":"reference","module":"./router_url_serializer","name":"RouterUrlSerializer"},"useClass":{"__symbolic":"reference","module":"./router_url_serializer","name":"DefaultRouterUrlSerializer"}},{"provide":{"__symbolic":"reference","module":"@angular/common","name":"LocationStrategy"},"useClass":{"__symbolic":"reference","module":"@angular/common","name":"PathLocationStrategy"}},{"__symbolic":"reference","module":"@angular/common","name":"Location"},{"provide":{"__symbolic":"reference","module":"./router","name":"Router"},"useFactory":{"__symbolic":"reference","name":"routerFactory"},"deps":[{"__symbolic":"reference","module":"@angular/core","name":"ApplicationRef"},{"__symbolic":"reference","module":"@angular/core","name":"ComponentResolver"},{"__symbolic":"reference","module":"./router_url_serializer","name":"RouterUrlSerializer"},{"__symbolic":"reference","module":"./router","name":"RouterOutletMap"},{"__symbolic":"reference","module":"@angular/common","name":"Location"}]},{"provide":{"__symbolic":"reference","module":"./segments","name":"RouteSegment"},"useFactory":{"__symbolic":"reference","name":"routeSegmentFactory"},"deps":[{"__symbolic":"reference","module":"./router","name":"Router"}]}],"routeSegmentFactory":{"__symbolic":"function","parameters":["router"],"value":{"__symbolic":"select","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"router"},"member":"routeTree"},"member":"root"}}}}
|
|
@@ -4,9 +4,9 @@ var __extends = (this && this.__extends) || function (d, b) {
|
|
|
4
4
|
function __() { this.constructor = d; }
|
|
5
5
|
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
6
6
|
};
|
|
7
|
-
var segments_1 = require('./segments');
|
|
8
7
|
var core_1 = require('@angular/core');
|
|
9
8
|
var lang_1 = require('./facade/lang');
|
|
9
|
+
var segments_1 = require('./segments');
|
|
10
10
|
/**
|
|
11
11
|
* Defines a way to serialize/deserialize a url tree.
|
|
12
12
|
*/
|
|
@@ -38,7 +38,7 @@ function _serializeUrlTreeNode(node) {
|
|
|
38
38
|
function _serializeUrlTreeNodes(nodes) {
|
|
39
39
|
var main = nodes[0].value.toString();
|
|
40
40
|
var auxNodes = nodes.slice(1);
|
|
41
|
-
var aux = auxNodes.length > 0 ? "(" + auxNodes.map(_serializeUrlTreeNode).join("//") + ")" :
|
|
41
|
+
var aux = auxNodes.length > 0 ? "(" + auxNodes.map(_serializeUrlTreeNode).join("//") + ")" : '';
|
|
42
42
|
var children = _serializeChildren(nodes[0]);
|
|
43
43
|
return "" + main + aux + children;
|
|
44
44
|
}
|
|
@@ -47,7 +47,7 @@ function _serializeChildren(node) {
|
|
|
47
47
|
return "/" + _serializeUrlTreeNodes(node.children);
|
|
48
48
|
}
|
|
49
49
|
else {
|
|
50
|
-
return
|
|
50
|
+
return '';
|
|
51
51
|
}
|
|
52
52
|
}
|
|
53
53
|
var SEGMENT_RE = lang_1.RegExpWrapper.create('^[^\\/\\(\\)\\?;=&#]+');
|
|
@@ -93,8 +93,8 @@ var _UrlParser = (function () {
|
|
|
93
93
|
}
|
|
94
94
|
var path = matchUrlSegment(this._remaining);
|
|
95
95
|
this.capture(path);
|
|
96
|
-
if (path.indexOf(
|
|
97
|
-
var parts = path.split(
|
|
96
|
+
if (path.indexOf(':') > -1) {
|
|
97
|
+
var parts = path.split(':');
|
|
98
98
|
outletName = parts[0];
|
|
99
99
|
path = parts[1];
|
|
100
100
|
}
|
|
@@ -139,7 +139,7 @@ var _UrlParser = (function () {
|
|
|
139
139
|
return;
|
|
140
140
|
}
|
|
141
141
|
this.capture(key);
|
|
142
|
-
var value =
|
|
142
|
+
var value = 'true';
|
|
143
143
|
if (this.peekStartsWith('=')) {
|
|
144
144
|
this.capture('=');
|
|
145
145
|
var valueMatch = matchUrlSegment(this._remaining);
|
|
@@ -156,7 +156,7 @@ var _UrlParser = (function () {
|
|
|
156
156
|
return;
|
|
157
157
|
}
|
|
158
158
|
this.capture(key);
|
|
159
|
-
var value =
|
|
159
|
+
var value = 'true';
|
|
160
160
|
if (this.peekStartsWith('=')) {
|
|
161
161
|
this.capture('=');
|
|
162
162
|
var valueMatch = matchUrlQueryParamValue(this._remaining);
|
|
@@ -171,7 +171,7 @@ var _UrlParser = (function () {
|
|
|
171
171
|
var segments = [];
|
|
172
172
|
this.capture('(');
|
|
173
173
|
while (!this.peekStartsWith(')') && this._remaining.length > 0) {
|
|
174
|
-
segments = segments.concat(this.parseSegments(
|
|
174
|
+
segments = segments.concat(this.parseSegments('aux'));
|
|
175
175
|
if (this.peekStartsWith('//')) {
|
|
176
176
|
this.capture('//');
|
|
177
177
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router_url_serializer.js","sourceRoot":"","sources":["../../../../modules/@angular/router/src/router_url_serializer.ts"],"names":[],"mappings":"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","sourcesContent":["interface DecoratorInvocation {\n type: Function;\n args?: any[];\n }\n import {UrlSegment, Tree, TreeNode, rootNode, UrlTree} from './segments';\nimport {BaseException} from '@angular/core';\nimport {isBlank, isPresent, RegExpWrapper} from './facade/lang';\n\n/**\n * Defines a way to serialize/deserialize a url tree.\n */\nexport abstract class RouterUrlSerializer {\n /**\n * Parse a url into a {@Link UrlTree}\n */\n abstract parse(url: string): UrlTree;\n\n /**\n * Converts a {@Link UrlTree} into a url\n */\n abstract serialize(tree: UrlTree): string;\n}\n\n/**\n * A default implementation of the serialization.\n */\nexport class DefaultRouterUrlSerializer extends RouterUrlSerializer {\n parse(url: string): UrlTree {\n let root = new _UrlParser().parse(url);\n return new UrlTree(root);\n }\n\n serialize(tree: UrlTree): string { return _serializeUrlTreeNode(rootNode(tree)); }\n}\n\nfunction _serializeUrlTreeNode(node: TreeNode<UrlSegment>): string {\n return `${node.value}${_serializeChildren(node)}`;\n}\n\nfunction _serializeUrlTreeNodes(nodes: TreeNode<UrlSegment>[]): string {\n let main = nodes[0].value.toString();\n let auxNodes = nodes.slice(1);\n let aux = auxNodes.length > 0 ? `(${auxNodes.map(_serializeUrlTreeNode).join(\"//\")})` : \"\";\n let children = _serializeChildren(nodes[0]);\n return `${main}${aux}${children}`;\n}\n\nfunction _serializeChildren(node: TreeNode<UrlSegment>): string {\n if (node.children.length > 0) {\n return `/${_serializeUrlTreeNodes(node.children)}`;\n } else {\n return \"\";\n }\n}\n\nvar SEGMENT_RE = RegExpWrapper.create('^[^\\\\/\\\\(\\\\)\\\\?;=&#]+');\nfunction matchUrlSegment(str: string): string {\n var match = RegExpWrapper.firstMatch(SEGMENT_RE, str);\n return isPresent(match) ? match[0] : '';\n}\nvar QUERY_PARAM_VALUE_RE = RegExpWrapper.create('^[^\\\\(\\\\)\\\\?;&#]+');\nfunction matchUrlQueryParamValue(str: string): string {\n var match = RegExpWrapper.firstMatch(QUERY_PARAM_VALUE_RE, str);\n return isPresent(match) ? match[0] : '';\n}\n\nclass _UrlParser {\n private _remaining: string;\n\n peekStartsWith(str: string): boolean { return this._remaining.startsWith(str); }\n\n capture(str: string): void {\n if (!this._remaining.startsWith(str)) {\n throw new BaseException(`Expected \"${str}\".`);\n }\n this._remaining = this._remaining.substring(str.length);\n }\n\n parse(url: string): TreeNode<UrlSegment> {\n this._remaining = url;\n if (url == '' || url == '/') {\n return new TreeNode<UrlSegment>(new UrlSegment('', {}, null), []);\n } else {\n return this.parseRoot();\n }\n }\n\n parseRoot(): TreeNode<UrlSegment> {\n let segments = this.parseSegments();\n return new TreeNode<UrlSegment>(new UrlSegment('', {}, null), segments);\n }\n\n parseSegments(outletName: string = null): TreeNode<UrlSegment>[] {\n if (this._remaining.length == 0) {\n return [];\n }\n if (this.peekStartsWith('/')) {\n this.capture('/');\n }\n var path = matchUrlSegment(this._remaining);\n this.capture(path);\n\n\n if (path.indexOf(\":\") > -1) {\n let parts = path.split(\":\");\n outletName = parts[0];\n path = parts[1];\n }\n\n var matrixParams: {[key: string]: any} = {};\n if (this.peekStartsWith(';')) {\n matrixParams = this.parseMatrixParams();\n }\n\n var aux = [];\n if (this.peekStartsWith('(')) {\n aux = this.parseAuxiliaryRoutes();\n }\n\n var children: TreeNode<UrlSegment>[] = [];\n if (this.peekStartsWith('/') && !this.peekStartsWith('//')) {\n this.capture('/');\n children = this.parseSegments();\n }\n\n let segment = new UrlSegment(path, matrixParams, outletName);\n let node = new TreeNode<UrlSegment>(segment, children);\n return [node].concat(aux);\n }\n\n parseQueryParams(): {[key: string]: any} {\n var params: {[key: string]: any} = {};\n this.capture('?');\n this.parseQueryParam(params);\n while (this._remaining.length > 0 && this.peekStartsWith('&')) {\n this.capture('&');\n this.parseQueryParam(params);\n }\n return params;\n }\n\n parseMatrixParams(): {[key: string]: any} {\n var params: {[key: string]: any} = {};\n while (this._remaining.length > 0 && this.peekStartsWith(';')) {\n this.capture(';');\n this.parseParam(params);\n }\n return params;\n }\n\n parseParam(params: {[key: string]: any}): void {\n var key = matchUrlSegment(this._remaining);\n if (isBlank(key)) {\n return;\n }\n this.capture(key);\n var value: any = \"true\";\n if (this.peekStartsWith('=')) {\n this.capture('=');\n var valueMatch = matchUrlSegment(this._remaining);\n if (isPresent(valueMatch)) {\n value = valueMatch;\n this.capture(value);\n }\n }\n\n params[key] = value;\n }\n\n parseQueryParam(params: {[key: string]: any}): void {\n var key = matchUrlSegment(this._remaining);\n if (isBlank(key)) {\n return;\n }\n this.capture(key);\n var value: any = \"true\";\n if (this.peekStartsWith('=')) {\n this.capture('=');\n var valueMatch = matchUrlQueryParamValue(this._remaining);\n if (isPresent(valueMatch)) {\n value = valueMatch;\n this.capture(value);\n }\n }\n\n params[key] = value;\n }\n\n parseAuxiliaryRoutes(): TreeNode<UrlSegment>[] {\n var segments = [];\n this.capture('(');\n\n while (!this.peekStartsWith(')') && this._remaining.length > 0) {\n segments = segments.concat(this.parseSegments(\"aux\"));\n if (this.peekStartsWith('//')) {\n this.capture('//');\n }\n }\n this.capture(')');\n\n return segments;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"router_url_serializer.js","sourceRoot":"","sources":["../../../../modules/@angular/router/src/router_url_serializer.ts"],"names":[],"mappings":"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","sourcesContent":["import {BaseException} from '@angular/core';\n\nimport {RegExpWrapper, isBlank, isPresent} from './facade/lang';\nimport {Tree, TreeNode, UrlSegment, UrlTree, rootNode} from './segments';\n\n\n/**\n * Defines a way to serialize/deserialize a url tree.\n */\nexport abstract class RouterUrlSerializer {\n /**\n * Parse a url into a {@Link UrlTree}\n */\n abstract parse(url: string): UrlTree;\n\n /**\n * Converts a {@Link UrlTree} into a url\n */\n abstract serialize(tree: UrlTree): string;\n}\n\n/**\n * A default implementation of the serialization.\n */\nexport class DefaultRouterUrlSerializer extends RouterUrlSerializer {\n parse(url: string): UrlTree {\n let root = new _UrlParser().parse(url);\n return new UrlTree(root);\n }\n\n serialize(tree: UrlTree): string { return _serializeUrlTreeNode(rootNode(tree)); }\n}\n\nfunction _serializeUrlTreeNode(node: TreeNode<UrlSegment>): string {\n return `${node.value}${_serializeChildren(node)}`;\n}\n\nfunction _serializeUrlTreeNodes(nodes: TreeNode<UrlSegment>[]): string {\n let main = nodes[0].value.toString();\n let auxNodes = nodes.slice(1);\n let aux = auxNodes.length > 0 ? `(${auxNodes.map(_serializeUrlTreeNode).join(\"//\")})` : '';\n let children = _serializeChildren(nodes[0]);\n return `${main}${aux}${children}`;\n}\n\nfunction _serializeChildren(node: TreeNode<UrlSegment>): string {\n if (node.children.length > 0) {\n return `/${_serializeUrlTreeNodes(node.children)}`;\n } else {\n return '';\n }\n}\n\nvar SEGMENT_RE = RegExpWrapper.create('^[^\\\\/\\\\(\\\\)\\\\?;=&#]+');\nfunction matchUrlSegment(str: string): string {\n var match = RegExpWrapper.firstMatch(SEGMENT_RE, str);\n return isPresent(match) ? match[0] : '';\n}\nvar QUERY_PARAM_VALUE_RE = RegExpWrapper.create('^[^\\\\(\\\\)\\\\?;&#]+');\nfunction matchUrlQueryParamValue(str: string): string {\n var match = RegExpWrapper.firstMatch(QUERY_PARAM_VALUE_RE, str);\n return isPresent(match) ? match[0] : '';\n}\n\nclass _UrlParser {\n private _remaining: string;\n\n peekStartsWith(str: string): boolean { return this._remaining.startsWith(str); }\n\n capture(str: string): void {\n if (!this._remaining.startsWith(str)) {\n throw new BaseException(`Expected \"${str}\".`);\n }\n this._remaining = this._remaining.substring(str.length);\n }\n\n parse(url: string): TreeNode<UrlSegment> {\n this._remaining = url;\n if (url == '' || url == '/') {\n return new TreeNode<UrlSegment>(new UrlSegment('', {}, null), []);\n } else {\n return this.parseRoot();\n }\n }\n\n parseRoot(): TreeNode<UrlSegment> {\n let segments = this.parseSegments();\n return new TreeNode<UrlSegment>(new UrlSegment('', {}, null), segments);\n }\n\n parseSegments(outletName: string = null): TreeNode<UrlSegment>[] {\n if (this._remaining.length == 0) {\n return [];\n }\n if (this.peekStartsWith('/')) {\n this.capture('/');\n }\n var path = matchUrlSegment(this._remaining);\n this.capture(path);\n\n\n if (path.indexOf(':') > -1) {\n let parts = path.split(':');\n outletName = parts[0];\n path = parts[1];\n }\n\n var matrixParams: {[key: string]: any} = {};\n if (this.peekStartsWith(';')) {\n matrixParams = this.parseMatrixParams();\n }\n\n var aux: any[] /** TODO #9100 */ = [];\n if (this.peekStartsWith('(')) {\n aux = this.parseAuxiliaryRoutes();\n }\n\n var children: TreeNode<UrlSegment>[] = [];\n if (this.peekStartsWith('/') && !this.peekStartsWith('//')) {\n this.capture('/');\n children = this.parseSegments();\n }\n\n let segment = new UrlSegment(path, matrixParams, outletName);\n let node = new TreeNode<UrlSegment>(segment, children);\n return [node].concat(aux);\n }\n\n parseQueryParams(): {[key: string]: any} {\n var params: {[key: string]: any} = {};\n this.capture('?');\n this.parseQueryParam(params);\n while (this._remaining.length > 0 && this.peekStartsWith('&')) {\n this.capture('&');\n this.parseQueryParam(params);\n }\n return params;\n }\n\n parseMatrixParams(): {[key: string]: any} {\n var params: {[key: string]: any} = {};\n while (this._remaining.length > 0 && this.peekStartsWith(';')) {\n this.capture(';');\n this.parseParam(params);\n }\n return params;\n }\n\n parseParam(params: {[key: string]: any}): void {\n var key = matchUrlSegment(this._remaining);\n if (isBlank(key)) {\n return;\n }\n this.capture(key);\n var value: any = 'true';\n if (this.peekStartsWith('=')) {\n this.capture('=');\n var valueMatch = matchUrlSegment(this._remaining);\n if (isPresent(valueMatch)) {\n value = valueMatch;\n this.capture(value);\n }\n }\n\n params[key] = value;\n }\n\n parseQueryParam(params: {[key: string]: any}): void {\n var key = matchUrlSegment(this._remaining);\n if (isBlank(key)) {\n return;\n }\n this.capture(key);\n var value: any = 'true';\n if (this.peekStartsWith('=')) {\n this.capture('=');\n var valueMatch = matchUrlQueryParamValue(this._remaining);\n if (isPresent(valueMatch)) {\n value = valueMatch;\n this.capture(value);\n }\n }\n\n params[key] = value;\n }\n\n parseAuxiliaryRoutes(): TreeNode<UrlSegment>[] {\n var segments: any[] /** TODO #9100 */ = [];\n this.capture('(');\n\n while (!this.peekStartsWith(')') && this._remaining.length > 0) {\n segments = segments.concat(this.parseSegments('aux'));\n if (this.peekStartsWith('//')) {\n this.capture('//');\n }\n }\n this.capture(')');\n\n return segments;\n }\n}\n\ninterface DecoratorInvocation {\n type: Function;\n args?: any[];\n}\n"]}
|
package/src/segments.d.ts
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
import { ComponentFactory, Type } from '@angular/core';
|
|
2
2
|
export declare class Tree<T> {
|
|
3
|
-
/** @internal */
|
|
4
|
-
_root: TreeNode<T>;
|
|
5
3
|
constructor(root: TreeNode<T>);
|
|
6
4
|
root: T;
|
|
7
5
|
parent(t: T): T;
|
|
@@ -25,32 +23,29 @@ export declare class TreeNode<T> {
|
|
|
25
23
|
export declare class UrlSegment {
|
|
26
24
|
segment: any;
|
|
27
25
|
parameters: {
|
|
28
|
-
[key: string]:
|
|
26
|
+
[key: string]: string;
|
|
29
27
|
};
|
|
30
28
|
outlet: string;
|
|
31
29
|
constructor(segment: any, parameters: {
|
|
32
|
-
[key: string]:
|
|
30
|
+
[key: string]: string;
|
|
33
31
|
}, outlet: string);
|
|
34
32
|
toString(): string;
|
|
35
33
|
}
|
|
36
34
|
export declare class RouteSegment {
|
|
37
35
|
urlSegments: UrlSegment[];
|
|
38
36
|
parameters: {
|
|
39
|
-
[key: string]:
|
|
37
|
+
[key: string]: string;
|
|
40
38
|
};
|
|
41
39
|
outlet: string;
|
|
42
|
-
/** @internal */
|
|
43
|
-
_type: Type;
|
|
44
|
-
/** @internal */
|
|
45
|
-
_componentFactory: ComponentFactory<any>;
|
|
46
40
|
constructor(urlSegments: UrlSegment[], parameters: {
|
|
47
|
-
[key: string]:
|
|
41
|
+
[key: string]: string;
|
|
48
42
|
}, outlet: string, type: Type, componentFactory: ComponentFactory<any>);
|
|
49
43
|
getParam(param: string): string;
|
|
44
|
+
getParamAsNumber(param: string): number;
|
|
50
45
|
type: Type;
|
|
51
46
|
stringifiedUrlSegments: string;
|
|
52
47
|
}
|
|
48
|
+
export declare function createEmptyRouteTree(type: Type): RouteTree;
|
|
53
49
|
export declare function serializeRouteSegmentTree(tree: RouteTree): string;
|
|
54
|
-
export declare function
|
|
55
|
-
export declare function equalUrlSegments(a: UrlSegment, b: UrlSegment): boolean;
|
|
50
|
+
export declare function equalUrlSegments(a: UrlSegment[], b: UrlSegment[]): boolean;
|
|
56
51
|
export declare function routeSegmentComponentFactory(a: RouteSegment): ComponentFactory<any>;
|
package/src/segments.js
CHANGED
|
@@ -4,6 +4,7 @@ var __extends = (this && this.__extends) || function (d, b) {
|
|
|
4
4
|
function __() { this.constructor = d; }
|
|
5
5
|
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
6
6
|
};
|
|
7
|
+
var constants_1 = require('./constants');
|
|
7
8
|
var collection_1 = require('./facade/collection');
|
|
8
9
|
var lang_1 = require('./facade/lang');
|
|
9
10
|
var Tree = (function () {
|
|
@@ -53,9 +54,6 @@ function rootNode(tree) {
|
|
|
53
54
|
}
|
|
54
55
|
exports.rootNode = rootNode;
|
|
55
56
|
function _findNode(expected, c) {
|
|
56
|
-
// TODO: vsavkin remove it once recognize is fixed
|
|
57
|
-
if (expected instanceof RouteSegment && equalSegments(expected, c.value))
|
|
58
|
-
return c;
|
|
59
57
|
if (expected === c.value)
|
|
60
58
|
return c;
|
|
61
59
|
for (var _i = 0, _a = c.children; _i < _a.length; _i++) {
|
|
@@ -68,8 +66,7 @@ function _findNode(expected, c) {
|
|
|
68
66
|
}
|
|
69
67
|
function _findPath(expected, c, collected) {
|
|
70
68
|
collected.push(c);
|
|
71
|
-
|
|
72
|
-
if (_equalValues(expected, c.value))
|
|
69
|
+
if (expected === c.value)
|
|
73
70
|
return collected;
|
|
74
71
|
for (var _i = 0, _a = c.children; _i < _a.length; _i++) {
|
|
75
72
|
var cc = _a[_i];
|
|
@@ -80,10 +77,10 @@ function _findPath(expected, c, collected) {
|
|
|
80
77
|
return null;
|
|
81
78
|
}
|
|
82
79
|
function _contains(tree, subtree) {
|
|
83
|
-
if (
|
|
80
|
+
if (tree.value !== subtree.value)
|
|
84
81
|
return false;
|
|
85
82
|
var _loop_1 = function(subtreeNode) {
|
|
86
|
-
var s = tree.children.filter(function (child) { return
|
|
83
|
+
var s = tree.children.filter(function (child) { return child.value === subtreeNode.value; });
|
|
87
84
|
if (s.length === 0)
|
|
88
85
|
return { value: false };
|
|
89
86
|
if (!_contains(s[0], subtreeNode))
|
|
@@ -96,13 +93,6 @@ function _contains(tree, subtree) {
|
|
|
96
93
|
}
|
|
97
94
|
return true;
|
|
98
95
|
}
|
|
99
|
-
function _equalValues(a, b) {
|
|
100
|
-
if (a instanceof RouteSegment)
|
|
101
|
-
return equalSegments(a, b);
|
|
102
|
-
if (a instanceof UrlSegment)
|
|
103
|
-
return equalUrlSegments(a, b);
|
|
104
|
-
return a === b;
|
|
105
|
-
}
|
|
106
96
|
var TreeNode = (function () {
|
|
107
97
|
function TreeNode(value, children) {
|
|
108
98
|
this.value = value;
|
|
@@ -118,15 +108,15 @@ var UrlSegment = (function () {
|
|
|
118
108
|
this.outlet = outlet;
|
|
119
109
|
}
|
|
120
110
|
UrlSegment.prototype.toString = function () {
|
|
121
|
-
var outletPrefix = lang_1.isBlank(this.outlet) ?
|
|
111
|
+
var outletPrefix = lang_1.isBlank(this.outlet) ? '' : this.outlet + ":";
|
|
122
112
|
return "" + outletPrefix + this.segment + _serializeParams(this.parameters);
|
|
123
113
|
};
|
|
124
114
|
return UrlSegment;
|
|
125
115
|
}());
|
|
126
116
|
exports.UrlSegment = UrlSegment;
|
|
127
117
|
function _serializeParams(params) {
|
|
128
|
-
var res =
|
|
129
|
-
collection_1.StringMapWrapper.forEach(params, function (v
|
|
118
|
+
var res = '';
|
|
119
|
+
collection_1.StringMapWrapper.forEach(params, function (v /** TODO #9100 */, k /** TODO #9100 */) { return res += ";" + k + "=" + v; });
|
|
130
120
|
return res;
|
|
131
121
|
}
|
|
132
122
|
var RouteSegment = (function () {
|
|
@@ -140,56 +130,48 @@ var RouteSegment = (function () {
|
|
|
140
130
|
RouteSegment.prototype.getParam = function (param) {
|
|
141
131
|
return lang_1.isPresent(this.parameters) ? this.parameters[param] : null;
|
|
142
132
|
};
|
|
133
|
+
RouteSegment.prototype.getParamAsNumber = function (param) {
|
|
134
|
+
return lang_1.isPresent(this.parameters) ? lang_1.NumberWrapper.parseFloat(this.parameters[param]) : null;
|
|
135
|
+
};
|
|
143
136
|
Object.defineProperty(RouteSegment.prototype, "type", {
|
|
144
137
|
get: function () { return this._type; },
|
|
145
138
|
enumerable: true,
|
|
146
139
|
configurable: true
|
|
147
140
|
});
|
|
148
141
|
Object.defineProperty(RouteSegment.prototype, "stringifiedUrlSegments", {
|
|
149
|
-
get: function () { return this.urlSegments.map(function (s) { return s.toString(); }).join(
|
|
142
|
+
get: function () { return this.urlSegments.map(function (s) { return s.toString(); }).join('/'); },
|
|
150
143
|
enumerable: true,
|
|
151
144
|
configurable: true
|
|
152
145
|
});
|
|
153
146
|
return RouteSegment;
|
|
154
147
|
}());
|
|
155
148
|
exports.RouteSegment = RouteSegment;
|
|
149
|
+
function createEmptyRouteTree(type) {
|
|
150
|
+
var root = new RouteSegment([new UrlSegment('', {}, null)], {}, constants_1.DEFAULT_OUTLET_NAME, type, null);
|
|
151
|
+
return new RouteTree(new TreeNode(root, []));
|
|
152
|
+
}
|
|
153
|
+
exports.createEmptyRouteTree = createEmptyRouteTree;
|
|
156
154
|
function serializeRouteSegmentTree(tree) {
|
|
157
155
|
return _serializeRouteSegmentTree(tree._root);
|
|
158
156
|
}
|
|
159
157
|
exports.serializeRouteSegmentTree = serializeRouteSegmentTree;
|
|
160
158
|
function _serializeRouteSegmentTree(node) {
|
|
161
159
|
var v = node.value;
|
|
162
|
-
var children = node.children.map(function (c) { return _serializeRouteSegmentTree(c); }).join(
|
|
160
|
+
var children = node.children.map(function (c) { return _serializeRouteSegmentTree(c); }).join(', ');
|
|
163
161
|
return v.outlet + ":" + v.stringifiedUrlSegments + "(" + lang_1.stringify(v.type) + ") [" + children + "]";
|
|
164
162
|
}
|
|
165
|
-
function equalSegments(a, b) {
|
|
166
|
-
if (lang_1.isBlank(a) && !lang_1.isBlank(b))
|
|
167
|
-
return false;
|
|
168
|
-
if (!lang_1.isBlank(a) && lang_1.isBlank(b))
|
|
169
|
-
return false;
|
|
170
|
-
if (a._type !== b._type)
|
|
171
|
-
return false;
|
|
172
|
-
if (a.outlet != b.outlet)
|
|
173
|
-
return false;
|
|
174
|
-
return collection_1.StringMapWrapper.equals(a.parameters, b.parameters);
|
|
175
|
-
}
|
|
176
|
-
exports.equalSegments = equalSegments;
|
|
177
163
|
function equalUrlSegments(a, b) {
|
|
178
|
-
if (
|
|
179
|
-
return false;
|
|
180
|
-
if (!lang_1.isBlank(a) && lang_1.isBlank(b))
|
|
181
|
-
return false;
|
|
182
|
-
if (a.segment != b.segment)
|
|
164
|
+
if (a.length !== b.length)
|
|
183
165
|
return false;
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
166
|
+
for (var i = 0; i < a.length; ++i) {
|
|
167
|
+
if (a[i].segment != b[i].segment)
|
|
168
|
+
return false;
|
|
169
|
+
if (a[i].outlet != b[i].outlet)
|
|
170
|
+
return false;
|
|
171
|
+
if (!collection_1.StringMapWrapper.equals(a[i].parameters, b[i].parameters))
|
|
172
|
+
return false;
|
|
191
173
|
}
|
|
192
|
-
return
|
|
174
|
+
return true;
|
|
193
175
|
}
|
|
194
176
|
exports.equalUrlSegments = equalUrlSegments;
|
|
195
177
|
function routeSegmentComponentFactory(a) {
|
package/src/segments.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"segments.js","sourceRoot":"","sources":["../../../../modules/@angular/router/src/segments.ts"],"names":[],"mappings":"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","sourcesContent":["interface DecoratorInvocation {\n type: Function;\n args?: any[];\n }\n import {ComponentFactory, Type} from '@angular/core';\nimport {StringMapWrapper, ListWrapper} from './facade/collection';\nimport {isBlank, isPresent, stringify} from './facade/lang';\n\nexport class Tree<T> {\n /** @internal */\n _root: TreeNode<T>;\n\n constructor(root: TreeNode<T>) { this._root = root; }\n\n get root(): T { return this._root.value; }\n\n parent(t: T): T {\n let p = this.pathFromRoot(t);\n return p.length > 1 ? p[p.length - 2] : null;\n }\n\n children(t: T): T[] {\n let n = _findNode(t, this._root);\n return isPresent(n) ? n.children.map(t => t.value) : null;\n }\n\n firstChild(t: T): T {\n let n = _findNode(t, this._root);\n return isPresent(n) && n.children.length > 0 ? n.children[0].value : null;\n }\n\n pathFromRoot(t: T): T[] { return _findPath(t, this._root, []).map(s => s.value); }\n\n contains(tree: Tree<T>): boolean { return _contains(this._root, tree._root); }\n}\n\nexport class UrlTree extends Tree<UrlSegment> {\n constructor(root: TreeNode<UrlSegment>) { super(root); }\n}\n\nexport class RouteTree extends Tree<RouteSegment> {\n constructor(root: TreeNode<RouteSegment>) { super(root); }\n}\n\nexport function rootNode<T>(tree: Tree<T>): TreeNode<T> {\n return tree._root;\n}\n\nfunction _findNode<T>(expected: T, c: TreeNode<T>): TreeNode<T> {\n // TODO: vsavkin remove it once recognize is fixed\n if (expected instanceof RouteSegment && equalSegments(<any>expected, <any>c.value)) return c;\n if (expected === c.value) return c;\n for (let cc of c.children) {\n let r = _findNode(expected, cc);\n if (isPresent(r)) return r;\n }\n return null;\n}\n\nfunction _findPath<T>(expected: T, c: TreeNode<T>, collected: TreeNode<T>[]): TreeNode<T>[] {\n collected.push(c);\n\n // TODO: vsavkin remove it once recognize is fixed\n if (_equalValues(expected, c.value)) return collected;\n\n for (let cc of c.children) {\n let r = _findPath(expected, cc, ListWrapper.clone(collected));\n if (isPresent(r)) return r;\n }\n\n return null;\n}\n\nfunction _contains<T>(tree: TreeNode<T>, subtree: TreeNode<T>): boolean {\n if (!_equalValues(tree.value, subtree.value)) return false;\n\n for (let subtreeNode of subtree.children) {\n let s = tree.children.filter(child => _equalValues(child.value, subtreeNode.value));\n if (s.length === 0) return false;\n if (!_contains(s[0], subtreeNode)) return false;\n }\n\n return true;\n}\n\nfunction _equalValues(a: any, b: any): boolean {\n if (a instanceof RouteSegment) return equalSegments(<any>a, <any>b);\n if (a instanceof UrlSegment) return equalUrlSegments(<any>a, <any>b);\n return a === b;\n}\n\nexport class TreeNode<T> {\n constructor(public value: T, public children: TreeNode<T>[]) {}\n}\n\nexport class UrlSegment {\n constructor(public segment: any, public parameters: {[key: string]: any},\n public outlet: string) {}\n\n toString(): string {\n let outletPrefix = isBlank(this.outlet) ? \"\" : `${this.outlet}:`;\n return `${outletPrefix}${this.segment}${_serializeParams(this.parameters)}`;\n }\n}\n\nfunction _serializeParams(params: {[key: string]: string}): string {\n let res = \"\";\n StringMapWrapper.forEach(params, (v, k) => res += `;${k}=${v}`);\n return res;\n}\n\nexport class RouteSegment {\n /** @internal */\n _type: Type;\n\n /** @internal */\n _componentFactory: ComponentFactory<any>;\n\n constructor(public urlSegments: UrlSegment[], public parameters: {[key: string]: any},\n public outlet: string, type: Type, componentFactory: ComponentFactory<any>) {\n this._type = type;\n this._componentFactory = componentFactory;\n }\n\n getParam(param: string): string {\n return isPresent(this.parameters) ? this.parameters[param] : null;\n }\n\n get type(): Type { return this._type; }\n\n get stringifiedUrlSegments(): string { return this.urlSegments.map(s => s.toString()).join(\"/\"); }\n}\n\nexport function serializeRouteSegmentTree(tree: RouteTree): string {\n return _serializeRouteSegmentTree(tree._root);\n}\n\nfunction _serializeRouteSegmentTree(node: TreeNode<RouteSegment>): string {\n let v = node.value;\n let children = node.children.map(c => _serializeRouteSegmentTree(c)).join(\", \");\n return `${v.outlet}:${v.stringifiedUrlSegments}(${stringify(v.type)}) [${children}]`;\n}\n\nexport function equalSegments(a: RouteSegment, b: RouteSegment): boolean {\n if (isBlank(a) && !isBlank(b)) return false;\n if (!isBlank(a) && isBlank(b)) return false;\n if (a._type !== b._type) return false;\n if (a.outlet != b.outlet) return false;\n return StringMapWrapper.equals(a.parameters, b.parameters);\n}\n\nexport function equalUrlSegments(a: UrlSegment, b: UrlSegment): boolean {\n if (isBlank(a) && !isBlank(b)) return false;\n if (!isBlank(a) && isBlank(b)) return false;\n if (a.segment != b.segment) return false;\n if (a.outlet != b.outlet) return false;\n if (isBlank(a.parameters)) {\n console.log(\"a\", a);\n }\n if (isBlank(b.parameters)) {\n console.log(\"b\", b);\n }\n return StringMapWrapper.equals(a.parameters, b.parameters);\n}\n\nexport function routeSegmentComponentFactory(a: RouteSegment): ComponentFactory<any> {\n return a._componentFactory;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"segments.js","sourceRoot":"","sources":["../../../../modules/@angular/router/src/segments.ts"],"names":[],"mappings":"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","sourcesContent":["import {ComponentFactory, Type} from '@angular/core';\n\nimport {DEFAULT_OUTLET_NAME} from './constants';\nimport {ListWrapper, StringMapWrapper} from './facade/collection';\nimport {NumberWrapper, isBlank, isPresent, stringify} from './facade/lang';\n\nexport class Tree<T> {\n /** @internal */\n _root: TreeNode<T>;\n\n constructor(root: TreeNode<T>) { this._root = root; }\n\n get root(): T { return this._root.value; }\n\n parent(t: T): T {\n let p = this.pathFromRoot(t);\n return p.length > 1 ? p[p.length - 2] : null;\n }\n\n children(t: T): T[] {\n let n = _findNode(t, this._root);\n return isPresent(n) ? n.children.map(t => t.value) : null;\n }\n\n firstChild(t: T): T {\n let n = _findNode(t, this._root);\n return isPresent(n) && n.children.length > 0 ? n.children[0].value : null;\n }\n\n pathFromRoot(t: T): T[] { return _findPath(t, this._root, []).map(s => s.value); }\n\n contains(tree: Tree<T>): boolean { return _contains(this._root, tree._root); }\n}\n\nexport class UrlTree extends Tree<UrlSegment> {\n constructor(root: TreeNode<UrlSegment>) { super(root); }\n}\n\nexport class RouteTree extends Tree<RouteSegment> {\n constructor(root: TreeNode<RouteSegment>) { super(root); }\n}\n\nexport function rootNode<T>(tree: Tree<T>): TreeNode<T> {\n return tree._root;\n}\n\nfunction _findNode<T>(expected: T, c: TreeNode<T>): TreeNode<T> {\n if (expected === c.value) return c;\n for (let cc of c.children) {\n let r = _findNode(expected, cc);\n if (isPresent(r)) return r;\n }\n return null;\n}\n\nfunction _findPath<T>(expected: T, c: TreeNode<T>, collected: TreeNode<T>[]): TreeNode<T>[] {\n collected.push(c);\n if (expected === c.value) return collected;\n\n for (let cc of c.children) {\n let r = _findPath(expected, cc, ListWrapper.clone(collected));\n if (isPresent(r)) return r;\n }\n\n return null;\n}\n\nfunction _contains<T>(tree: TreeNode<T>, subtree: TreeNode<T>): boolean {\n if (tree.value !== subtree.value) return false;\n\n for (let subtreeNode of subtree.children) {\n let s = tree.children.filter(child => child.value === subtreeNode.value);\n if (s.length === 0) return false;\n if (!_contains(s[0], subtreeNode)) return false;\n }\n\n return true;\n}\n\nexport class TreeNode<T> {\n constructor(public value: T, public children: TreeNode<T>[]) {}\n}\n\nexport class UrlSegment {\n constructor(\n public segment: any, public parameters: {[key: string]: string}, public outlet: string) {}\n\n toString(): string {\n let outletPrefix = isBlank(this.outlet) ? '' : `${this.outlet}:`;\n return `${outletPrefix}${this.segment}${_serializeParams(this.parameters)}`;\n }\n}\n\nfunction _serializeParams(params: {[key: string]: string}): string {\n let res = '';\n StringMapWrapper.forEach(\n params, (v: any /** TODO #9100 */, k: any /** TODO #9100 */) => res += `;${k}=${v}`);\n return res;\n}\n\nexport class RouteSegment {\n /** @internal */\n _type: Type;\n\n /** @internal */\n _componentFactory: ComponentFactory<any>;\n\n constructor(\n public urlSegments: UrlSegment[], public parameters: {[key: string]: string},\n public outlet: string, type: Type, componentFactory: ComponentFactory<any>) {\n this._type = type;\n this._componentFactory = componentFactory;\n }\n\n getParam(param: string): string {\n return isPresent(this.parameters) ? this.parameters[param] : null;\n }\n\n getParamAsNumber(param: string): number {\n return isPresent(this.parameters) ? NumberWrapper.parseFloat(this.parameters[param]) : null;\n }\n\n get type(): Type { return this._type; }\n\n get stringifiedUrlSegments(): string { return this.urlSegments.map(s => s.toString()).join('/'); }\n}\n\nexport function createEmptyRouteTree(type: Type): RouteTree {\n let root = new RouteSegment([new UrlSegment('', {}, null)], {}, DEFAULT_OUTLET_NAME, type, null);\n return new RouteTree(new TreeNode<RouteSegment>(root, []));\n}\n\nexport function serializeRouteSegmentTree(tree: RouteTree): string {\n return _serializeRouteSegmentTree(tree._root);\n}\n\nfunction _serializeRouteSegmentTree(node: TreeNode<RouteSegment>): string {\n let v = node.value;\n let children = node.children.map(c => _serializeRouteSegmentTree(c)).join(', ');\n return `${v.outlet}:${v.stringifiedUrlSegments}(${stringify(v.type)}) [${children}]`;\n}\n\nexport function equalUrlSegments(a: UrlSegment[], b: UrlSegment[]): boolean {\n if (a.length !== b.length) return false;\n\n for (let i = 0; i < a.length; ++i) {\n if (a[i].segment != b[i].segment) return false;\n if (a[i].outlet != b[i].outlet) return false;\n if (!StringMapWrapper.equals(a[i].parameters, b[i].parameters)) return false;\n }\n\n return true;\n}\n\nexport function routeSegmentComponentFactory(a: RouteSegment): ComponentFactory<any> {\n return a._componentFactory;\n}\n\ninterface DecoratorInvocation {\n type: Function;\n args?: any[];\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"__symbolic":"module","version":1,"metadata":{"rootNode":{"__symbolic":"function","parameters":["tree"],"value":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"tree"},"member":"_root"}},"serializeRouteSegmentTree":{"__symbolic":"function","parameters":["tree"],"value":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"_serializeRouteSegmentTree"},"arguments":[{"__symbolic":"select","expression":{"__symbolic":"reference","name":"tree"},"member":"_root"}]}},"routeSegmentComponentFactory":{"__symbolic":"function","parameters":["a"],"value":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"a"},"member":"_componentFactory"}}}}
|