angular2-rails 2.0.0.pre.beta.15

Sign up to get free protection for your applications and to get access to all the features.
Files changed (38) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.md +25 -0
  4. data/lib/angular2-rails.rb +9 -0
  5. data/lib/angular2-rails/engine.rb +6 -0
  6. data/lib/angular2-rails/sprockets.rb +3 -0
  7. data/lib/angular2-rails/version.rb +5 -0
  8. data/lib/tasks/angular2/rails_tasks.rake +4 -0
  9. data/vendor/assets/javascripts/Rx.js +11615 -0
  10. data/vendor/assets/javascripts/Rx.min.js +417 -0
  11. data/vendor/assets/javascripts/Rx.min.js.map +1 -0
  12. data/vendor/assets/javascripts/Rx.umd.js +10274 -0
  13. data/vendor/assets/javascripts/Rx.umd.min.js +748 -0
  14. data/vendor/assets/javascripts/Rx.umd.min.js.map +8 -0
  15. data/vendor/assets/javascripts/angular2-all-testing.umd.dev.js +41097 -0
  16. data/vendor/assets/javascripts/angular2-all.umd.dev.js +38827 -0
  17. data/vendor/assets/javascripts/angular2-all.umd.js +38826 -0
  18. data/vendor/assets/javascripts/angular2-all.umd.min.js +20 -0
  19. data/vendor/assets/javascripts/angular2-polyfills.js +2491 -0
  20. data/vendor/assets/javascripts/angular2-polyfills.min.js +1 -0
  21. data/vendor/assets/javascripts/angular2.dev.js +26056 -0
  22. data/vendor/assets/javascripts/angular2.js +26056 -0
  23. data/vendor/assets/javascripts/angular2.min.js +19 -0
  24. data/vendor/assets/javascripts/http.dev.js +1106 -0
  25. data/vendor/assets/javascripts/http.js +1106 -0
  26. data/vendor/assets/javascripts/http.min.js +1 -0
  27. data/vendor/assets/javascripts/overview.md +92 -0
  28. data/vendor/assets/javascripts/router.dev.js +3436 -0
  29. data/vendor/assets/javascripts/router.js +3436 -0
  30. data/vendor/assets/javascripts/router.min.js +3 -0
  31. data/vendor/assets/javascripts/testing.dev.js +2205 -0
  32. data/vendor/assets/javascripts/testing.dev.js.map +1 -0
  33. data/vendor/assets/javascripts/upgrade.dev.js +833 -0
  34. data/vendor/assets/javascripts/upgrade.js +833 -0
  35. data/vendor/assets/javascripts/upgrade.min.js +1 -0
  36. data/vendor/assets/javascripts/web_worker/ui.dev.js +24221 -0
  37. data/vendor/assets/javascripts/web_worker/worker.dev.js +40089 -0
  38. metadata +101 -0
@@ -0,0 +1 @@
1
+ "format register";System.register("angular2/src/http/interfaces",[],!0,function(e,t,r){var n=System.global,s=n.define;n.define=void 0;var a=function(){function e(){}return e}();t.ConnectionBackend=a;var o=function(){function e(){}return e}();return t.Connection=o,n.define=s,r.exports}),System.register("angular2/src/http/headers",["angular2/src/facade/lang","angular2/src/facade/exceptions","angular2/src/facade/collection"],!0,function(e,t,r){var n=System.global,s=n.define;n.define=void 0;var a=e("angular2/src/facade/lang"),o=e("angular2/src/facade/exceptions"),i=e("angular2/src/facade/collection"),c=function(){function e(t){var r=this;return t instanceof e?void(this._headersMap=t._headersMap):(this._headersMap=new i.Map,void(a.isBlank(t)||i.StringMapWrapper.forEach(t,function(e,t){r._headersMap.set(t,i.isListLikeIterable(e)?e:[e])})))}return e.fromResponseHeaderString=function(t){return t.trim().split("\n").map(function(e){return e.split(":")}).map(function(e){var t=e[0],r=e.slice(1);return[t.trim(),r.join(":").trim()]}).reduce(function(e,t){var r=t[0],n=t[1];return!e.set(r,n)&&e},new e)},e.prototype.append=function(e,t){var r=this._headersMap.get(e),n=i.isListLikeIterable(r)?r:[];n.push(t),this._headersMap.set(e,n)},e.prototype["delete"]=function(e){this._headersMap["delete"](e)},e.prototype.forEach=function(e){this._headersMap.forEach(e)},e.prototype.get=function(e){return i.ListWrapper.first(this._headersMap.get(e))},e.prototype.has=function(e){return this._headersMap.has(e)},e.prototype.keys=function(){return i.MapWrapper.keys(this._headersMap)},e.prototype.set=function(e,t){var r=[];if(i.isListLikeIterable(t)){var n=t.join(",");r.push(n)}else r.push(t);this._headersMap.set(e,r)},e.prototype.values=function(){return i.MapWrapper.values(this._headersMap)},e.prototype.toJSON=function(){var e={};return this._headersMap.forEach(function(t,r){var n=[];i.iterateListLike(t,function(e){return n=i.ListWrapper.concat(n,e.split(","))}),e[r]=n}),e},e.prototype.getAll=function(e){var t=this._headersMap.get(e);return i.isListLikeIterable(t)?t:[]},e.prototype.entries=function(){throw new o.BaseException('"entries" method is not implemented on Headers class')},e}();return t.Headers=c,n.define=s,r.exports}),System.register("angular2/src/http/enums",[],!0,function(e,t,r){var n=System.global,s=n.define;return n.define=void 0,function(e){e[e.Get=0]="Get",e[e.Post=1]="Post",e[e.Put=2]="Put",e[e.Delete=3]="Delete",e[e.Options=4]="Options",e[e.Head=5]="Head",e[e.Patch=6]="Patch"}(t.RequestMethod||(t.RequestMethod={})),t.RequestMethod,!function(e){e[e.Unsent=0]="Unsent",e[e.Open=1]="Open",e[e.HeadersReceived=2]="HeadersReceived",e[e.Loading=3]="Loading",e[e.Done=4]="Done",e[e.Cancelled=5]="Cancelled"}(t.ReadyState||(t.ReadyState={})),t.ReadyState,!function(e){e[e.Basic=0]="Basic",e[e.Cors=1]="Cors",e[e.Default=2]="Default",e[e.Error=3]="Error",e[e.Opaque=4]="Opaque"}(t.ResponseType||(t.ResponseType={})),t.ResponseType,n.define=s,r.exports}),System.register("angular2/src/http/url_search_params",["angular2/src/facade/lang","angular2/src/facade/collection"],!0,function(e,t,r){function n(e){void 0===e&&(e="");var t=new i.Map;if(e.length>0){var r=e.split("&");r.forEach(function(e){var r=e.split("="),n=r[0],s=r[1],a=o.isPresent(t.get(n))?t.get(n):[];a.push(s),t.set(n,a)})}return t}var s=System.global,a=s.define;s.define=void 0;var o=e("angular2/src/facade/lang"),i=e("angular2/src/facade/collection"),c=function(){function e(e){void 0===e&&(e=""),this.rawParams=e,this.paramsMap=n(e)}return e.prototype.clone=function(){var t=new e;return t.appendAll(this),t},e.prototype.has=function(e){return this.paramsMap.has(e)},e.prototype.get=function(e){var t=this.paramsMap.get(e);return i.isListLikeIterable(t)?i.ListWrapper.first(t):null},e.prototype.getAll=function(e){var t=this.paramsMap.get(e);return o.isPresent(t)?t:[]},e.prototype.set=function(e,t){var r=this.paramsMap.get(e),n=o.isPresent(r)?r:[];i.ListWrapper.clear(n),n.push(t),this.paramsMap.set(e,n)},e.prototype.setAll=function(e){var t=this;e.paramsMap.forEach(function(e,r){var n=t.paramsMap.get(r),s=o.isPresent(n)?n:[];i.ListWrapper.clear(s),s.push(e[0]),t.paramsMap.set(r,s)})},e.prototype.append=function(e,t){var r=this.paramsMap.get(e),n=o.isPresent(r)?r:[];n.push(t),this.paramsMap.set(e,n)},e.prototype.appendAll=function(e){var t=this;e.paramsMap.forEach(function(e,r){for(var n=t.paramsMap.get(r),s=o.isPresent(n)?n:[],a=0;a<e.length;++a)s.push(e[a]);t.paramsMap.set(r,s)})},e.prototype.replaceAll=function(e){var t=this;e.paramsMap.forEach(function(e,r){var n=t.paramsMap.get(r),s=o.isPresent(n)?n:[];i.ListWrapper.clear(s);for(var a=0;a<e.length;++a)s.push(e[a]);t.paramsMap.set(r,s)})},e.prototype.toString=function(){var e=[];return this.paramsMap.forEach(function(t,r){t.forEach(function(t){return e.push(r+"="+t)})}),e.join("&")},e.prototype["delete"]=function(e){this.paramsMap["delete"](e)},e}();return t.URLSearchParams=c,s.define=a,r.exports}),System.register("angular2/src/http/static_response",["angular2/src/facade/lang","angular2/src/facade/exceptions","angular2/src/http/http_utils"],!0,function(e,t,r){var n=System.global,s=n.define;n.define=void 0;var a=e("angular2/src/facade/lang"),o=e("angular2/src/facade/exceptions"),i=e("angular2/src/http/http_utils"),c=function(){function e(e){this._body=e.body,this.status=e.status,this.statusText=e.statusText,this.headers=e.headers,this.type=e.type,this.url=e.url}return e.prototype.blob=function(){throw new o.BaseException('"blob()" method not implemented on Response superclass')},e.prototype.json=function(){var e;return i.isJsObject(this._body)?e=this._body:a.isString(this._body)&&(e=a.Json.parse(this._body)),e},e.prototype.text=function(){return this._body.toString()},e.prototype.arrayBuffer=function(){throw new o.BaseException('"arrayBuffer()" method not implemented on Response superclass')},e}();return t.Response=c,n.define=s,r.exports}),System.register("angular2/src/http/base_response_options",["angular2/core","angular2/src/facade/lang","angular2/src/http/headers","angular2/src/http/enums"],!0,function(e,t,r){var n=System.global,s=n.define;n.define=void 0;var a=this&&this.__extends||function(e,t){function r(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)},o=this&&this.__decorate||function(e,t,r,n){var s,a=arguments.length,o=3>a?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,r,n);else for(var i=e.length-1;i>=0;i--)(s=e[i])&&(o=(3>a?s(o):a>3?s(t,r,o):s(t,r))||o);return a>3&&o&&Object.defineProperty(t,r,o),o},i=this&&this.__metadata||function(e,t){return"object"==typeof Reflect&&"function"==typeof Reflect.metadata?Reflect.metadata(e,t):void 0},c=e("angular2/core"),u=e("angular2/src/facade/lang"),p=e("angular2/src/http/headers"),l=e("angular2/src/http/enums"),d=function(){function e(e){var t=void 0===e?{}:e,r=t.body,n=t.status,s=t.headers,a=t.statusText,o=t.type,i=t.url;this.body=u.isPresent(r)?r:null,this.status=u.isPresent(n)?n:null,this.headers=u.isPresent(s)?s:null,this.statusText=u.isPresent(a)?a:null,this.type=u.isPresent(o)?o:null,this.url=u.isPresent(i)?i:null}return e.prototype.merge=function(t){return new e({body:u.isPresent(t)&&u.isPresent(t.body)?t.body:this.body,status:u.isPresent(t)&&u.isPresent(t.status)?t.status:this.status,headers:u.isPresent(t)&&u.isPresent(t.headers)?t.headers:this.headers,statusText:u.isPresent(t)&&u.isPresent(t.statusText)?t.statusText:this.statusText,type:u.isPresent(t)&&u.isPresent(t.type)?t.type:this.type,url:u.isPresent(t)&&u.isPresent(t.url)?t.url:this.url})},e}();t.ResponseOptions=d;var h=function(e){function t(){e.call(this,{status:200,statusText:"Ok",type:l.ResponseType.Default,headers:new p.Headers})}return a(t,e),t=o([c.Injectable(),i("design:paramtypes",[])],t)}(d);return t.BaseResponseOptions=h,n.define=s,r.exports}),System.register("angular2/src/http/backends/browser_xhr",["angular2/core"],!0,function(e,t,r){var n=System.global,s=n.define;n.define=void 0;var a=this&&this.__decorate||function(e,t,r,n){var s,a=arguments.length,o=3>a?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,r,n);else for(var i=e.length-1;i>=0;i--)(s=e[i])&&(o=(3>a?s(o):a>3?s(t,r,o):s(t,r))||o);return a>3&&o&&Object.defineProperty(t,r,o),o},o=this&&this.__metadata||function(e,t){return"object"==typeof Reflect&&"function"==typeof Reflect.metadata?Reflect.metadata(e,t):void 0},i=e("angular2/core"),c=function(){function e(){}return e.prototype.build=function(){return new XMLHttpRequest},e=a([i.Injectable(),o("design:paramtypes",[])],e)}();return t.BrowserXhr=c,n.define=s,r.exports}),System.register("angular2/src/http/backends/browser_jsonp",["angular2/core","angular2/src/facade/lang"],!0,function(e,t,r){function n(){return null===l&&(l=u.global[t.JSONP_HOME]={}),l}var s=System.global,a=s.define;s.define=void 0;var o=this&&this.__decorate||function(e,t,r,n){var s,a=arguments.length,o=3>a?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,r,n);else for(var i=e.length-1;i>=0;i--)(s=e[i])&&(o=(3>a?s(o):a>3?s(t,r,o):s(t,r))||o);return a>3&&o&&Object.defineProperty(t,r,o),o},i=this&&this.__metadata||function(e,t){return"object"==typeof Reflect&&"function"==typeof Reflect.metadata?Reflect.metadata(e,t):void 0},c=e("angular2/core"),u=e("angular2/src/facade/lang"),p=0;t.JSONP_HOME="__ng_jsonp__";var l=null,d=function(){function e(){}return e.prototype.build=function(e){var t=document.createElement("script");return t.src=e,t},e.prototype.nextRequestID=function(){return"__req"+p++},e.prototype.requestCallback=function(e){return t.JSONP_HOME+"."+e+".finished"},e.prototype.exposeConnection=function(e,t){var r=n();r[e]=t},e.prototype.removeConnection=function(e){var t=n();t[e]=null},e.prototype.send=function(e){document.body.appendChild(e)},e.prototype.cleanup=function(e){e.parentNode&&e.parentNode.removeChild(e)},e=o([c.Injectable(),i("design:paramtypes",[])],e)}();return t.BrowserJsonp=d,s.define=a,r.exports}),System.register("angular2/src/http/http_utils",["angular2/src/facade/lang","angular2/src/http/enums","angular2/src/facade/exceptions","angular2/src/facade/lang"],!0,function(e,t,r){function n(e){if(i.isString(e)){var t=e;if(e=e.replace(/(\w)(\w*)/g,function(e,t,r){return t.toUpperCase()+r.toLowerCase()}),e=c.RequestMethod[e],"number"!=typeof e)throw u.makeTypeError('Invalid request method. The method "'+t+'" is not supported.')}return e}function s(e){return"responseURL"in e?e.responseURL:/^X-Request-URL:/m.test(e.getAllResponseHeaders())?e.getResponseHeader("X-Request-URL"):void 0}var a=System.global,o=a.define;a.define=void 0;var i=e("angular2/src/facade/lang"),c=e("angular2/src/http/enums"),u=e("angular2/src/facade/exceptions");t.normalizeMethodName=n,t.isSuccess=function(e){return e>=200&&300>e},t.getResponseURL=s;var p=e("angular2/src/facade/lang");return t.isJsObject=p.isJsObject,a.define=o,r.exports}),System.register("angular2/src/http/base_request_options",["angular2/src/facade/lang","angular2/src/http/headers","angular2/src/http/enums","angular2/core","angular2/src/http/url_search_params","angular2/src/http/http_utils"],!0,function(e,t,r){var n=System.global,s=n.define;n.define=void 0;var a=this&&this.__extends||function(e,t){function r(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)},o=this&&this.__decorate||function(e,t,r,n){var s,a=arguments.length,o=3>a?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,r,n);else for(var i=e.length-1;i>=0;i--)(s=e[i])&&(o=(3>a?s(o):a>3?s(t,r,o):s(t,r))||o);return a>3&&o&&Object.defineProperty(t,r,o),o},i=this&&this.__metadata||function(e,t){return"object"==typeof Reflect&&"function"==typeof Reflect.metadata?Reflect.metadata(e,t):void 0},c=e("angular2/src/facade/lang"),u=e("angular2/src/http/headers"),p=e("angular2/src/http/enums"),l=e("angular2/core"),d=e("angular2/src/http/url_search_params"),h=e("angular2/src/http/http_utils"),f=function(){function e(e){var t=void 0===e?{}:e,r=t.method,n=t.headers,s=t.body,a=t.url,o=t.search;this.method=c.isPresent(r)?h.normalizeMethodName(r):null,this.headers=c.isPresent(n)?n:null,this.body=c.isPresent(s)?s:null,this.url=c.isPresent(a)?a:null,this.search=c.isPresent(o)?c.isString(o)?new d.URLSearchParams(o):o:null}return e.prototype.merge=function(t){return new e({method:c.isPresent(t)&&c.isPresent(t.method)?t.method:this.method,headers:c.isPresent(t)&&c.isPresent(t.headers)?t.headers:this.headers,body:c.isPresent(t)&&c.isPresent(t.body)?t.body:this.body,url:c.isPresent(t)&&c.isPresent(t.url)?t.url:this.url,search:c.isPresent(t)&&c.isPresent(t.search)?c.isString(t.search)?new d.URLSearchParams(t.search):t.search.clone():this.search})},e}();t.RequestOptions=f;var g=function(e){function t(){e.call(this,{method:p.RequestMethod.Get,headers:new u.Headers})}return a(t,e),t=o([l.Injectable(),i("design:paramtypes",[])],t)}(f);return t.BaseRequestOptions=g,n.define=s,r.exports}),System.register("angular2/src/http/backends/xhr_backend",["angular2/src/http/enums","angular2/src/http/static_response","angular2/src/http/headers","angular2/src/http/base_response_options","angular2/core","angular2/src/http/backends/browser_xhr","angular2/src/facade/lang","rxjs/Observable","angular2/src/http/http_utils"],!0,function(e,t,r){var n=System.global,s=n.define;n.define=void 0;var a=this&&this.__decorate||function(e,t,r,n){var s,a=arguments.length,o=3>a?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,r,n);else for(var i=e.length-1;i>=0;i--)(s=e[i])&&(o=(3>a?s(o):a>3?s(t,r,o):s(t,r))||o);return a>3&&o&&Object.defineProperty(t,r,o),o},o=this&&this.__metadata||function(e,t){return"object"==typeof Reflect&&"function"==typeof Reflect.metadata?Reflect.metadata(e,t):void 0},i=e("angular2/src/http/enums"),c=e("angular2/src/http/static_response"),u=e("angular2/src/http/headers"),p=e("angular2/src/http/base_response_options"),l=e("angular2/core"),d=e("angular2/src/http/backends/browser_xhr"),h=e("angular2/src/facade/lang"),f=e("rxjs/Observable"),g=e("angular2/src/http/http_utils"),y=function(){function e(e,t,r){var n=this;this.request=e,this.response=new f.Observable(function(s){var a=t.build();a.open(i.RequestMethod[e.method].toUpperCase(),e.url);var o=function(){var e=h.isPresent(a.response)?a.response:a.responseText,t=u.Headers.fromResponseHeaderString(a.getAllResponseHeaders()),n=g.getResponseURL(a),o=1223===a.status?204:a.status;0===o&&(o=e?200:0);var i=new p.ResponseOptions({body:e,status:o,headers:t,url:n});h.isPresent(r)&&(i=r.merge(i));var l=new c.Response(i);return g.isSuccess(o)?(s.next(l),void s.complete()):void s.error(l)},l=function(e){var t=new p.ResponseOptions({body:e,type:i.ResponseType.Error});h.isPresent(r)&&(t=r.merge(t)),s.error(new c.Response(t))};return h.isPresent(e.headers)&&e.headers.forEach(function(e,t){return a.setRequestHeader(t,e.join(","))}),a.addEventListener("load",o),a.addEventListener("error",l),a.send(n.request.text()),function(){a.removeEventListener("load",o),a.removeEventListener("error",l),a.abort()}})}return e}();t.XHRConnection=y;var _=function(){function e(e,t){this._browserXHR=e,this._baseResponseOptions=t}return e.prototype.createConnection=function(e){return new y(e,this._browserXHR,this._baseResponseOptions)},e=a([l.Injectable(),o("design:paramtypes",[d.BrowserXhr,p.ResponseOptions])],e)}();return t.XHRBackend=_,n.define=s,r.exports}),System.register("angular2/src/http/backends/jsonp_backend",["angular2/src/http/interfaces","angular2/src/http/enums","angular2/src/http/static_response","angular2/src/http/base_response_options","angular2/core","angular2/src/http/backends/browser_jsonp","angular2/src/facade/exceptions","angular2/src/facade/lang","rxjs/Observable"],!0,function(e,t,r){var n=System.global,s=n.define;n.define=void 0;var a=this&&this.__extends||function(e,t){function r(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)},o=this&&this.__decorate||function(e,t,r,n){var s,a=arguments.length,o=3>a?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,r,n);else for(var i=e.length-1;i>=0;i--)(s=e[i])&&(o=(3>a?s(o):a>3?s(t,r,o):s(t,r))||o);return a>3&&o&&Object.defineProperty(t,r,o),o},i=this&&this.__metadata||function(e,t){return"object"==typeof Reflect&&"function"==typeof Reflect.metadata?Reflect.metadata(e,t):void 0},c=e("angular2/src/http/interfaces"),u=e("angular2/src/http/enums"),p=e("angular2/src/http/static_response"),l=e("angular2/src/http/base_response_options"),d=e("angular2/core"),h=e("angular2/src/http/backends/browser_jsonp"),f=e("angular2/src/facade/exceptions"),g=e("angular2/src/facade/lang"),y=e("rxjs/Observable"),_="JSONP injected script did not invoke callback.",b="JSONP requests must use GET request method.",m=function(){function e(){}return e}();t.JSONPConnection=m;var R=function(e){function t(t,r,n){var s=this;if(e.call(this),this._dom=r,this.baseResponseOptions=n,this._finished=!1,t.method!==u.RequestMethod.Get)throw f.makeTypeError(b);this.request=t,this.response=new y.Observable(function(e){s.readyState=u.ReadyState.Loading;var a=s._id=r.nextRequestID();r.exposeConnection(a,s);var o=r.requestCallback(s._id),i=t.url;i.indexOf("=JSONP_CALLBACK&")>-1?i=g.StringWrapper.replace(i,"=JSONP_CALLBACK&","="+o+"&"):i.lastIndexOf("=JSONP_CALLBACK")===i.length-"=JSONP_CALLBACK".length&&(i=i.substring(0,i.length-"=JSONP_CALLBACK".length)+("="+o));var c=s._script=r.build(i),d=function(t){if(s.readyState!==u.ReadyState.Cancelled){if(s.readyState=u.ReadyState.Done,r.cleanup(c),!s._finished){var a=new l.ResponseOptions({body:_,type:u.ResponseType.Error,url:i});return g.isPresent(n)&&(a=n.merge(a)),void e.error(new p.Response(a))}var o=new l.ResponseOptions({body:s._responseData,url:i});g.isPresent(s.baseResponseOptions)&&(o=s.baseResponseOptions.merge(o)),e.next(new p.Response(o)),e.complete()}},h=function(t){if(s.readyState!==u.ReadyState.Cancelled){s.readyState=u.ReadyState.Done,r.cleanup(c);var a=new l.ResponseOptions({body:t.message,type:u.ResponseType.Error});g.isPresent(n)&&(a=n.merge(a)),e.error(new p.Response(a))}};return c.addEventListener("load",d),c.addEventListener("error",h),r.send(c),function(){s.readyState=u.ReadyState.Cancelled,c.removeEventListener("load",d),c.removeEventListener("error",h),g.isPresent(c)&&s._dom.cleanup(c)}})}return a(t,e),t.prototype.finished=function(e){this._finished=!0,this._dom.removeConnection(this._id),this.readyState!==u.ReadyState.Cancelled&&(this._responseData=e)},t}(m);t.JSONPConnection_=R;var v=function(e){function t(){e.apply(this,arguments)}return a(t,e),t}(c.ConnectionBackend);t.JSONPBackend=v;var O=function(e){function t(t,r){e.call(this),this._browserJSONP=t,this._baseResponseOptions=r}return a(t,e),t.prototype.createConnection=function(e){return new R(e,this._browserJSONP,this._baseResponseOptions)},t=o([d.Injectable(),i("design:paramtypes",[h.BrowserJsonp,l.ResponseOptions])],t)}(v);return t.JSONPBackend_=O,n.define=s,r.exports}),System.register("angular2/src/http/static_request",["angular2/src/http/headers","angular2/src/http/http_utils","angular2/src/facade/lang"],!0,function(e,t,r){var n=System.global,s=n.define;n.define=void 0;var a=e("angular2/src/http/headers"),o=e("angular2/src/http/http_utils"),i=e("angular2/src/facade/lang"),c=function(){function e(e){var t=e.url;if(this.url=e.url,i.isPresent(e.search)){var r=e.search.toString();if(r.length>0){var n="?";i.StringWrapper.contains(this.url,"?")&&(n="&"==this.url[this.url.length-1]?"":"&"),this.url=t+n+r}}this._body=e.body,this.method=o.normalizeMethodName(e.method),this.headers=new a.Headers(e.headers)}return e.prototype.text=function(){return i.isPresent(this._body)?this._body.toString():""},e}();return t.Request=c,n.define=s,r.exports}),System.register("angular2/src/http/http",["angular2/src/facade/lang","angular2/src/facade/exceptions","angular2/core","angular2/src/http/interfaces","angular2/src/http/static_request","angular2/src/http/base_request_options","angular2/src/http/enums"],!0,function(e,t,r){function n(e,t){return e.createConnection(t).response}function s(e,t,r,n){var s=e;return p.isPresent(t)?s.merge(new g.RequestOptions({method:t.method||r,url:t.url||n,search:t.search,headers:t.headers,body:t.body})):p.isPresent(r)?s.merge(new g.RequestOptions({method:r,url:n})):s.merge(new g.RequestOptions({url:n}))}var a=System.global,o=a.define;a.define=void 0;var i=this&&this.__extends||function(e,t){function r(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)},c=this&&this.__decorate||function(e,t,r,n){var s,a=arguments.length,o=3>a?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,r,n);else for(var i=e.length-1;i>=0;i--)(s=e[i])&&(o=(3>a?s(o):a>3?s(t,r,o):s(t,r))||o);return a>3&&o&&Object.defineProperty(t,r,o),o},u=this&&this.__metadata||function(e,t){return"object"==typeof Reflect&&"function"==typeof Reflect.metadata?Reflect.metadata(e,t):void 0},p=e("angular2/src/facade/lang"),l=e("angular2/src/facade/exceptions"),d=e("angular2/core"),h=e("angular2/src/http/interfaces"),f=e("angular2/src/http/static_request"),g=e("angular2/src/http/base_request_options"),y=e("angular2/src/http/enums"),_=function(){function e(e,t){this._backend=e,this._defaultOptions=t}return e.prototype.request=function(e,t){var r;if(p.isString(e))r=n(this._backend,new f.Request(s(this._defaultOptions,t,y.RequestMethod.Get,e)));else{if(!(e instanceof f.Request))throw l.makeTypeError("First argument must be a url string or Request instance.");r=n(this._backend,e)}return r},e.prototype.get=function(e,t){return n(this._backend,new f.Request(s(this._defaultOptions,t,y.RequestMethod.Get,e)))},e.prototype.post=function(e,t,r){return n(this._backend,new f.Request(s(this._defaultOptions.merge(new g.RequestOptions({body:t})),r,y.RequestMethod.Post,e)))},e.prototype.put=function(e,t,r){return n(this._backend,new f.Request(s(this._defaultOptions.merge(new g.RequestOptions({body:t})),r,y.RequestMethod.Put,e)))},e.prototype["delete"]=function(e,t){return n(this._backend,new f.Request(s(this._defaultOptions,t,y.RequestMethod.Delete,e)))},e.prototype.patch=function(e,t,r){return n(this._backend,new f.Request(s(this._defaultOptions.merge(new g.RequestOptions({body:t})),r,y.RequestMethod.Patch,e)))},e.prototype.head=function(e,t){return n(this._backend,new f.Request(s(this._defaultOptions,t,y.RequestMethod.Head,e)))},e=c([d.Injectable(),u("design:paramtypes",[h.ConnectionBackend,g.RequestOptions])],e)}();t.Http=_;var b=function(e){function t(t,r){e.call(this,t,r)}return i(t,e),t.prototype.request=function(e,t){var r;if(p.isString(e)&&(e=new f.Request(s(this._defaultOptions,t,y.RequestMethod.Get,e))),!(e instanceof f.Request))throw l.makeTypeError("First argument must be a url string or Request instance.");return e.method!==y.RequestMethod.Get&&l.makeTypeError("JSONP requests must use GET request method."),r=n(this._backend,e)},t=c([d.Injectable(),u("design:paramtypes",[h.ConnectionBackend,g.RequestOptions])],t)}(_);return t.Jsonp=b,a.define=o,r.exports}),System.register("angular2/http",["angular2/core","angular2/src/http/http","angular2/src/http/backends/xhr_backend","angular2/src/http/backends/jsonp_backend","angular2/src/http/backends/browser_xhr","angular2/src/http/backends/browser_jsonp","angular2/src/http/base_request_options","angular2/src/http/base_response_options","angular2/src/http/static_request","angular2/src/http/static_response","angular2/src/http/interfaces","angular2/src/http/backends/browser_xhr","angular2/src/http/base_request_options","angular2/src/http/base_response_options","angular2/src/http/backends/xhr_backend","angular2/src/http/backends/jsonp_backend","angular2/src/http/http","angular2/src/http/headers","angular2/src/http/enums","angular2/src/http/url_search_params"],!0,function(e,t,r){var n=System.global,s=n.define;n.define=void 0;var a=e("angular2/core"),o=e("angular2/src/http/http"),i=e("angular2/src/http/backends/xhr_backend"),c=e("angular2/src/http/backends/jsonp_backend"),u=e("angular2/src/http/backends/browser_xhr"),p=e("angular2/src/http/backends/browser_jsonp"),l=e("angular2/src/http/base_request_options"),d=e("angular2/src/http/base_response_options"),h=e("angular2/src/http/static_request");t.Request=h.Request;var f=e("angular2/src/http/static_response");t.Response=f.Response;var g=e("angular2/src/http/interfaces");t.Connection=g.Connection,t.ConnectionBackend=g.ConnectionBackend;var y=e("angular2/src/http/backends/browser_xhr");t.BrowserXhr=y.BrowserXhr;var _=e("angular2/src/http/base_request_options");t.BaseRequestOptions=_.BaseRequestOptions,t.RequestOptions=_.RequestOptions;var b=e("angular2/src/http/base_response_options");t.BaseResponseOptions=b.BaseResponseOptions,t.ResponseOptions=b.ResponseOptions;var m=e("angular2/src/http/backends/xhr_backend");t.XHRBackend=m.XHRBackend,t.XHRConnection=m.XHRConnection;var R=e("angular2/src/http/backends/jsonp_backend");t.JSONPBackend=R.JSONPBackend,t.JSONPConnection=R.JSONPConnection;var v=e("angular2/src/http/http");t.Http=v.Http,t.Jsonp=v.Jsonp;var O=e("angular2/src/http/headers");t.Headers=O.Headers;var P=e("angular2/src/http/enums");t.ResponseType=P.ResponseType,t.ReadyState=P.ReadyState,t.RequestMethod=P.RequestMethod;var S=e("angular2/src/http/url_search_params");return t.URLSearchParams=S.URLSearchParams,t.HTTP_PROVIDERS=[a.provide(o.Http,{useFactory:function(e,t){return new o.Http(e,t)},deps:[i.XHRBackend,l.RequestOptions]}),u.BrowserXhr,a.provide(l.RequestOptions,{useClass:l.BaseRequestOptions}),a.provide(d.ResponseOptions,{useClass:d.BaseResponseOptions}),i.XHRBackend],t.HTTP_BINDINGS=t.HTTP_PROVIDERS,t.JSONP_PROVIDERS=[a.provide(o.Jsonp,{useFactory:function(e,t){return new o.Jsonp(e,t)},deps:[c.JSONPBackend,l.RequestOptions]}),p.BrowserJsonp,a.provide(l.RequestOptions,{useClass:l.BaseRequestOptions}),a.provide(d.ResponseOptions,{useClass:d.BaseResponseOptions}),a.provide(c.JSONPBackend,{useClass:c.JSONPBackend_})],t.JSON_BINDINGS=t.JSONP_PROVIDERS,n.define=s,r.exports});
@@ -0,0 +1,92 @@
1
+ # TL;DR;
2
+
3
+ * If you write ES5 use _one_ of the `UMD` bundles.
4
+ * If you experiment with Angular2 using online prototyping tools like [plnkr](http://plnkr.co/) or similar use `System.register` bundles with SystemJS loader.
5
+ * If you use build tools like Browserify or WebPack - bundle Angular2 as part of your build.
6
+ * For all the above cases you must use `angular2-polyfills.js` in a `script` tag to easily include polyfills and external dependencies.
7
+
8
+ # Modules, barrels and bundles
9
+
10
+ Angular2 source code is authored using the ES2015 standardized module format where one module corresponds to exactly one file. Multiple modules (files) can be logically grouped into so-called "barrels".
11
+ A bundle is a file that contains all the code for one or more barrels.
12
+
13
+ Most bundles come in several flavors:
14
+ * regular and minified (got `.min` in their name);
15
+ * regular and "development" (have `.dev` in their name) - "development" bundles contain in-line source maps and don't have minified flavor (minification removes in-lined source maps).
16
+
17
+ # Bundles, their content and usage scenarios
18
+
19
+ Angular 2 distributes several types of bundles targeted at specific usages:
20
+ * users writing ES5 code without any transpilation steps
21
+ * users experimenting with Angular 2 and TypeScript/ES2015 using online tools like plunker, jsbin or similar
22
+
23
+ Since each identified scenario has slightly different requirements and constraints there are specific bundles for each use-case.
24
+
25
+ ## ES5 and ngUpgrade users
26
+
27
+ ES5 users and AngularJS 1.x users interested in the `ngUpgrade` path can take advantage of the bundles in the [UMD format](https://github.com/umdjs/umd).
28
+ Those are coarse-grained bundles that combine many barrels in one final file.
29
+
30
+ filename | list of barrels | dev/prod | minified?
31
+ ------------|-------------------|----------|-------------|--------------|-------------
32
+ `angular2-all.umd.js` | `angular2/core`, `angular2/common`, `angular2/compiler`, `angular2/platform/browser`, `angular2/platform/common_dom`, `angular2/http`, `angular2/router`, `angular2/instrumentation`, `angular2/upgrade`| prod | no
33
+ `angular2-all.umd.min.js` | `angular2/core`, `angular2/common`, `angular2/compiler`, `angular2/platform/browser`, `angular2/platform/common_dom`, `angular2/http`, `angular2/router`, `angular2/instrumentation`, `angular2/upgrade` | prod | yes
34
+ `angular2-all.umd.dev.js` | `angular2/core`, `angular2/common`, `angular2/compiler`, `angular2/platform/browser`, `angular2/platform/common_dom`, `angular2/http`, `angular2/router`, `angular2/instrumentation`, `angular2/upgrade` | dev | no
35
+ `angular2-all-testing.umd.dev.js` | `angular2/core`, `angular2/common`, `angular2/compiler`, `angular2/platform/browser`, `angular2/platform/common_dom`, `angular2/http`, `angular2/router`, `angular2/instrumentation`, `angular2/upgrade`, `angular2/testing`, `angular2/http/testing`, `angular2/router/testing`, `angular2/platform/testing/browser` | dev | no
36
+
37
+ **Warning**: bundles in the `UMD` format are _not_ "additive". A single application should use only one bundle from the above list.
38
+
39
+ ## SystemJS loader users
40
+
41
+ [SystemJS loader](https://github.com/systemjs/systemjs) with on-the-fly (in a browser) transpilations support is very useful for quick experiments using tools like plunker, jsbin or similar.
42
+ For this scenario Angular 2 is distributed with bundles in the [System.register format](https://github.com/ModuleLoader/es6-module-loader/wiki/System.register-Explained):
43
+
44
+ filename | list of barrels | dev/prod | minified?
45
+ ------------|-------------------|----------|-------------|--------------|-------------
46
+ `angular2.js` | `angular2/core`, `angular2/common`, `angular2/compiler`, `angular2/platform/browser`, `angular2/platform/common_dom`, `angular2/instrumentation`| prod | no
47
+ `angular2.min.js` | `angular2/core`, `angular2/common`, `angular2/compiler`, `angular2/platform/browser`, `angular2/platform/common_dom`, `angular2/instrumentation`| prod | yes
48
+ `angular2.dev.js` | `angular2/core`, `angular2/common`, `angular2/compiler`, `angular2/platform/browser`, `angular2/platform/common_dom`, `angular2/instrumentation`| dev | no
49
+ `http.js` | `angular2/http` | prod | no
50
+ `http.min.js` | `angular2/http` | prod | yes
51
+ `http.dev.js` | `angular2/http` | dev | no
52
+ `router.js` | `angular2/router` | prod | no
53
+ `router.min.js` | `angular2/router` | prod | yes
54
+ `router.dev.js` | `angular2/router` | dev | no
55
+ `upgrade.js` | `angular2/upgrade` | prod | no
56
+ `upgrade.min.js` | `angular2/upgrade` | prod | yes
57
+ `upgrade.dev.js` | `angular2/upgrade` | dev | no
58
+ `testing.dev.js` | `angular2/testing`, `angular2/http/testing`, `angular2/router/testing`, `angular2/platform/testing/browser` | dev | no
59
+
60
+ **Note**: bundles in the `System.register` format are "additive" - it is quite common to include several bundles in one application.
61
+ For example people using Angular 2 with `http` and `router` would include: `angular2.js`, `http.js` and `router.js`.
62
+
63
+ ## Browserify / JSPM / Rollup / WebPack users
64
+
65
+ Angular 2 doesn't provide any bundles for use with packaging tools Browserify or WebPack. Those tools are sophisticated enough to build optimal bundles for production use from individual Angular 2 files distributed in the npm package.
66
+ An example of an Angular 2 project built with WebPack can be found in the [angular2-seed](https://github.com/angular/angular2-seed) repository.
67
+
68
+
69
+ # Polyfills and external dependencies
70
+
71
+ ## Required Polyfills
72
+
73
+ Polyfills are required for Angular 2 to function properly (the exact list depends on the browser used) and external dependencies ([zone.js](https://github.com/angular/zone.js)).
74
+ To ease setup of Angular 2 applications there is one file - `angular2-polyfills.js` - that combines:
75
+ * a polyfill mandatory for all browsers: [reflect-metadata](https://www.npmjs.com/package/reflect-metadata)
76
+ * [zone.js](https://github.com/angular/zone.js)
77
+
78
+ **Note**: `angular2-polyfills.js` contains code that should be loaded into the browser as the very first code of the web application even before the module loader. The preferred solution is to load the mentioned file in a `script` tag as early as possible.
79
+
80
+
81
+ ## RxJS
82
+
83
+ [RxJS](https://github.com/ReactiveX/RxJS) is a required dependency of Angular 2.
84
+
85
+ You should include RxJS in your project by declaring a dependency on the [`rxjs` npm package](https://www.npmjs.com/package/rxjs).
86
+
87
+ Depending on if you are using Angular bundles or not you can either use RxJS bundles from `node_modules/rxjs/bundles/` or configure your bundler to pull in the individual files from the npm package.
88
+
89
+
90
+ ## ES6 shims (optional)
91
+
92
+ Users of pre-ES6 browsers might need to add an ES6 shim (e.g. [es6-shim](https://github.com/paulmillr/es6-shim))
@@ -0,0 +1,3436 @@
1
+ "format register";
2
+ System.register("angular2/src/router/directives/router_link_transform", ["angular2/compiler", "angular2/src/core/change_detection/parser/ast", "angular2/src/facade/exceptions", "angular2/core", "angular2/src/core/change_detection/parser/parser"], true, function(require, exports, module) {
3
+ var global = System.global,
4
+ __define = global.define;
5
+ global.define = undefined;
6
+ "use strict";
7
+ var __extends = (this && this.__extends) || function(d, b) {
8
+ for (var p in b)
9
+ if (b.hasOwnProperty(p))
10
+ d[p] = b[p];
11
+ function __() {
12
+ this.constructor = d;
13
+ }
14
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
+ };
16
+ var __decorate = (this && this.__decorate) || function(decorators, target, key, desc) {
17
+ var c = arguments.length,
18
+ r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
19
+ d;
20
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
21
+ r = Reflect.decorate(decorators, target, key, desc);
22
+ else
23
+ for (var i = decorators.length - 1; i >= 0; i--)
24
+ if (d = decorators[i])
25
+ r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
26
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
27
+ };
28
+ var __metadata = (this && this.__metadata) || function(k, v) {
29
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
30
+ return Reflect.metadata(k, v);
31
+ };
32
+ var compiler_1 = require("angular2/compiler");
33
+ var ast_1 = require("angular2/src/core/change_detection/parser/ast");
34
+ var exceptions_1 = require("angular2/src/facade/exceptions");
35
+ var core_1 = require("angular2/core");
36
+ var parser_1 = require("angular2/src/core/change_detection/parser/parser");
37
+ var FixedPart = (function() {
38
+ function FixedPart(value) {
39
+ this.value = value;
40
+ }
41
+ return FixedPart;
42
+ }());
43
+ var AuxiliaryStart = (function() {
44
+ function AuxiliaryStart() {}
45
+ return AuxiliaryStart;
46
+ }());
47
+ var AuxiliaryEnd = (function() {
48
+ function AuxiliaryEnd() {}
49
+ return AuxiliaryEnd;
50
+ }());
51
+ var Params = (function() {
52
+ function Params(ast) {
53
+ this.ast = ast;
54
+ }
55
+ return Params;
56
+ }());
57
+ var RouterLinkLexer = (function() {
58
+ function RouterLinkLexer(parser, exp) {
59
+ this.parser = parser;
60
+ this.exp = exp;
61
+ this.index = 0;
62
+ }
63
+ RouterLinkLexer.prototype.tokenize = function() {
64
+ var tokens = [];
65
+ while (this.index < this.exp.length) {
66
+ tokens.push(this._parseToken());
67
+ }
68
+ return tokens;
69
+ };
70
+ RouterLinkLexer.prototype._parseToken = function() {
71
+ var c = this.exp[this.index];
72
+ if (c == '[') {
73
+ this.index++;
74
+ return new AuxiliaryStart();
75
+ } else if (c == ']') {
76
+ this.index++;
77
+ return new AuxiliaryEnd();
78
+ } else if (c == '(') {
79
+ return this._parseParams();
80
+ } else if (c == '/' && this.index !== 0) {
81
+ this.index++;
82
+ return this._parseFixedPart();
83
+ } else {
84
+ return this._parseFixedPart();
85
+ }
86
+ };
87
+ RouterLinkLexer.prototype._parseParams = function() {
88
+ var start = this.index;
89
+ for (; this.index < this.exp.length; ++this.index) {
90
+ var c = this.exp[this.index];
91
+ if (c == ')') {
92
+ var paramsContent = this.exp.substring(start + 1, this.index);
93
+ this.index++;
94
+ return new Params(this.parser.parseBinding("{" + paramsContent + "}", null).ast);
95
+ }
96
+ }
97
+ throw new exceptions_1.BaseException("Cannot find ')'");
98
+ };
99
+ RouterLinkLexer.prototype._parseFixedPart = function() {
100
+ var start = this.index;
101
+ var sawNonSlash = false;
102
+ for (; this.index < this.exp.length; ++this.index) {
103
+ var c = this.exp[this.index];
104
+ if (c == '(' || c == '[' || c == ']' || (c == '/' && sawNonSlash)) {
105
+ break;
106
+ }
107
+ if (c != '.' && c != '/') {
108
+ sawNonSlash = true;
109
+ }
110
+ }
111
+ var fixed = this.exp.substring(start, this.index);
112
+ if (start === this.index || !sawNonSlash || fixed.startsWith('//')) {
113
+ throw new exceptions_1.BaseException("Invalid router link");
114
+ }
115
+ return new FixedPart(fixed);
116
+ };
117
+ return RouterLinkLexer;
118
+ }());
119
+ var RouterLinkAstGenerator = (function() {
120
+ function RouterLinkAstGenerator(tokens) {
121
+ this.tokens = tokens;
122
+ this.index = 0;
123
+ }
124
+ RouterLinkAstGenerator.prototype.generate = function() {
125
+ return this._genAuxiliary();
126
+ };
127
+ RouterLinkAstGenerator.prototype._genAuxiliary = function() {
128
+ var arr = [];
129
+ for (; this.index < this.tokens.length; this.index++) {
130
+ var r = this.tokens[this.index];
131
+ if (r instanceof FixedPart) {
132
+ arr.push(new ast_1.LiteralPrimitive(r.value));
133
+ } else if (r instanceof Params) {
134
+ arr.push(r.ast);
135
+ } else if (r instanceof AuxiliaryEnd) {
136
+ break;
137
+ } else if (r instanceof AuxiliaryStart) {
138
+ this.index++;
139
+ arr.push(this._genAuxiliary());
140
+ }
141
+ }
142
+ return new ast_1.LiteralArray(arr);
143
+ };
144
+ return RouterLinkAstGenerator;
145
+ }());
146
+ var RouterLinkAstTransformer = (function(_super) {
147
+ __extends(RouterLinkAstTransformer, _super);
148
+ function RouterLinkAstTransformer(parser) {
149
+ _super.call(this);
150
+ this.parser = parser;
151
+ }
152
+ RouterLinkAstTransformer.prototype.visitQuote = function(ast) {
153
+ if (ast.prefix == "route") {
154
+ return parseRouterLinkExpression(this.parser, ast.uninterpretedExpression);
155
+ } else {
156
+ return _super.prototype.visitQuote.call(this, ast);
157
+ }
158
+ };
159
+ return RouterLinkAstTransformer;
160
+ }(ast_1.AstTransformer));
161
+ function parseRouterLinkExpression(parser, exp) {
162
+ var tokens = new RouterLinkLexer(parser, exp.trim()).tokenize();
163
+ return new RouterLinkAstGenerator(tokens).generate();
164
+ }
165
+ exports.parseRouterLinkExpression = parseRouterLinkExpression;
166
+ var RouterLinkTransform = (function() {
167
+ function RouterLinkTransform(parser) {
168
+ this.astTransformer = new RouterLinkAstTransformer(parser);
169
+ }
170
+ RouterLinkTransform.prototype.visitNgContent = function(ast, context) {
171
+ return ast;
172
+ };
173
+ RouterLinkTransform.prototype.visitEmbeddedTemplate = function(ast, context) {
174
+ return ast;
175
+ };
176
+ RouterLinkTransform.prototype.visitElement = function(ast, context) {
177
+ var _this = this;
178
+ var updatedChildren = ast.children.map(function(c) {
179
+ return c.visit(_this, context);
180
+ });
181
+ var updatedInputs = ast.inputs.map(function(c) {
182
+ return c.visit(_this, context);
183
+ });
184
+ var updatedDirectives = ast.directives.map(function(c) {
185
+ return c.visit(_this, context);
186
+ });
187
+ return new compiler_1.ElementAst(ast.name, ast.attrs, updatedInputs, ast.outputs, ast.exportAsVars, updatedDirectives, updatedChildren, ast.ngContentIndex, ast.sourceSpan);
188
+ };
189
+ RouterLinkTransform.prototype.visitVariable = function(ast, context) {
190
+ return ast;
191
+ };
192
+ RouterLinkTransform.prototype.visitEvent = function(ast, context) {
193
+ return ast;
194
+ };
195
+ RouterLinkTransform.prototype.visitElementProperty = function(ast, context) {
196
+ return ast;
197
+ };
198
+ RouterLinkTransform.prototype.visitAttr = function(ast, context) {
199
+ return ast;
200
+ };
201
+ RouterLinkTransform.prototype.visitBoundText = function(ast, context) {
202
+ return ast;
203
+ };
204
+ RouterLinkTransform.prototype.visitText = function(ast, context) {
205
+ return ast;
206
+ };
207
+ RouterLinkTransform.prototype.visitDirective = function(ast, context) {
208
+ var _this = this;
209
+ var updatedInputs = ast.inputs.map(function(c) {
210
+ return c.visit(_this, context);
211
+ });
212
+ return new compiler_1.DirectiveAst(ast.directive, updatedInputs, ast.hostProperties, ast.hostEvents, ast.exportAsVars, ast.sourceSpan);
213
+ };
214
+ RouterLinkTransform.prototype.visitDirectiveProperty = function(ast, context) {
215
+ var transformedValue = ast.value.visit(this.astTransformer);
216
+ return new compiler_1.BoundDirectivePropertyAst(ast.directiveName, ast.templateName, transformedValue, ast.sourceSpan);
217
+ };
218
+ RouterLinkTransform = __decorate([core_1.Injectable(), __metadata('design:paramtypes', [parser_1.Parser])], RouterLinkTransform);
219
+ return RouterLinkTransform;
220
+ }());
221
+ exports.RouterLinkTransform = RouterLinkTransform;
222
+ global.define = __define;
223
+ return module.exports;
224
+ });
225
+
226
+ System.register("angular2/router/router_link_dsl", ["angular2/compiler", "angular2/core", "angular2/src/router/directives/router_link_transform", "angular2/src/facade/lang", "angular2/src/router/directives/router_link_transform"], true, function(require, exports, module) {
227
+ var global = System.global,
228
+ __define = global.define;
229
+ global.define = undefined;
230
+ "use strict";
231
+ var compiler_1 = require("angular2/compiler");
232
+ var core_1 = require("angular2/core");
233
+ var router_link_transform_1 = require("angular2/src/router/directives/router_link_transform");
234
+ var lang_1 = require("angular2/src/facade/lang");
235
+ var router_link_transform_2 = require("angular2/src/router/directives/router_link_transform");
236
+ exports.RouterLinkTransform = router_link_transform_2.RouterLinkTransform;
237
+ exports.ROUTER_LINK_DSL_PROVIDER = lang_1.CONST_EXPR(new core_1.Provider(compiler_1.TEMPLATE_TRANSFORMS, {
238
+ useClass: router_link_transform_1.RouterLinkTransform,
239
+ multi: true
240
+ }));
241
+ global.define = __define;
242
+ return module.exports;
243
+ });
244
+
245
+ System.register("angular2/src/router/route_config/route_config_impl", ["angular2/src/facade/lang"], true, function(require, exports, module) {
246
+ var global = System.global,
247
+ __define = global.define;
248
+ global.define = undefined;
249
+ "use strict";
250
+ var __extends = (this && this.__extends) || function(d, b) {
251
+ for (var p in b)
252
+ if (b.hasOwnProperty(p))
253
+ d[p] = b[p];
254
+ function __() {
255
+ this.constructor = d;
256
+ }
257
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
258
+ };
259
+ var __decorate = (this && this.__decorate) || function(decorators, target, key, desc) {
260
+ var c = arguments.length,
261
+ r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
262
+ d;
263
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
264
+ r = Reflect.decorate(decorators, target, key, desc);
265
+ else
266
+ for (var i = decorators.length - 1; i >= 0; i--)
267
+ if (d = decorators[i])
268
+ r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
269
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
270
+ };
271
+ var __metadata = (this && this.__metadata) || function(k, v) {
272
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
273
+ return Reflect.metadata(k, v);
274
+ };
275
+ var lang_1 = require("angular2/src/facade/lang");
276
+ var __make_dart_analyzer_happy = null;
277
+ var RouteConfig = (function() {
278
+ function RouteConfig(configs) {
279
+ this.configs = configs;
280
+ }
281
+ RouteConfig = __decorate([lang_1.CONST(), __metadata('design:paramtypes', [Array])], RouteConfig);
282
+ return RouteConfig;
283
+ }());
284
+ exports.RouteConfig = RouteConfig;
285
+ var AbstractRoute = (function() {
286
+ function AbstractRoute(_a) {
287
+ var name = _a.name,
288
+ useAsDefault = _a.useAsDefault,
289
+ path = _a.path,
290
+ regex = _a.regex,
291
+ serializer = _a.serializer,
292
+ data = _a.data;
293
+ this.name = name;
294
+ this.useAsDefault = useAsDefault;
295
+ this.path = path;
296
+ this.regex = regex;
297
+ this.serializer = serializer;
298
+ this.data = data;
299
+ }
300
+ AbstractRoute = __decorate([lang_1.CONST(), __metadata('design:paramtypes', [Object])], AbstractRoute);
301
+ return AbstractRoute;
302
+ }());
303
+ exports.AbstractRoute = AbstractRoute;
304
+ var Route = (function(_super) {
305
+ __extends(Route, _super);
306
+ function Route(_a) {
307
+ var name = _a.name,
308
+ useAsDefault = _a.useAsDefault,
309
+ path = _a.path,
310
+ regex = _a.regex,
311
+ serializer = _a.serializer,
312
+ data = _a.data,
313
+ component = _a.component;
314
+ _super.call(this, {
315
+ name: name,
316
+ useAsDefault: useAsDefault,
317
+ path: path,
318
+ regex: regex,
319
+ serializer: serializer,
320
+ data: data
321
+ });
322
+ this.aux = null;
323
+ this.component = component;
324
+ }
325
+ Route = __decorate([lang_1.CONST(), __metadata('design:paramtypes', [Object])], Route);
326
+ return Route;
327
+ }(AbstractRoute));
328
+ exports.Route = Route;
329
+ var AuxRoute = (function(_super) {
330
+ __extends(AuxRoute, _super);
331
+ function AuxRoute(_a) {
332
+ var name = _a.name,
333
+ useAsDefault = _a.useAsDefault,
334
+ path = _a.path,
335
+ regex = _a.regex,
336
+ serializer = _a.serializer,
337
+ data = _a.data,
338
+ component = _a.component;
339
+ _super.call(this, {
340
+ name: name,
341
+ useAsDefault: useAsDefault,
342
+ path: path,
343
+ regex: regex,
344
+ serializer: serializer,
345
+ data: data
346
+ });
347
+ this.component = component;
348
+ }
349
+ AuxRoute = __decorate([lang_1.CONST(), __metadata('design:paramtypes', [Object])], AuxRoute);
350
+ return AuxRoute;
351
+ }(AbstractRoute));
352
+ exports.AuxRoute = AuxRoute;
353
+ var AsyncRoute = (function(_super) {
354
+ __extends(AsyncRoute, _super);
355
+ function AsyncRoute(_a) {
356
+ var name = _a.name,
357
+ useAsDefault = _a.useAsDefault,
358
+ path = _a.path,
359
+ regex = _a.regex,
360
+ serializer = _a.serializer,
361
+ data = _a.data,
362
+ loader = _a.loader;
363
+ _super.call(this, {
364
+ name: name,
365
+ useAsDefault: useAsDefault,
366
+ path: path,
367
+ regex: regex,
368
+ serializer: serializer,
369
+ data: data
370
+ });
371
+ this.aux = null;
372
+ this.loader = loader;
373
+ }
374
+ AsyncRoute = __decorate([lang_1.CONST(), __metadata('design:paramtypes', [Object])], AsyncRoute);
375
+ return AsyncRoute;
376
+ }(AbstractRoute));
377
+ exports.AsyncRoute = AsyncRoute;
378
+ var Redirect = (function(_super) {
379
+ __extends(Redirect, _super);
380
+ function Redirect(_a) {
381
+ var name = _a.name,
382
+ useAsDefault = _a.useAsDefault,
383
+ path = _a.path,
384
+ regex = _a.regex,
385
+ serializer = _a.serializer,
386
+ data = _a.data,
387
+ redirectTo = _a.redirectTo;
388
+ _super.call(this, {
389
+ name: name,
390
+ useAsDefault: useAsDefault,
391
+ path: path,
392
+ regex: regex,
393
+ serializer: serializer,
394
+ data: data
395
+ });
396
+ this.redirectTo = redirectTo;
397
+ }
398
+ Redirect = __decorate([lang_1.CONST(), __metadata('design:paramtypes', [Object])], Redirect);
399
+ return Redirect;
400
+ }(AbstractRoute));
401
+ exports.Redirect = Redirect;
402
+ global.define = __define;
403
+ return module.exports;
404
+ });
405
+
406
+ System.register("angular2/src/router/url_parser", ["angular2/src/facade/collection", "angular2/src/facade/lang", "angular2/src/facade/exceptions"], true, function(require, exports, module) {
407
+ var global = System.global,
408
+ __define = global.define;
409
+ global.define = undefined;
410
+ "use strict";
411
+ var __extends = (this && this.__extends) || function(d, b) {
412
+ for (var p in b)
413
+ if (b.hasOwnProperty(p))
414
+ d[p] = b[p];
415
+ function __() {
416
+ this.constructor = d;
417
+ }
418
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
419
+ };
420
+ var collection_1 = require("angular2/src/facade/collection");
421
+ var lang_1 = require("angular2/src/facade/lang");
422
+ var exceptions_1 = require("angular2/src/facade/exceptions");
423
+ function convertUrlParamsToArray(urlParams) {
424
+ var paramsArray = [];
425
+ if (lang_1.isBlank(urlParams)) {
426
+ return [];
427
+ }
428
+ collection_1.StringMapWrapper.forEach(urlParams, function(value, key) {
429
+ paramsArray.push((value === true) ? key : key + '=' + value);
430
+ });
431
+ return paramsArray;
432
+ }
433
+ exports.convertUrlParamsToArray = convertUrlParamsToArray;
434
+ function serializeParams(urlParams, joiner) {
435
+ if (joiner === void 0) {
436
+ joiner = '&';
437
+ }
438
+ return convertUrlParamsToArray(urlParams).join(joiner);
439
+ }
440
+ exports.serializeParams = serializeParams;
441
+ var Url = (function() {
442
+ function Url(path, child, auxiliary, params) {
443
+ if (child === void 0) {
444
+ child = null;
445
+ }
446
+ if (auxiliary === void 0) {
447
+ auxiliary = lang_1.CONST_EXPR([]);
448
+ }
449
+ if (params === void 0) {
450
+ params = lang_1.CONST_EXPR({});
451
+ }
452
+ this.path = path;
453
+ this.child = child;
454
+ this.auxiliary = auxiliary;
455
+ this.params = params;
456
+ }
457
+ Url.prototype.toString = function() {
458
+ return this.path + this._matrixParamsToString() + this._auxToString() + this._childString();
459
+ };
460
+ Url.prototype.segmentToString = function() {
461
+ return this.path + this._matrixParamsToString();
462
+ };
463
+ Url.prototype._auxToString = function() {
464
+ return this.auxiliary.length > 0 ? ('(' + this.auxiliary.map(function(sibling) {
465
+ return sibling.toString();
466
+ }).join('//') + ')') : '';
467
+ };
468
+ Url.prototype._matrixParamsToString = function() {
469
+ var paramString = serializeParams(this.params, ';');
470
+ if (paramString.length > 0) {
471
+ return ';' + paramString;
472
+ }
473
+ return '';
474
+ };
475
+ Url.prototype._childString = function() {
476
+ return lang_1.isPresent(this.child) ? ('/' + this.child.toString()) : '';
477
+ };
478
+ return Url;
479
+ }());
480
+ exports.Url = Url;
481
+ var RootUrl = (function(_super) {
482
+ __extends(RootUrl, _super);
483
+ function RootUrl(path, child, auxiliary, params) {
484
+ if (child === void 0) {
485
+ child = null;
486
+ }
487
+ if (auxiliary === void 0) {
488
+ auxiliary = lang_1.CONST_EXPR([]);
489
+ }
490
+ if (params === void 0) {
491
+ params = null;
492
+ }
493
+ _super.call(this, path, child, auxiliary, params);
494
+ }
495
+ RootUrl.prototype.toString = function() {
496
+ return this.path + this._auxToString() + this._childString() + this._queryParamsToString();
497
+ };
498
+ RootUrl.prototype.segmentToString = function() {
499
+ return this.path + this._queryParamsToString();
500
+ };
501
+ RootUrl.prototype._queryParamsToString = function() {
502
+ if (lang_1.isBlank(this.params)) {
503
+ return '';
504
+ }
505
+ return '?' + serializeParams(this.params);
506
+ };
507
+ return RootUrl;
508
+ }(Url));
509
+ exports.RootUrl = RootUrl;
510
+ function pathSegmentsToUrl(pathSegments) {
511
+ var url = new Url(pathSegments[pathSegments.length - 1]);
512
+ for (var i = pathSegments.length - 2; i >= 0; i -= 1) {
513
+ url = new Url(pathSegments[i], url);
514
+ }
515
+ return url;
516
+ }
517
+ exports.pathSegmentsToUrl = pathSegmentsToUrl;
518
+ var SEGMENT_RE = lang_1.RegExpWrapper.create('^[^\\/\\(\\)\\?;=&#]+');
519
+ function matchUrlSegment(str) {
520
+ var match = lang_1.RegExpWrapper.firstMatch(SEGMENT_RE, str);
521
+ return lang_1.isPresent(match) ? match[0] : '';
522
+ }
523
+ var QUERY_PARAM_VALUE_RE = lang_1.RegExpWrapper.create('^[^\\(\\)\\?;&#]+');
524
+ function matchUrlQueryParamValue(str) {
525
+ var match = lang_1.RegExpWrapper.firstMatch(QUERY_PARAM_VALUE_RE, str);
526
+ return lang_1.isPresent(match) ? match[0] : '';
527
+ }
528
+ var UrlParser = (function() {
529
+ function UrlParser() {}
530
+ UrlParser.prototype.peekStartsWith = function(str) {
531
+ return this._remaining.startsWith(str);
532
+ };
533
+ UrlParser.prototype.capture = function(str) {
534
+ if (!this._remaining.startsWith(str)) {
535
+ throw new exceptions_1.BaseException("Expected \"" + str + "\".");
536
+ }
537
+ this._remaining = this._remaining.substring(str.length);
538
+ };
539
+ UrlParser.prototype.parse = function(url) {
540
+ this._remaining = url;
541
+ if (url == '' || url == '/') {
542
+ return new Url('');
543
+ }
544
+ return this.parseRoot();
545
+ };
546
+ UrlParser.prototype.parseRoot = function() {
547
+ if (this.peekStartsWith('/')) {
548
+ this.capture('/');
549
+ }
550
+ var path = matchUrlSegment(this._remaining);
551
+ this.capture(path);
552
+ var aux = [];
553
+ if (this.peekStartsWith('(')) {
554
+ aux = this.parseAuxiliaryRoutes();
555
+ }
556
+ if (this.peekStartsWith(';')) {
557
+ this.parseMatrixParams();
558
+ }
559
+ var child = null;
560
+ if (this.peekStartsWith('/') && !this.peekStartsWith('//')) {
561
+ this.capture('/');
562
+ child = this.parseSegment();
563
+ }
564
+ var queryParams = null;
565
+ if (this.peekStartsWith('?')) {
566
+ queryParams = this.parseQueryParams();
567
+ }
568
+ return new RootUrl(path, child, aux, queryParams);
569
+ };
570
+ UrlParser.prototype.parseSegment = function() {
571
+ if (this._remaining.length == 0) {
572
+ return null;
573
+ }
574
+ if (this.peekStartsWith('/')) {
575
+ this.capture('/');
576
+ }
577
+ var path = matchUrlSegment(this._remaining);
578
+ this.capture(path);
579
+ var matrixParams = null;
580
+ if (this.peekStartsWith(';')) {
581
+ matrixParams = this.parseMatrixParams();
582
+ }
583
+ var aux = [];
584
+ if (this.peekStartsWith('(')) {
585
+ aux = this.parseAuxiliaryRoutes();
586
+ }
587
+ var child = null;
588
+ if (this.peekStartsWith('/') && !this.peekStartsWith('//')) {
589
+ this.capture('/');
590
+ child = this.parseSegment();
591
+ }
592
+ return new Url(path, child, aux, matrixParams);
593
+ };
594
+ UrlParser.prototype.parseQueryParams = function() {
595
+ var params = {};
596
+ this.capture('?');
597
+ this.parseQueryParam(params);
598
+ while (this._remaining.length > 0 && this.peekStartsWith('&')) {
599
+ this.capture('&');
600
+ this.parseQueryParam(params);
601
+ }
602
+ return params;
603
+ };
604
+ UrlParser.prototype.parseMatrixParams = function() {
605
+ var params = {};
606
+ while (this._remaining.length > 0 && this.peekStartsWith(';')) {
607
+ this.capture(';');
608
+ this.parseParam(params);
609
+ }
610
+ return params;
611
+ };
612
+ UrlParser.prototype.parseParam = function(params) {
613
+ var key = matchUrlSegment(this._remaining);
614
+ if (lang_1.isBlank(key)) {
615
+ return ;
616
+ }
617
+ this.capture(key);
618
+ var value = true;
619
+ if (this.peekStartsWith('=')) {
620
+ this.capture('=');
621
+ var valueMatch = matchUrlSegment(this._remaining);
622
+ if (lang_1.isPresent(valueMatch)) {
623
+ value = valueMatch;
624
+ this.capture(value);
625
+ }
626
+ }
627
+ params[key] = value;
628
+ };
629
+ UrlParser.prototype.parseQueryParam = function(params) {
630
+ var key = matchUrlSegment(this._remaining);
631
+ if (lang_1.isBlank(key)) {
632
+ return ;
633
+ }
634
+ this.capture(key);
635
+ var value = true;
636
+ if (this.peekStartsWith('=')) {
637
+ this.capture('=');
638
+ var valueMatch = matchUrlQueryParamValue(this._remaining);
639
+ if (lang_1.isPresent(valueMatch)) {
640
+ value = valueMatch;
641
+ this.capture(value);
642
+ }
643
+ }
644
+ params[key] = value;
645
+ };
646
+ UrlParser.prototype.parseAuxiliaryRoutes = function() {
647
+ var routes = [];
648
+ this.capture('(');
649
+ while (!this.peekStartsWith(')') && this._remaining.length > 0) {
650
+ routes.push(this.parseSegment());
651
+ if (this.peekStartsWith('//')) {
652
+ this.capture('//');
653
+ }
654
+ }
655
+ this.capture(')');
656
+ return routes;
657
+ };
658
+ return UrlParser;
659
+ }());
660
+ exports.UrlParser = UrlParser;
661
+ exports.parser = new UrlParser();
662
+ global.define = __define;
663
+ return module.exports;
664
+ });
665
+
666
+ System.register("angular2/src/router/instruction", ["angular2/src/facade/collection", "angular2/src/facade/lang", "angular2/src/facade/async"], true, function(require, exports, module) {
667
+ var global = System.global,
668
+ __define = global.define;
669
+ global.define = undefined;
670
+ "use strict";
671
+ var __extends = (this && this.__extends) || function(d, b) {
672
+ for (var p in b)
673
+ if (b.hasOwnProperty(p))
674
+ d[p] = b[p];
675
+ function __() {
676
+ this.constructor = d;
677
+ }
678
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
679
+ };
680
+ var collection_1 = require("angular2/src/facade/collection");
681
+ var lang_1 = require("angular2/src/facade/lang");
682
+ var async_1 = require("angular2/src/facade/async");
683
+ var RouteParams = (function() {
684
+ function RouteParams(params) {
685
+ this.params = params;
686
+ }
687
+ RouteParams.prototype.get = function(param) {
688
+ return lang_1.normalizeBlank(collection_1.StringMapWrapper.get(this.params, param));
689
+ };
690
+ return RouteParams;
691
+ }());
692
+ exports.RouteParams = RouteParams;
693
+ var RouteData = (function() {
694
+ function RouteData(data) {
695
+ if (data === void 0) {
696
+ data = lang_1.CONST_EXPR({});
697
+ }
698
+ this.data = data;
699
+ }
700
+ RouteData.prototype.get = function(key) {
701
+ return lang_1.normalizeBlank(collection_1.StringMapWrapper.get(this.data, key));
702
+ };
703
+ return RouteData;
704
+ }());
705
+ exports.RouteData = RouteData;
706
+ exports.BLANK_ROUTE_DATA = new RouteData();
707
+ var Instruction = (function() {
708
+ function Instruction(component, child, auxInstruction) {
709
+ this.component = component;
710
+ this.child = child;
711
+ this.auxInstruction = auxInstruction;
712
+ }
713
+ Object.defineProperty(Instruction.prototype, "urlPath", {
714
+ get: function() {
715
+ return lang_1.isPresent(this.component) ? this.component.urlPath : '';
716
+ },
717
+ enumerable: true,
718
+ configurable: true
719
+ });
720
+ Object.defineProperty(Instruction.prototype, "urlParams", {
721
+ get: function() {
722
+ return lang_1.isPresent(this.component) ? this.component.urlParams : [];
723
+ },
724
+ enumerable: true,
725
+ configurable: true
726
+ });
727
+ Object.defineProperty(Instruction.prototype, "specificity", {
728
+ get: function() {
729
+ var total = '';
730
+ if (lang_1.isPresent(this.component)) {
731
+ total += this.component.specificity;
732
+ }
733
+ if (lang_1.isPresent(this.child)) {
734
+ total += this.child.specificity;
735
+ }
736
+ return total;
737
+ },
738
+ enumerable: true,
739
+ configurable: true
740
+ });
741
+ Instruction.prototype.toRootUrl = function() {
742
+ return this.toUrlPath() + this.toUrlQuery();
743
+ };
744
+ Instruction.prototype._toNonRootUrl = function() {
745
+ return this._stringifyPathMatrixAuxPrefixed() + (lang_1.isPresent(this.child) ? this.child._toNonRootUrl() : '');
746
+ };
747
+ Instruction.prototype.toUrlQuery = function() {
748
+ return this.urlParams.length > 0 ? ('?' + this.urlParams.join('&')) : '';
749
+ };
750
+ Instruction.prototype.replaceChild = function(child) {
751
+ return new ResolvedInstruction(this.component, child, this.auxInstruction);
752
+ };
753
+ Instruction.prototype.toUrlPath = function() {
754
+ return this.urlPath + this._stringifyAux() + (lang_1.isPresent(this.child) ? this.child._toNonRootUrl() : '');
755
+ };
756
+ Instruction.prototype.toLinkUrl = function() {
757
+ return this.urlPath + this._stringifyAux() + (lang_1.isPresent(this.child) ? this.child._toLinkUrl() : '') + this.toUrlQuery();
758
+ };
759
+ Instruction.prototype._toLinkUrl = function() {
760
+ return this._stringifyPathMatrixAuxPrefixed() + (lang_1.isPresent(this.child) ? this.child._toLinkUrl() : '');
761
+ };
762
+ Instruction.prototype._stringifyPathMatrixAuxPrefixed = function() {
763
+ var primary = this._stringifyPathMatrixAux();
764
+ if (primary.length > 0) {
765
+ primary = '/' + primary;
766
+ }
767
+ return primary;
768
+ };
769
+ Instruction.prototype._stringifyMatrixParams = function() {
770
+ return this.urlParams.length > 0 ? (';' + this.urlParams.join(';')) : '';
771
+ };
772
+ Instruction.prototype._stringifyPathMatrixAux = function() {
773
+ if (lang_1.isBlank(this.component)) {
774
+ return '';
775
+ }
776
+ return this.urlPath + this._stringifyMatrixParams() + this._stringifyAux();
777
+ };
778
+ Instruction.prototype._stringifyAux = function() {
779
+ var routes = [];
780
+ collection_1.StringMapWrapper.forEach(this.auxInstruction, function(auxInstruction, _) {
781
+ routes.push(auxInstruction._stringifyPathMatrixAux());
782
+ });
783
+ if (routes.length > 0) {
784
+ return '(' + routes.join('//') + ')';
785
+ }
786
+ return '';
787
+ };
788
+ return Instruction;
789
+ }());
790
+ exports.Instruction = Instruction;
791
+ var ResolvedInstruction = (function(_super) {
792
+ __extends(ResolvedInstruction, _super);
793
+ function ResolvedInstruction(component, child, auxInstruction) {
794
+ _super.call(this, component, child, auxInstruction);
795
+ }
796
+ ResolvedInstruction.prototype.resolveComponent = function() {
797
+ return async_1.PromiseWrapper.resolve(this.component);
798
+ };
799
+ return ResolvedInstruction;
800
+ }(Instruction));
801
+ exports.ResolvedInstruction = ResolvedInstruction;
802
+ var DefaultInstruction = (function(_super) {
803
+ __extends(DefaultInstruction, _super);
804
+ function DefaultInstruction(component, child) {
805
+ _super.call(this, component, child, {});
806
+ }
807
+ DefaultInstruction.prototype.toLinkUrl = function() {
808
+ return '';
809
+ };
810
+ DefaultInstruction.prototype._toLinkUrl = function() {
811
+ return '';
812
+ };
813
+ return DefaultInstruction;
814
+ }(ResolvedInstruction));
815
+ exports.DefaultInstruction = DefaultInstruction;
816
+ var UnresolvedInstruction = (function(_super) {
817
+ __extends(UnresolvedInstruction, _super);
818
+ function UnresolvedInstruction(_resolver, _urlPath, _urlParams) {
819
+ if (_urlPath === void 0) {
820
+ _urlPath = '';
821
+ }
822
+ if (_urlParams === void 0) {
823
+ _urlParams = lang_1.CONST_EXPR([]);
824
+ }
825
+ _super.call(this, null, null, {});
826
+ this._resolver = _resolver;
827
+ this._urlPath = _urlPath;
828
+ this._urlParams = _urlParams;
829
+ }
830
+ Object.defineProperty(UnresolvedInstruction.prototype, "urlPath", {
831
+ get: function() {
832
+ if (lang_1.isPresent(this.component)) {
833
+ return this.component.urlPath;
834
+ }
835
+ if (lang_1.isPresent(this._urlPath)) {
836
+ return this._urlPath;
837
+ }
838
+ return '';
839
+ },
840
+ enumerable: true,
841
+ configurable: true
842
+ });
843
+ Object.defineProperty(UnresolvedInstruction.prototype, "urlParams", {
844
+ get: function() {
845
+ if (lang_1.isPresent(this.component)) {
846
+ return this.component.urlParams;
847
+ }
848
+ if (lang_1.isPresent(this._urlParams)) {
849
+ return this._urlParams;
850
+ }
851
+ return [];
852
+ },
853
+ enumerable: true,
854
+ configurable: true
855
+ });
856
+ UnresolvedInstruction.prototype.resolveComponent = function() {
857
+ var _this = this;
858
+ if (lang_1.isPresent(this.component)) {
859
+ return async_1.PromiseWrapper.resolve(this.component);
860
+ }
861
+ return this._resolver().then(function(instruction) {
862
+ _this.child = lang_1.isPresent(instruction) ? instruction.child : null;
863
+ return _this.component = lang_1.isPresent(instruction) ? instruction.component : null;
864
+ });
865
+ };
866
+ return UnresolvedInstruction;
867
+ }(Instruction));
868
+ exports.UnresolvedInstruction = UnresolvedInstruction;
869
+ var RedirectInstruction = (function(_super) {
870
+ __extends(RedirectInstruction, _super);
871
+ function RedirectInstruction(component, child, auxInstruction, _specificity) {
872
+ _super.call(this, component, child, auxInstruction);
873
+ this._specificity = _specificity;
874
+ }
875
+ Object.defineProperty(RedirectInstruction.prototype, "specificity", {
876
+ get: function() {
877
+ return this._specificity;
878
+ },
879
+ enumerable: true,
880
+ configurable: true
881
+ });
882
+ return RedirectInstruction;
883
+ }(ResolvedInstruction));
884
+ exports.RedirectInstruction = RedirectInstruction;
885
+ var ComponentInstruction = (function() {
886
+ function ComponentInstruction(urlPath, urlParams, data, componentType, terminal, specificity, params, routeName) {
887
+ if (params === void 0) {
888
+ params = null;
889
+ }
890
+ this.urlPath = urlPath;
891
+ this.urlParams = urlParams;
892
+ this.componentType = componentType;
893
+ this.terminal = terminal;
894
+ this.specificity = specificity;
895
+ this.params = params;
896
+ this.routeName = routeName;
897
+ this.reuse = false;
898
+ this.routeData = lang_1.isPresent(data) ? data : exports.BLANK_ROUTE_DATA;
899
+ }
900
+ return ComponentInstruction;
901
+ }());
902
+ exports.ComponentInstruction = ComponentInstruction;
903
+ global.define = __define;
904
+ return module.exports;
905
+ });
906
+
907
+ System.register("angular2/src/router/rules/route_handlers/async_route_handler", ["angular2/src/facade/lang", "angular2/src/router/instruction"], true, function(require, exports, module) {
908
+ var global = System.global,
909
+ __define = global.define;
910
+ global.define = undefined;
911
+ "use strict";
912
+ var lang_1 = require("angular2/src/facade/lang");
913
+ var instruction_1 = require("angular2/src/router/instruction");
914
+ var AsyncRouteHandler = (function() {
915
+ function AsyncRouteHandler(_loader, data) {
916
+ if (data === void 0) {
917
+ data = null;
918
+ }
919
+ this._loader = _loader;
920
+ this._resolvedComponent = null;
921
+ this.data = lang_1.isPresent(data) ? new instruction_1.RouteData(data) : instruction_1.BLANK_ROUTE_DATA;
922
+ }
923
+ AsyncRouteHandler.prototype.resolveComponentType = function() {
924
+ var _this = this;
925
+ if (lang_1.isPresent(this._resolvedComponent)) {
926
+ return this._resolvedComponent;
927
+ }
928
+ return this._resolvedComponent = this._loader().then(function(componentType) {
929
+ _this.componentType = componentType;
930
+ return componentType;
931
+ });
932
+ };
933
+ return AsyncRouteHandler;
934
+ }());
935
+ exports.AsyncRouteHandler = AsyncRouteHandler;
936
+ global.define = __define;
937
+ return module.exports;
938
+ });
939
+
940
+ System.register("angular2/src/router/rules/route_handlers/sync_route_handler", ["angular2/src/facade/async", "angular2/src/facade/lang", "angular2/src/router/instruction"], true, function(require, exports, module) {
941
+ var global = System.global,
942
+ __define = global.define;
943
+ global.define = undefined;
944
+ "use strict";
945
+ var async_1 = require("angular2/src/facade/async");
946
+ var lang_1 = require("angular2/src/facade/lang");
947
+ var instruction_1 = require("angular2/src/router/instruction");
948
+ var SyncRouteHandler = (function() {
949
+ function SyncRouteHandler(componentType, data) {
950
+ this.componentType = componentType;
951
+ this._resolvedComponent = null;
952
+ this._resolvedComponent = async_1.PromiseWrapper.resolve(componentType);
953
+ this.data = lang_1.isPresent(data) ? new instruction_1.RouteData(data) : instruction_1.BLANK_ROUTE_DATA;
954
+ }
955
+ SyncRouteHandler.prototype.resolveComponentType = function() {
956
+ return this._resolvedComponent;
957
+ };
958
+ return SyncRouteHandler;
959
+ }());
960
+ exports.SyncRouteHandler = SyncRouteHandler;
961
+ global.define = __define;
962
+ return module.exports;
963
+ });
964
+
965
+ System.register("angular2/src/router/utils", ["angular2/src/facade/lang", "angular2/src/facade/collection"], true, function(require, exports, module) {
966
+ var global = System.global,
967
+ __define = global.define;
968
+ global.define = undefined;
969
+ "use strict";
970
+ var lang_1 = require("angular2/src/facade/lang");
971
+ var collection_1 = require("angular2/src/facade/collection");
972
+ var TouchMap = (function() {
973
+ function TouchMap(map) {
974
+ var _this = this;
975
+ this.map = {};
976
+ this.keys = {};
977
+ if (lang_1.isPresent(map)) {
978
+ collection_1.StringMapWrapper.forEach(map, function(value, key) {
979
+ _this.map[key] = lang_1.isPresent(value) ? value.toString() : null;
980
+ _this.keys[key] = true;
981
+ });
982
+ }
983
+ }
984
+ TouchMap.prototype.get = function(key) {
985
+ collection_1.StringMapWrapper.delete(this.keys, key);
986
+ return this.map[key];
987
+ };
988
+ TouchMap.prototype.getUnused = function() {
989
+ var _this = this;
990
+ var unused = {};
991
+ var keys = collection_1.StringMapWrapper.keys(this.keys);
992
+ keys.forEach(function(key) {
993
+ return unused[key] = collection_1.StringMapWrapper.get(_this.map, key);
994
+ });
995
+ return unused;
996
+ };
997
+ return TouchMap;
998
+ }());
999
+ exports.TouchMap = TouchMap;
1000
+ function normalizeString(obj) {
1001
+ if (lang_1.isBlank(obj)) {
1002
+ return null;
1003
+ } else {
1004
+ return obj.toString();
1005
+ }
1006
+ }
1007
+ exports.normalizeString = normalizeString;
1008
+ global.define = __define;
1009
+ return module.exports;
1010
+ });
1011
+
1012
+ System.register("angular2/src/router/rules/route_paths/route_path", [], true, function(require, exports, module) {
1013
+ var global = System.global,
1014
+ __define = global.define;
1015
+ global.define = undefined;
1016
+ "use strict";
1017
+ var MatchedUrl = (function() {
1018
+ function MatchedUrl(urlPath, urlParams, allParams, auxiliary, rest) {
1019
+ this.urlPath = urlPath;
1020
+ this.urlParams = urlParams;
1021
+ this.allParams = allParams;
1022
+ this.auxiliary = auxiliary;
1023
+ this.rest = rest;
1024
+ }
1025
+ return MatchedUrl;
1026
+ }());
1027
+ exports.MatchedUrl = MatchedUrl;
1028
+ var GeneratedUrl = (function() {
1029
+ function GeneratedUrl(urlPath, urlParams) {
1030
+ this.urlPath = urlPath;
1031
+ this.urlParams = urlParams;
1032
+ }
1033
+ return GeneratedUrl;
1034
+ }());
1035
+ exports.GeneratedUrl = GeneratedUrl;
1036
+ global.define = __define;
1037
+ return module.exports;
1038
+ });
1039
+
1040
+ System.register("angular2/src/router/rules/route_paths/regex_route_path", ["angular2/src/facade/lang", "angular2/src/router/rules/route_paths/route_path"], true, function(require, exports, module) {
1041
+ var global = System.global,
1042
+ __define = global.define;
1043
+ global.define = undefined;
1044
+ "use strict";
1045
+ var lang_1 = require("angular2/src/facade/lang");
1046
+ var route_path_1 = require("angular2/src/router/rules/route_paths/route_path");
1047
+ var RegexRoutePath = (function() {
1048
+ function RegexRoutePath(_reString, _serializer) {
1049
+ this._reString = _reString;
1050
+ this._serializer = _serializer;
1051
+ this.terminal = true;
1052
+ this.specificity = '2';
1053
+ this.hash = this._reString;
1054
+ this._regex = lang_1.RegExpWrapper.create(this._reString);
1055
+ }
1056
+ RegexRoutePath.prototype.matchUrl = function(url) {
1057
+ var urlPath = url.toString();
1058
+ var params = {};
1059
+ var matcher = lang_1.RegExpWrapper.matcher(this._regex, urlPath);
1060
+ var match = lang_1.RegExpMatcherWrapper.next(matcher);
1061
+ if (lang_1.isBlank(match)) {
1062
+ return null;
1063
+ }
1064
+ for (var i = 0; i < match.length; i += 1) {
1065
+ params[i.toString()] = match[i];
1066
+ }
1067
+ return new route_path_1.MatchedUrl(urlPath, [], params, [], null);
1068
+ };
1069
+ RegexRoutePath.prototype.generateUrl = function(params) {
1070
+ return this._serializer(params);
1071
+ };
1072
+ RegexRoutePath.prototype.toString = function() {
1073
+ return this._reString;
1074
+ };
1075
+ return RegexRoutePath;
1076
+ }());
1077
+ exports.RegexRoutePath = RegexRoutePath;
1078
+ global.define = __define;
1079
+ return module.exports;
1080
+ });
1081
+
1082
+ System.register("angular2/src/router/route_config/route_config_decorator", ["angular2/src/router/route_config/route_config_impl", "angular2/src/core/util/decorators", "angular2/src/router/route_config/route_config_impl"], true, function(require, exports, module) {
1083
+ var global = System.global,
1084
+ __define = global.define;
1085
+ global.define = undefined;
1086
+ "use strict";
1087
+ var route_config_impl_1 = require("angular2/src/router/route_config/route_config_impl");
1088
+ var decorators_1 = require("angular2/src/core/util/decorators");
1089
+ var route_config_impl_2 = require("angular2/src/router/route_config/route_config_impl");
1090
+ exports.Route = route_config_impl_2.Route;
1091
+ exports.Redirect = route_config_impl_2.Redirect;
1092
+ exports.AuxRoute = route_config_impl_2.AuxRoute;
1093
+ exports.AsyncRoute = route_config_impl_2.AsyncRoute;
1094
+ exports.RouteConfig = decorators_1.makeDecorator(route_config_impl_1.RouteConfig);
1095
+ global.define = __define;
1096
+ return module.exports;
1097
+ });
1098
+
1099
+ System.register("angular2/src/router/location/location_strategy", ["angular2/src/facade/lang", "angular2/core"], true, function(require, exports, module) {
1100
+ var global = System.global,
1101
+ __define = global.define;
1102
+ global.define = undefined;
1103
+ "use strict";
1104
+ var lang_1 = require("angular2/src/facade/lang");
1105
+ var core_1 = require("angular2/core");
1106
+ var LocationStrategy = (function() {
1107
+ function LocationStrategy() {}
1108
+ return LocationStrategy;
1109
+ }());
1110
+ exports.LocationStrategy = LocationStrategy;
1111
+ exports.APP_BASE_HREF = lang_1.CONST_EXPR(new core_1.OpaqueToken('appBaseHref'));
1112
+ function normalizeQueryParams(params) {
1113
+ return (params.length > 0 && params.substring(0, 1) != '?') ? ('?' + params) : params;
1114
+ }
1115
+ exports.normalizeQueryParams = normalizeQueryParams;
1116
+ function joinWithSlash(start, end) {
1117
+ if (start.length == 0) {
1118
+ return end;
1119
+ }
1120
+ if (end.length == 0) {
1121
+ return start;
1122
+ }
1123
+ var slashes = 0;
1124
+ if (start.endsWith('/')) {
1125
+ slashes++;
1126
+ }
1127
+ if (end.startsWith('/')) {
1128
+ slashes++;
1129
+ }
1130
+ if (slashes == 2) {
1131
+ return start + end.substring(1);
1132
+ }
1133
+ if (slashes == 1) {
1134
+ return start + end;
1135
+ }
1136
+ return start + '/' + end;
1137
+ }
1138
+ exports.joinWithSlash = joinWithSlash;
1139
+ global.define = __define;
1140
+ return module.exports;
1141
+ });
1142
+
1143
+ System.register("angular2/src/router/lifecycle/lifecycle_annotations_impl", ["angular2/src/facade/lang"], true, function(require, exports, module) {
1144
+ var global = System.global,
1145
+ __define = global.define;
1146
+ global.define = undefined;
1147
+ "use strict";
1148
+ var __decorate = (this && this.__decorate) || function(decorators, target, key, desc) {
1149
+ var c = arguments.length,
1150
+ r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
1151
+ d;
1152
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
1153
+ r = Reflect.decorate(decorators, target, key, desc);
1154
+ else
1155
+ for (var i = decorators.length - 1; i >= 0; i--)
1156
+ if (d = decorators[i])
1157
+ r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
1158
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
1159
+ };
1160
+ var __metadata = (this && this.__metadata) || function(k, v) {
1161
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
1162
+ return Reflect.metadata(k, v);
1163
+ };
1164
+ var lang_1 = require("angular2/src/facade/lang");
1165
+ var RouteLifecycleHook = (function() {
1166
+ function RouteLifecycleHook(name) {
1167
+ this.name = name;
1168
+ }
1169
+ RouteLifecycleHook = __decorate([lang_1.CONST(), __metadata('design:paramtypes', [String])], RouteLifecycleHook);
1170
+ return RouteLifecycleHook;
1171
+ }());
1172
+ exports.RouteLifecycleHook = RouteLifecycleHook;
1173
+ var CanActivate = (function() {
1174
+ function CanActivate(fn) {
1175
+ this.fn = fn;
1176
+ }
1177
+ CanActivate = __decorate([lang_1.CONST(), __metadata('design:paramtypes', [Function])], CanActivate);
1178
+ return CanActivate;
1179
+ }());
1180
+ exports.CanActivate = CanActivate;
1181
+ exports.routerCanReuse = lang_1.CONST_EXPR(new RouteLifecycleHook("routerCanReuse"));
1182
+ exports.routerCanDeactivate = lang_1.CONST_EXPR(new RouteLifecycleHook("routerCanDeactivate"));
1183
+ exports.routerOnActivate = lang_1.CONST_EXPR(new RouteLifecycleHook("routerOnActivate"));
1184
+ exports.routerOnReuse = lang_1.CONST_EXPR(new RouteLifecycleHook("routerOnReuse"));
1185
+ exports.routerOnDeactivate = lang_1.CONST_EXPR(new RouteLifecycleHook("routerOnDeactivate"));
1186
+ global.define = __define;
1187
+ return module.exports;
1188
+ });
1189
+
1190
+ System.register("angular2/src/router/lifecycle/lifecycle_annotations", ["angular2/src/core/util/decorators", "angular2/src/router/lifecycle/lifecycle_annotations_impl", "angular2/src/router/lifecycle/lifecycle_annotations_impl"], true, function(require, exports, module) {
1191
+ var global = System.global,
1192
+ __define = global.define;
1193
+ global.define = undefined;
1194
+ "use strict";
1195
+ var decorators_1 = require("angular2/src/core/util/decorators");
1196
+ var lifecycle_annotations_impl_1 = require("angular2/src/router/lifecycle/lifecycle_annotations_impl");
1197
+ var lifecycle_annotations_impl_2 = require("angular2/src/router/lifecycle/lifecycle_annotations_impl");
1198
+ exports.routerCanReuse = lifecycle_annotations_impl_2.routerCanReuse;
1199
+ exports.routerCanDeactivate = lifecycle_annotations_impl_2.routerCanDeactivate;
1200
+ exports.routerOnActivate = lifecycle_annotations_impl_2.routerOnActivate;
1201
+ exports.routerOnReuse = lifecycle_annotations_impl_2.routerOnReuse;
1202
+ exports.routerOnDeactivate = lifecycle_annotations_impl_2.routerOnDeactivate;
1203
+ exports.CanActivate = decorators_1.makeDecorator(lifecycle_annotations_impl_1.CanActivate);
1204
+ global.define = __define;
1205
+ return module.exports;
1206
+ });
1207
+
1208
+ System.register("angular2/src/router/directives/router_link", ["angular2/core", "angular2/src/facade/lang", "angular2/src/router/router", "angular2/src/router/location/location"], true, function(require, exports, module) {
1209
+ var global = System.global,
1210
+ __define = global.define;
1211
+ global.define = undefined;
1212
+ "use strict";
1213
+ var __decorate = (this && this.__decorate) || function(decorators, target, key, desc) {
1214
+ var c = arguments.length,
1215
+ r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
1216
+ d;
1217
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
1218
+ r = Reflect.decorate(decorators, target, key, desc);
1219
+ else
1220
+ for (var i = decorators.length - 1; i >= 0; i--)
1221
+ if (d = decorators[i])
1222
+ r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
1223
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
1224
+ };
1225
+ var __metadata = (this && this.__metadata) || function(k, v) {
1226
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
1227
+ return Reflect.metadata(k, v);
1228
+ };
1229
+ var core_1 = require("angular2/core");
1230
+ var lang_1 = require("angular2/src/facade/lang");
1231
+ var router_1 = require("angular2/src/router/router");
1232
+ var location_1 = require("angular2/src/router/location/location");
1233
+ var RouterLink = (function() {
1234
+ function RouterLink(_router, _location) {
1235
+ var _this = this;
1236
+ this._router = _router;
1237
+ this._location = _location;
1238
+ this._router.subscribe(function(_) {
1239
+ return _this._updateLink();
1240
+ });
1241
+ }
1242
+ RouterLink.prototype._updateLink = function() {
1243
+ this._navigationInstruction = this._router.generate(this._routeParams);
1244
+ var navigationHref = this._navigationInstruction.toLinkUrl();
1245
+ this.visibleHref = this._location.prepareExternalUrl(navigationHref);
1246
+ };
1247
+ Object.defineProperty(RouterLink.prototype, "isRouteActive", {
1248
+ get: function() {
1249
+ return this._router.isRouteActive(this._navigationInstruction);
1250
+ },
1251
+ enumerable: true,
1252
+ configurable: true
1253
+ });
1254
+ Object.defineProperty(RouterLink.prototype, "routeParams", {
1255
+ set: function(changes) {
1256
+ this._routeParams = changes;
1257
+ this._updateLink();
1258
+ },
1259
+ enumerable: true,
1260
+ configurable: true
1261
+ });
1262
+ RouterLink.prototype.onClick = function() {
1263
+ if (!lang_1.isString(this.target) || this.target == '_self') {
1264
+ this._router.navigateByInstruction(this._navigationInstruction);
1265
+ return false;
1266
+ }
1267
+ return true;
1268
+ };
1269
+ RouterLink = __decorate([core_1.Directive({
1270
+ selector: '[routerLink]',
1271
+ inputs: ['routeParams: routerLink', 'target: target'],
1272
+ host: {
1273
+ '(click)': 'onClick()',
1274
+ '[attr.href]': 'visibleHref',
1275
+ '[class.router-link-active]': 'isRouteActive'
1276
+ }
1277
+ }), __metadata('design:paramtypes', [router_1.Router, location_1.Location])], RouterLink);
1278
+ return RouterLink;
1279
+ }());
1280
+ exports.RouterLink = RouterLink;
1281
+ global.define = __define;
1282
+ return module.exports;
1283
+ });
1284
+
1285
+ System.register("angular2/src/router/location/platform_location", [], true, function(require, exports, module) {
1286
+ var global = System.global,
1287
+ __define = global.define;
1288
+ global.define = undefined;
1289
+ "use strict";
1290
+ var PlatformLocation = (function() {
1291
+ function PlatformLocation() {}
1292
+ Object.defineProperty(PlatformLocation.prototype, "pathname", {
1293
+ get: function() {
1294
+ return null;
1295
+ },
1296
+ enumerable: true,
1297
+ configurable: true
1298
+ });
1299
+ Object.defineProperty(PlatformLocation.prototype, "search", {
1300
+ get: function() {
1301
+ return null;
1302
+ },
1303
+ enumerable: true,
1304
+ configurable: true
1305
+ });
1306
+ Object.defineProperty(PlatformLocation.prototype, "hash", {
1307
+ get: function() {
1308
+ return null;
1309
+ },
1310
+ enumerable: true,
1311
+ configurable: true
1312
+ });
1313
+ return PlatformLocation;
1314
+ }());
1315
+ exports.PlatformLocation = PlatformLocation;
1316
+ global.define = __define;
1317
+ return module.exports;
1318
+ });
1319
+
1320
+ System.register("angular2/src/router/location/hash_location_strategy", ["angular2/core", "angular2/src/router/location/location_strategy", "angular2/src/facade/lang", "angular2/src/router/location/platform_location"], true, function(require, exports, module) {
1321
+ var global = System.global,
1322
+ __define = global.define;
1323
+ global.define = undefined;
1324
+ "use strict";
1325
+ var __extends = (this && this.__extends) || function(d, b) {
1326
+ for (var p in b)
1327
+ if (b.hasOwnProperty(p))
1328
+ d[p] = b[p];
1329
+ function __() {
1330
+ this.constructor = d;
1331
+ }
1332
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
1333
+ };
1334
+ var __decorate = (this && this.__decorate) || function(decorators, target, key, desc) {
1335
+ var c = arguments.length,
1336
+ r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
1337
+ d;
1338
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
1339
+ r = Reflect.decorate(decorators, target, key, desc);
1340
+ else
1341
+ for (var i = decorators.length - 1; i >= 0; i--)
1342
+ if (d = decorators[i])
1343
+ r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
1344
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
1345
+ };
1346
+ var __metadata = (this && this.__metadata) || function(k, v) {
1347
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
1348
+ return Reflect.metadata(k, v);
1349
+ };
1350
+ var __param = (this && this.__param) || function(paramIndex, decorator) {
1351
+ return function(target, key) {
1352
+ decorator(target, key, paramIndex);
1353
+ };
1354
+ };
1355
+ var core_1 = require("angular2/core");
1356
+ var location_strategy_1 = require("angular2/src/router/location/location_strategy");
1357
+ var lang_1 = require("angular2/src/facade/lang");
1358
+ var platform_location_1 = require("angular2/src/router/location/platform_location");
1359
+ var HashLocationStrategy = (function(_super) {
1360
+ __extends(HashLocationStrategy, _super);
1361
+ function HashLocationStrategy(_platformLocation, _baseHref) {
1362
+ _super.call(this);
1363
+ this._platformLocation = _platformLocation;
1364
+ this._baseHref = '';
1365
+ if (lang_1.isPresent(_baseHref)) {
1366
+ this._baseHref = _baseHref;
1367
+ }
1368
+ }
1369
+ HashLocationStrategy.prototype.onPopState = function(fn) {
1370
+ this._platformLocation.onPopState(fn);
1371
+ this._platformLocation.onHashChange(fn);
1372
+ };
1373
+ HashLocationStrategy.prototype.getBaseHref = function() {
1374
+ return this._baseHref;
1375
+ };
1376
+ HashLocationStrategy.prototype.path = function() {
1377
+ var path = this._platformLocation.hash;
1378
+ if (!lang_1.isPresent(path))
1379
+ path = '#';
1380
+ return (path.length > 0 ? path.substring(1) : path);
1381
+ };
1382
+ HashLocationStrategy.prototype.prepareExternalUrl = function(internal) {
1383
+ var url = location_strategy_1.joinWithSlash(this._baseHref, internal);
1384
+ return url.length > 0 ? ('#' + url) : url;
1385
+ };
1386
+ HashLocationStrategy.prototype.pushState = function(state, title, path, queryParams) {
1387
+ var url = this.prepareExternalUrl(path + location_strategy_1.normalizeQueryParams(queryParams));
1388
+ if (url.length == 0) {
1389
+ url = this._platformLocation.pathname;
1390
+ }
1391
+ this._platformLocation.pushState(state, title, url);
1392
+ };
1393
+ HashLocationStrategy.prototype.replaceState = function(state, title, path, queryParams) {
1394
+ var url = this.prepareExternalUrl(path + location_strategy_1.normalizeQueryParams(queryParams));
1395
+ if (url.length == 0) {
1396
+ url = this._platformLocation.pathname;
1397
+ }
1398
+ this._platformLocation.replaceState(state, title, url);
1399
+ };
1400
+ HashLocationStrategy.prototype.forward = function() {
1401
+ this._platformLocation.forward();
1402
+ };
1403
+ HashLocationStrategy.prototype.back = function() {
1404
+ this._platformLocation.back();
1405
+ };
1406
+ HashLocationStrategy = __decorate([core_1.Injectable(), __param(1, core_1.Optional()), __param(1, core_1.Inject(location_strategy_1.APP_BASE_HREF)), __metadata('design:paramtypes', [platform_location_1.PlatformLocation, String])], HashLocationStrategy);
1407
+ return HashLocationStrategy;
1408
+ }(location_strategy_1.LocationStrategy));
1409
+ exports.HashLocationStrategy = HashLocationStrategy;
1410
+ global.define = __define;
1411
+ return module.exports;
1412
+ });
1413
+
1414
+ System.register("angular2/src/router/location/path_location_strategy", ["angular2/core", "angular2/src/facade/lang", "angular2/src/facade/exceptions", "angular2/src/router/location/location_strategy", "angular2/src/router/location/platform_location"], true, function(require, exports, module) {
1415
+ var global = System.global,
1416
+ __define = global.define;
1417
+ global.define = undefined;
1418
+ "use strict";
1419
+ var __extends = (this && this.__extends) || function(d, b) {
1420
+ for (var p in b)
1421
+ if (b.hasOwnProperty(p))
1422
+ d[p] = b[p];
1423
+ function __() {
1424
+ this.constructor = d;
1425
+ }
1426
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
1427
+ };
1428
+ var __decorate = (this && this.__decorate) || function(decorators, target, key, desc) {
1429
+ var c = arguments.length,
1430
+ r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
1431
+ d;
1432
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
1433
+ r = Reflect.decorate(decorators, target, key, desc);
1434
+ else
1435
+ for (var i = decorators.length - 1; i >= 0; i--)
1436
+ if (d = decorators[i])
1437
+ r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
1438
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
1439
+ };
1440
+ var __metadata = (this && this.__metadata) || function(k, v) {
1441
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
1442
+ return Reflect.metadata(k, v);
1443
+ };
1444
+ var __param = (this && this.__param) || function(paramIndex, decorator) {
1445
+ return function(target, key) {
1446
+ decorator(target, key, paramIndex);
1447
+ };
1448
+ };
1449
+ var core_1 = require("angular2/core");
1450
+ var lang_1 = require("angular2/src/facade/lang");
1451
+ var exceptions_1 = require("angular2/src/facade/exceptions");
1452
+ var location_strategy_1 = require("angular2/src/router/location/location_strategy");
1453
+ var platform_location_1 = require("angular2/src/router/location/platform_location");
1454
+ var PathLocationStrategy = (function(_super) {
1455
+ __extends(PathLocationStrategy, _super);
1456
+ function PathLocationStrategy(_platformLocation, href) {
1457
+ _super.call(this);
1458
+ this._platformLocation = _platformLocation;
1459
+ if (lang_1.isBlank(href)) {
1460
+ href = this._platformLocation.getBaseHrefFromDOM();
1461
+ }
1462
+ if (lang_1.isBlank(href)) {
1463
+ throw new exceptions_1.BaseException("No base href set. Please provide a value for the APP_BASE_HREF token or add a base element to the document.");
1464
+ }
1465
+ this._baseHref = href;
1466
+ }
1467
+ PathLocationStrategy.prototype.onPopState = function(fn) {
1468
+ this._platformLocation.onPopState(fn);
1469
+ this._platformLocation.onHashChange(fn);
1470
+ };
1471
+ PathLocationStrategy.prototype.getBaseHref = function() {
1472
+ return this._baseHref;
1473
+ };
1474
+ PathLocationStrategy.prototype.prepareExternalUrl = function(internal) {
1475
+ return location_strategy_1.joinWithSlash(this._baseHref, internal);
1476
+ };
1477
+ PathLocationStrategy.prototype.path = function() {
1478
+ return this._platformLocation.pathname + location_strategy_1.normalizeQueryParams(this._platformLocation.search);
1479
+ };
1480
+ PathLocationStrategy.prototype.pushState = function(state, title, url, queryParams) {
1481
+ var externalUrl = this.prepareExternalUrl(url + location_strategy_1.normalizeQueryParams(queryParams));
1482
+ this._platformLocation.pushState(state, title, externalUrl);
1483
+ };
1484
+ PathLocationStrategy.prototype.replaceState = function(state, title, url, queryParams) {
1485
+ var externalUrl = this.prepareExternalUrl(url + location_strategy_1.normalizeQueryParams(queryParams));
1486
+ this._platformLocation.replaceState(state, title, externalUrl);
1487
+ };
1488
+ PathLocationStrategy.prototype.forward = function() {
1489
+ this._platformLocation.forward();
1490
+ };
1491
+ PathLocationStrategy.prototype.back = function() {
1492
+ this._platformLocation.back();
1493
+ };
1494
+ PathLocationStrategy = __decorate([core_1.Injectable(), __param(1, core_1.Optional()), __param(1, core_1.Inject(location_strategy_1.APP_BASE_HREF)), __metadata('design:paramtypes', [platform_location_1.PlatformLocation, String])], PathLocationStrategy);
1495
+ return PathLocationStrategy;
1496
+ }(location_strategy_1.LocationStrategy));
1497
+ exports.PathLocationStrategy = PathLocationStrategy;
1498
+ global.define = __define;
1499
+ return module.exports;
1500
+ });
1501
+
1502
+ System.register("angular2/src/router/router_providers_common", ["angular2/src/router/location/location_strategy", "angular2/src/router/location/path_location_strategy", "angular2/src/router/router", "angular2/src/router/route_registry", "angular2/src/router/location/location", "angular2/src/facade/lang", "angular2/core", "angular2/src/facade/exceptions"], true, function(require, exports, module) {
1503
+ var global = System.global,
1504
+ __define = global.define;
1505
+ global.define = undefined;
1506
+ "use strict";
1507
+ var location_strategy_1 = require("angular2/src/router/location/location_strategy");
1508
+ var path_location_strategy_1 = require("angular2/src/router/location/path_location_strategy");
1509
+ var router_1 = require("angular2/src/router/router");
1510
+ var route_registry_1 = require("angular2/src/router/route_registry");
1511
+ var location_1 = require("angular2/src/router/location/location");
1512
+ var lang_1 = require("angular2/src/facade/lang");
1513
+ var core_1 = require("angular2/core");
1514
+ var exceptions_1 = require("angular2/src/facade/exceptions");
1515
+ exports.ROUTER_PROVIDERS_COMMON = lang_1.CONST_EXPR([route_registry_1.RouteRegistry, lang_1.CONST_EXPR(new core_1.Provider(location_strategy_1.LocationStrategy, {useClass: path_location_strategy_1.PathLocationStrategy})), location_1.Location, lang_1.CONST_EXPR(new core_1.Provider(router_1.Router, {
1516
+ useFactory: routerFactory,
1517
+ deps: lang_1.CONST_EXPR([route_registry_1.RouteRegistry, location_1.Location, route_registry_1.ROUTER_PRIMARY_COMPONENT, core_1.ApplicationRef])
1518
+ })), lang_1.CONST_EXPR(new core_1.Provider(route_registry_1.ROUTER_PRIMARY_COMPONENT, {
1519
+ useFactory: routerPrimaryComponentFactory,
1520
+ deps: lang_1.CONST_EXPR([core_1.ApplicationRef])
1521
+ }))]);
1522
+ function routerFactory(registry, location, primaryComponent, appRef) {
1523
+ var rootRouter = new router_1.RootRouter(registry, location, primaryComponent);
1524
+ appRef.registerDisposeListener(function() {
1525
+ return rootRouter.dispose();
1526
+ });
1527
+ return rootRouter;
1528
+ }
1529
+ function routerPrimaryComponentFactory(app) {
1530
+ if (app.componentTypes.length == 0) {
1531
+ throw new exceptions_1.BaseException("Bootstrap at least one component before injecting Router.");
1532
+ }
1533
+ return app.componentTypes[0];
1534
+ }
1535
+ global.define = __define;
1536
+ return module.exports;
1537
+ });
1538
+
1539
+ System.register("angular2/src/router/rules/rules", ["angular2/src/facade/lang", "angular2/src/facade/exceptions", "angular2/src/facade/promise", "angular2/src/facade/collection", "angular2/src/router/url_parser", "angular2/src/router/instruction"], true, function(require, exports, module) {
1540
+ var global = System.global,
1541
+ __define = global.define;
1542
+ global.define = undefined;
1543
+ "use strict";
1544
+ var __extends = (this && this.__extends) || function(d, b) {
1545
+ for (var p in b)
1546
+ if (b.hasOwnProperty(p))
1547
+ d[p] = b[p];
1548
+ function __() {
1549
+ this.constructor = d;
1550
+ }
1551
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
1552
+ };
1553
+ var lang_1 = require("angular2/src/facade/lang");
1554
+ var exceptions_1 = require("angular2/src/facade/exceptions");
1555
+ var promise_1 = require("angular2/src/facade/promise");
1556
+ var collection_1 = require("angular2/src/facade/collection");
1557
+ var url_parser_1 = require("angular2/src/router/url_parser");
1558
+ var instruction_1 = require("angular2/src/router/instruction");
1559
+ var RouteMatch = (function() {
1560
+ function RouteMatch() {}
1561
+ return RouteMatch;
1562
+ }());
1563
+ exports.RouteMatch = RouteMatch;
1564
+ var PathMatch = (function(_super) {
1565
+ __extends(PathMatch, _super);
1566
+ function PathMatch(instruction, remaining, remainingAux) {
1567
+ _super.call(this);
1568
+ this.instruction = instruction;
1569
+ this.remaining = remaining;
1570
+ this.remainingAux = remainingAux;
1571
+ }
1572
+ return PathMatch;
1573
+ }(RouteMatch));
1574
+ exports.PathMatch = PathMatch;
1575
+ var RedirectMatch = (function(_super) {
1576
+ __extends(RedirectMatch, _super);
1577
+ function RedirectMatch(redirectTo, specificity) {
1578
+ _super.call(this);
1579
+ this.redirectTo = redirectTo;
1580
+ this.specificity = specificity;
1581
+ }
1582
+ return RedirectMatch;
1583
+ }(RouteMatch));
1584
+ exports.RedirectMatch = RedirectMatch;
1585
+ var RedirectRule = (function() {
1586
+ function RedirectRule(_pathRecognizer, redirectTo) {
1587
+ this._pathRecognizer = _pathRecognizer;
1588
+ this.redirectTo = redirectTo;
1589
+ this.hash = this._pathRecognizer.hash;
1590
+ }
1591
+ Object.defineProperty(RedirectRule.prototype, "path", {
1592
+ get: function() {
1593
+ return this._pathRecognizer.toString();
1594
+ },
1595
+ set: function(val) {
1596
+ throw new exceptions_1.BaseException('you cannot set the path of a RedirectRule directly');
1597
+ },
1598
+ enumerable: true,
1599
+ configurable: true
1600
+ });
1601
+ RedirectRule.prototype.recognize = function(beginningSegment) {
1602
+ var match = null;
1603
+ if (lang_1.isPresent(this._pathRecognizer.matchUrl(beginningSegment))) {
1604
+ match = new RedirectMatch(this.redirectTo, this._pathRecognizer.specificity);
1605
+ }
1606
+ return promise_1.PromiseWrapper.resolve(match);
1607
+ };
1608
+ RedirectRule.prototype.generate = function(params) {
1609
+ throw new exceptions_1.BaseException("Tried to generate a redirect.");
1610
+ };
1611
+ return RedirectRule;
1612
+ }());
1613
+ exports.RedirectRule = RedirectRule;
1614
+ var RouteRule = (function() {
1615
+ function RouteRule(_routePath, handler, _routeName) {
1616
+ this._routePath = _routePath;
1617
+ this.handler = handler;
1618
+ this._routeName = _routeName;
1619
+ this._cache = new collection_1.Map();
1620
+ this.specificity = this._routePath.specificity;
1621
+ this.hash = this._routePath.hash;
1622
+ this.terminal = this._routePath.terminal;
1623
+ }
1624
+ Object.defineProperty(RouteRule.prototype, "path", {
1625
+ get: function() {
1626
+ return this._routePath.toString();
1627
+ },
1628
+ set: function(val) {
1629
+ throw new exceptions_1.BaseException('you cannot set the path of a RouteRule directly');
1630
+ },
1631
+ enumerable: true,
1632
+ configurable: true
1633
+ });
1634
+ RouteRule.prototype.recognize = function(beginningSegment) {
1635
+ var _this = this;
1636
+ var res = this._routePath.matchUrl(beginningSegment);
1637
+ if (lang_1.isBlank(res)) {
1638
+ return null;
1639
+ }
1640
+ return this.handler.resolveComponentType().then(function(_) {
1641
+ var componentInstruction = _this._getInstruction(res.urlPath, res.urlParams, res.allParams);
1642
+ return new PathMatch(componentInstruction, res.rest, res.auxiliary);
1643
+ });
1644
+ };
1645
+ RouteRule.prototype.generate = function(params) {
1646
+ var generated = this._routePath.generateUrl(params);
1647
+ var urlPath = generated.urlPath;
1648
+ var urlParams = generated.urlParams;
1649
+ return this._getInstruction(urlPath, url_parser_1.convertUrlParamsToArray(urlParams), params);
1650
+ };
1651
+ RouteRule.prototype.generateComponentPathValues = function(params) {
1652
+ return this._routePath.generateUrl(params);
1653
+ };
1654
+ RouteRule.prototype._getInstruction = function(urlPath, urlParams, params) {
1655
+ if (lang_1.isBlank(this.handler.componentType)) {
1656
+ throw new exceptions_1.BaseException("Tried to get instruction before the type was loaded.");
1657
+ }
1658
+ var hashKey = urlPath + '?' + urlParams.join('&');
1659
+ if (this._cache.has(hashKey)) {
1660
+ return this._cache.get(hashKey);
1661
+ }
1662
+ var instruction = new instruction_1.ComponentInstruction(urlPath, urlParams, this.handler.data, this.handler.componentType, this.terminal, this.specificity, params, this._routeName);
1663
+ this._cache.set(hashKey, instruction);
1664
+ return instruction;
1665
+ };
1666
+ return RouteRule;
1667
+ }());
1668
+ exports.RouteRule = RouteRule;
1669
+ global.define = __define;
1670
+ return module.exports;
1671
+ });
1672
+
1673
+ System.register("angular2/src/router/rules/route_paths/param_route_path", ["angular2/src/facade/lang", "angular2/src/facade/exceptions", "angular2/src/facade/collection", "angular2/src/router/utils", "angular2/src/router/url_parser", "angular2/src/router/rules/route_paths/route_path"], true, function(require, exports, module) {
1674
+ var global = System.global,
1675
+ __define = global.define;
1676
+ global.define = undefined;
1677
+ "use strict";
1678
+ var lang_1 = require("angular2/src/facade/lang");
1679
+ var exceptions_1 = require("angular2/src/facade/exceptions");
1680
+ var collection_1 = require("angular2/src/facade/collection");
1681
+ var utils_1 = require("angular2/src/router/utils");
1682
+ var url_parser_1 = require("angular2/src/router/url_parser");
1683
+ var route_path_1 = require("angular2/src/router/rules/route_paths/route_path");
1684
+ var ContinuationPathSegment = (function() {
1685
+ function ContinuationPathSegment() {
1686
+ this.name = '';
1687
+ this.specificity = '';
1688
+ this.hash = '...';
1689
+ }
1690
+ ContinuationPathSegment.prototype.generate = function(params) {
1691
+ return '';
1692
+ };
1693
+ ContinuationPathSegment.prototype.match = function(path) {
1694
+ return true;
1695
+ };
1696
+ return ContinuationPathSegment;
1697
+ }());
1698
+ var StaticPathSegment = (function() {
1699
+ function StaticPathSegment(path) {
1700
+ this.path = path;
1701
+ this.name = '';
1702
+ this.specificity = '2';
1703
+ this.hash = path;
1704
+ }
1705
+ StaticPathSegment.prototype.match = function(path) {
1706
+ return path == this.path;
1707
+ };
1708
+ StaticPathSegment.prototype.generate = function(params) {
1709
+ return this.path;
1710
+ };
1711
+ return StaticPathSegment;
1712
+ }());
1713
+ var DynamicPathSegment = (function() {
1714
+ function DynamicPathSegment(name) {
1715
+ this.name = name;
1716
+ this.specificity = '1';
1717
+ this.hash = ':';
1718
+ }
1719
+ DynamicPathSegment.prototype.match = function(path) {
1720
+ return path.length > 0;
1721
+ };
1722
+ DynamicPathSegment.prototype.generate = function(params) {
1723
+ if (!collection_1.StringMapWrapper.contains(params.map, this.name)) {
1724
+ throw new exceptions_1.BaseException("Route generator for '" + this.name + "' was not included in parameters passed.");
1725
+ }
1726
+ return encodeDynamicSegment(utils_1.normalizeString(params.get(this.name)));
1727
+ };
1728
+ DynamicPathSegment.paramMatcher = /^:([^\/]+)$/g;
1729
+ return DynamicPathSegment;
1730
+ }());
1731
+ var StarPathSegment = (function() {
1732
+ function StarPathSegment(name) {
1733
+ this.name = name;
1734
+ this.specificity = '0';
1735
+ this.hash = '*';
1736
+ }
1737
+ StarPathSegment.prototype.match = function(path) {
1738
+ return true;
1739
+ };
1740
+ StarPathSegment.prototype.generate = function(params) {
1741
+ return utils_1.normalizeString(params.get(this.name));
1742
+ };
1743
+ StarPathSegment.wildcardMatcher = /^\*([^\/]+)$/g;
1744
+ return StarPathSegment;
1745
+ }());
1746
+ var ParamRoutePath = (function() {
1747
+ function ParamRoutePath(routePath) {
1748
+ this.routePath = routePath;
1749
+ this.terminal = true;
1750
+ this._assertValidPath(routePath);
1751
+ this._parsePathString(routePath);
1752
+ this.specificity = this._calculateSpecificity();
1753
+ this.hash = this._calculateHash();
1754
+ var lastSegment = this._segments[this._segments.length - 1];
1755
+ this.terminal = !(lastSegment instanceof ContinuationPathSegment);
1756
+ }
1757
+ ParamRoutePath.prototype.matchUrl = function(url) {
1758
+ var nextUrlSegment = url;
1759
+ var currentUrlSegment;
1760
+ var positionalParams = {};
1761
+ var captured = [];
1762
+ for (var i = 0; i < this._segments.length; i += 1) {
1763
+ var pathSegment = this._segments[i];
1764
+ currentUrlSegment = nextUrlSegment;
1765
+ if (pathSegment instanceof ContinuationPathSegment) {
1766
+ break;
1767
+ }
1768
+ if (lang_1.isPresent(currentUrlSegment)) {
1769
+ if (pathSegment instanceof StarPathSegment) {
1770
+ positionalParams[pathSegment.name] = currentUrlSegment.toString();
1771
+ captured.push(currentUrlSegment.toString());
1772
+ nextUrlSegment = null;
1773
+ break;
1774
+ }
1775
+ captured.push(currentUrlSegment.path);
1776
+ if (pathSegment instanceof DynamicPathSegment) {
1777
+ positionalParams[pathSegment.name] = decodeDynamicSegment(currentUrlSegment.path);
1778
+ } else if (!pathSegment.match(currentUrlSegment.path)) {
1779
+ return null;
1780
+ }
1781
+ nextUrlSegment = currentUrlSegment.child;
1782
+ } else if (!pathSegment.match('')) {
1783
+ return null;
1784
+ }
1785
+ }
1786
+ if (this.terminal && lang_1.isPresent(nextUrlSegment)) {
1787
+ return null;
1788
+ }
1789
+ var urlPath = captured.join('/');
1790
+ var auxiliary = [];
1791
+ var urlParams = [];
1792
+ var allParams = positionalParams;
1793
+ if (lang_1.isPresent(currentUrlSegment)) {
1794
+ var paramsSegment = url instanceof url_parser_1.RootUrl ? url : currentUrlSegment;
1795
+ if (lang_1.isPresent(paramsSegment.params)) {
1796
+ allParams = collection_1.StringMapWrapper.merge(paramsSegment.params, positionalParams);
1797
+ urlParams = url_parser_1.convertUrlParamsToArray(paramsSegment.params);
1798
+ } else {
1799
+ allParams = positionalParams;
1800
+ }
1801
+ auxiliary = currentUrlSegment.auxiliary;
1802
+ }
1803
+ return new route_path_1.MatchedUrl(urlPath, urlParams, allParams, auxiliary, nextUrlSegment);
1804
+ };
1805
+ ParamRoutePath.prototype.generateUrl = function(params) {
1806
+ var paramTokens = new utils_1.TouchMap(params);
1807
+ var path = [];
1808
+ for (var i = 0; i < this._segments.length; i++) {
1809
+ var segment = this._segments[i];
1810
+ if (!(segment instanceof ContinuationPathSegment)) {
1811
+ path.push(segment.generate(paramTokens));
1812
+ }
1813
+ }
1814
+ var urlPath = path.join('/');
1815
+ var nonPositionalParams = paramTokens.getUnused();
1816
+ var urlParams = nonPositionalParams;
1817
+ return new route_path_1.GeneratedUrl(urlPath, urlParams);
1818
+ };
1819
+ ParamRoutePath.prototype.toString = function() {
1820
+ return this.routePath;
1821
+ };
1822
+ ParamRoutePath.prototype._parsePathString = function(routePath) {
1823
+ if (routePath.startsWith("/")) {
1824
+ routePath = routePath.substring(1);
1825
+ }
1826
+ var segmentStrings = routePath.split('/');
1827
+ this._segments = [];
1828
+ var limit = segmentStrings.length - 1;
1829
+ for (var i = 0; i <= limit; i++) {
1830
+ var segment = segmentStrings[i],
1831
+ match;
1832
+ if (lang_1.isPresent(match = lang_1.RegExpWrapper.firstMatch(DynamicPathSegment.paramMatcher, segment))) {
1833
+ this._segments.push(new DynamicPathSegment(match[1]));
1834
+ } else if (lang_1.isPresent(match = lang_1.RegExpWrapper.firstMatch(StarPathSegment.wildcardMatcher, segment))) {
1835
+ this._segments.push(new StarPathSegment(match[1]));
1836
+ } else if (segment == '...') {
1837
+ if (i < limit) {
1838
+ throw new exceptions_1.BaseException("Unexpected \"...\" before the end of the path for \"" + routePath + "\".");
1839
+ }
1840
+ this._segments.push(new ContinuationPathSegment());
1841
+ } else {
1842
+ this._segments.push(new StaticPathSegment(segment));
1843
+ }
1844
+ }
1845
+ };
1846
+ ParamRoutePath.prototype._calculateSpecificity = function() {
1847
+ var i,
1848
+ length = this._segments.length,
1849
+ specificity;
1850
+ if (length == 0) {
1851
+ specificity += '2';
1852
+ } else {
1853
+ specificity = '';
1854
+ for (i = 0; i < length; i++) {
1855
+ specificity += this._segments[i].specificity;
1856
+ }
1857
+ }
1858
+ return specificity;
1859
+ };
1860
+ ParamRoutePath.prototype._calculateHash = function() {
1861
+ var i,
1862
+ length = this._segments.length;
1863
+ var hashParts = [];
1864
+ for (i = 0; i < length; i++) {
1865
+ hashParts.push(this._segments[i].hash);
1866
+ }
1867
+ return hashParts.join('/');
1868
+ };
1869
+ ParamRoutePath.prototype._assertValidPath = function(path) {
1870
+ if (lang_1.StringWrapper.contains(path, '#')) {
1871
+ throw new exceptions_1.BaseException("Path \"" + path + "\" should not include \"#\". Use \"HashLocationStrategy\" instead.");
1872
+ }
1873
+ var illegalCharacter = lang_1.RegExpWrapper.firstMatch(ParamRoutePath.RESERVED_CHARS, path);
1874
+ if (lang_1.isPresent(illegalCharacter)) {
1875
+ throw new exceptions_1.BaseException("Path \"" + path + "\" contains \"" + illegalCharacter[0] + "\" which is not allowed in a route config.");
1876
+ }
1877
+ };
1878
+ ParamRoutePath.RESERVED_CHARS = lang_1.RegExpWrapper.create('//|\\(|\\)|;|\\?|=');
1879
+ return ParamRoutePath;
1880
+ }());
1881
+ exports.ParamRoutePath = ParamRoutePath;
1882
+ var REGEXP_PERCENT = /%/g;
1883
+ var REGEXP_SLASH = /\//g;
1884
+ var REGEXP_OPEN_PARENT = /\(/g;
1885
+ var REGEXP_CLOSE_PARENT = /\)/g;
1886
+ var REGEXP_SEMICOLON = /;/g;
1887
+ function encodeDynamicSegment(value) {
1888
+ if (lang_1.isBlank(value)) {
1889
+ return null;
1890
+ }
1891
+ value = lang_1.StringWrapper.replaceAll(value, REGEXP_PERCENT, '%25');
1892
+ value = lang_1.StringWrapper.replaceAll(value, REGEXP_SLASH, '%2F');
1893
+ value = lang_1.StringWrapper.replaceAll(value, REGEXP_OPEN_PARENT, '%28');
1894
+ value = lang_1.StringWrapper.replaceAll(value, REGEXP_CLOSE_PARENT, '%29');
1895
+ value = lang_1.StringWrapper.replaceAll(value, REGEXP_SEMICOLON, '%3B');
1896
+ return value;
1897
+ }
1898
+ var REGEXP_ENC_SEMICOLON = /%3B/ig;
1899
+ var REGEXP_ENC_CLOSE_PARENT = /%29/ig;
1900
+ var REGEXP_ENC_OPEN_PARENT = /%28/ig;
1901
+ var REGEXP_ENC_SLASH = /%2F/ig;
1902
+ var REGEXP_ENC_PERCENT = /%25/ig;
1903
+ function decodeDynamicSegment(value) {
1904
+ if (lang_1.isBlank(value)) {
1905
+ return null;
1906
+ }
1907
+ value = lang_1.StringWrapper.replaceAll(value, REGEXP_ENC_SEMICOLON, ';');
1908
+ value = lang_1.StringWrapper.replaceAll(value, REGEXP_ENC_CLOSE_PARENT, ')');
1909
+ value = lang_1.StringWrapper.replaceAll(value, REGEXP_ENC_OPEN_PARENT, '(');
1910
+ value = lang_1.StringWrapper.replaceAll(value, REGEXP_ENC_SLASH, '/');
1911
+ value = lang_1.StringWrapper.replaceAll(value, REGEXP_ENC_PERCENT, '%');
1912
+ return value;
1913
+ }
1914
+ global.define = __define;
1915
+ return module.exports;
1916
+ });
1917
+
1918
+ System.register("angular2/src/router/route_config/route_config_normalizer", ["angular2/src/router/route_config/route_config_decorator", "angular2/src/facade/lang", "angular2/src/facade/exceptions"], true, function(require, exports, module) {
1919
+ var global = System.global,
1920
+ __define = global.define;
1921
+ global.define = undefined;
1922
+ "use strict";
1923
+ var route_config_decorator_1 = require("angular2/src/router/route_config/route_config_decorator");
1924
+ var lang_1 = require("angular2/src/facade/lang");
1925
+ var exceptions_1 = require("angular2/src/facade/exceptions");
1926
+ function normalizeRouteConfig(config, registry) {
1927
+ if (config instanceof route_config_decorator_1.AsyncRoute) {
1928
+ var wrappedLoader = wrapLoaderToReconfigureRegistry(config.loader, registry);
1929
+ return new route_config_decorator_1.AsyncRoute({
1930
+ path: config.path,
1931
+ loader: wrappedLoader,
1932
+ name: config.name,
1933
+ data: config.data,
1934
+ useAsDefault: config.useAsDefault
1935
+ });
1936
+ }
1937
+ if (config instanceof route_config_decorator_1.Route || config instanceof route_config_decorator_1.Redirect || config instanceof route_config_decorator_1.AuxRoute) {
1938
+ return config;
1939
+ }
1940
+ if ((+!!config.component) + (+!!config.redirectTo) + (+!!config.loader) != 1) {
1941
+ throw new exceptions_1.BaseException("Route config should contain exactly one \"component\", \"loader\", or \"redirectTo\" property.");
1942
+ }
1943
+ if (config.as && config.name) {
1944
+ throw new exceptions_1.BaseException("Route config should contain exactly one \"as\" or \"name\" property.");
1945
+ }
1946
+ if (config.as) {
1947
+ config.name = config.as;
1948
+ }
1949
+ if (config.loader) {
1950
+ var wrappedLoader = wrapLoaderToReconfigureRegistry(config.loader, registry);
1951
+ return new route_config_decorator_1.AsyncRoute({
1952
+ path: config.path,
1953
+ loader: wrappedLoader,
1954
+ name: config.name,
1955
+ data: config.data,
1956
+ useAsDefault: config.useAsDefault
1957
+ });
1958
+ }
1959
+ if (config.aux) {
1960
+ return new route_config_decorator_1.AuxRoute({
1961
+ path: config.aux,
1962
+ component: config.component,
1963
+ name: config.name
1964
+ });
1965
+ }
1966
+ if (config.component) {
1967
+ if (typeof config.component == 'object') {
1968
+ var componentDefinitionObject = config.component;
1969
+ if (componentDefinitionObject.type == 'constructor') {
1970
+ return new route_config_decorator_1.Route({
1971
+ path: config.path,
1972
+ component: componentDefinitionObject.constructor,
1973
+ name: config.name,
1974
+ data: config.data,
1975
+ useAsDefault: config.useAsDefault
1976
+ });
1977
+ } else if (componentDefinitionObject.type == 'loader') {
1978
+ return new route_config_decorator_1.AsyncRoute({
1979
+ path: config.path,
1980
+ loader: componentDefinitionObject.loader,
1981
+ name: config.name,
1982
+ data: config.data,
1983
+ useAsDefault: config.useAsDefault
1984
+ });
1985
+ } else {
1986
+ throw new exceptions_1.BaseException("Invalid component type \"" + componentDefinitionObject.type + "\". Valid types are \"constructor\" and \"loader\".");
1987
+ }
1988
+ }
1989
+ return new route_config_decorator_1.Route(config);
1990
+ }
1991
+ if (config.redirectTo) {
1992
+ return new route_config_decorator_1.Redirect({
1993
+ path: config.path,
1994
+ redirectTo: config.redirectTo
1995
+ });
1996
+ }
1997
+ return config;
1998
+ }
1999
+ exports.normalizeRouteConfig = normalizeRouteConfig;
2000
+ function wrapLoaderToReconfigureRegistry(loader, registry) {
2001
+ return function() {
2002
+ return loader().then(function(componentType) {
2003
+ registry.configFromComponent(componentType);
2004
+ return componentType;
2005
+ });
2006
+ };
2007
+ }
2008
+ function assertComponentExists(component, path) {
2009
+ if (!lang_1.isType(component)) {
2010
+ throw new exceptions_1.BaseException("Component for route \"" + path + "\" is not defined, or is not a class.");
2011
+ }
2012
+ }
2013
+ exports.assertComponentExists = assertComponentExists;
2014
+ global.define = __define;
2015
+ return module.exports;
2016
+ });
2017
+
2018
+ System.register("angular2/src/router/location/location", ["angular2/src/router/location/location_strategy", "angular2/src/facade/async", "angular2/core"], true, function(require, exports, module) {
2019
+ var global = System.global,
2020
+ __define = global.define;
2021
+ global.define = undefined;
2022
+ "use strict";
2023
+ var __decorate = (this && this.__decorate) || function(decorators, target, key, desc) {
2024
+ var c = arguments.length,
2025
+ r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
2026
+ d;
2027
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
2028
+ r = Reflect.decorate(decorators, target, key, desc);
2029
+ else
2030
+ for (var i = decorators.length - 1; i >= 0; i--)
2031
+ if (d = decorators[i])
2032
+ r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
2033
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
2034
+ };
2035
+ var __metadata = (this && this.__metadata) || function(k, v) {
2036
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
2037
+ return Reflect.metadata(k, v);
2038
+ };
2039
+ var location_strategy_1 = require("angular2/src/router/location/location_strategy");
2040
+ var async_1 = require("angular2/src/facade/async");
2041
+ var core_1 = require("angular2/core");
2042
+ var Location = (function() {
2043
+ function Location(platformStrategy) {
2044
+ var _this = this;
2045
+ this.platformStrategy = platformStrategy;
2046
+ this._subject = new async_1.EventEmitter();
2047
+ var browserBaseHref = this.platformStrategy.getBaseHref();
2048
+ this._baseHref = stripTrailingSlash(stripIndexHtml(browserBaseHref));
2049
+ this.platformStrategy.onPopState(function(ev) {
2050
+ async_1.ObservableWrapper.callEmit(_this._subject, {
2051
+ 'url': _this.path(),
2052
+ 'pop': true,
2053
+ 'type': ev.type
2054
+ });
2055
+ });
2056
+ }
2057
+ Location.prototype.path = function() {
2058
+ return this.normalize(this.platformStrategy.path());
2059
+ };
2060
+ Location.prototype.normalize = function(url) {
2061
+ return stripTrailingSlash(_stripBaseHref(this._baseHref, stripIndexHtml(url)));
2062
+ };
2063
+ Location.prototype.prepareExternalUrl = function(url) {
2064
+ if (url.length > 0 && !url.startsWith('/')) {
2065
+ url = '/' + url;
2066
+ }
2067
+ return this.platformStrategy.prepareExternalUrl(url);
2068
+ };
2069
+ Location.prototype.go = function(path, query) {
2070
+ if (query === void 0) {
2071
+ query = '';
2072
+ }
2073
+ this.platformStrategy.pushState(null, '', path, query);
2074
+ };
2075
+ Location.prototype.replaceState = function(path, query) {
2076
+ if (query === void 0) {
2077
+ query = '';
2078
+ }
2079
+ this.platformStrategy.replaceState(null, '', path, query);
2080
+ };
2081
+ Location.prototype.forward = function() {
2082
+ this.platformStrategy.forward();
2083
+ };
2084
+ Location.prototype.back = function() {
2085
+ this.platformStrategy.back();
2086
+ };
2087
+ Location.prototype.subscribe = function(onNext, onThrow, onReturn) {
2088
+ if (onThrow === void 0) {
2089
+ onThrow = null;
2090
+ }
2091
+ if (onReturn === void 0) {
2092
+ onReturn = null;
2093
+ }
2094
+ return async_1.ObservableWrapper.subscribe(this._subject, onNext, onThrow, onReturn);
2095
+ };
2096
+ Location = __decorate([core_1.Injectable(), __metadata('design:paramtypes', [location_strategy_1.LocationStrategy])], Location);
2097
+ return Location;
2098
+ }());
2099
+ exports.Location = Location;
2100
+ function _stripBaseHref(baseHref, url) {
2101
+ if (baseHref.length > 0 && url.startsWith(baseHref)) {
2102
+ return url.substring(baseHref.length);
2103
+ }
2104
+ return url;
2105
+ }
2106
+ function stripIndexHtml(url) {
2107
+ if (/\/index.html$/g.test(url)) {
2108
+ return url.substring(0, url.length - 11);
2109
+ }
2110
+ return url;
2111
+ }
2112
+ function stripTrailingSlash(url) {
2113
+ if (/\/$/g.test(url)) {
2114
+ url = url.substring(0, url.length - 1);
2115
+ }
2116
+ return url;
2117
+ }
2118
+ global.define = __define;
2119
+ return module.exports;
2120
+ });
2121
+
2122
+ System.register("angular2/src/router/lifecycle/route_lifecycle_reflector", ["angular2/src/facade/lang", "angular2/src/router/lifecycle/lifecycle_annotations_impl", "angular2/src/core/reflection/reflection"], true, function(require, exports, module) {
2123
+ var global = System.global,
2124
+ __define = global.define;
2125
+ global.define = undefined;
2126
+ "use strict";
2127
+ var lang_1 = require("angular2/src/facade/lang");
2128
+ var lifecycle_annotations_impl_1 = require("angular2/src/router/lifecycle/lifecycle_annotations_impl");
2129
+ var reflection_1 = require("angular2/src/core/reflection/reflection");
2130
+ function hasLifecycleHook(e, type) {
2131
+ if (!(type instanceof lang_1.Type))
2132
+ return false;
2133
+ return e.name in type.prototype;
2134
+ }
2135
+ exports.hasLifecycleHook = hasLifecycleHook;
2136
+ function getCanActivateHook(type) {
2137
+ var annotations = reflection_1.reflector.annotations(type);
2138
+ for (var i = 0; i < annotations.length; i += 1) {
2139
+ var annotation = annotations[i];
2140
+ if (annotation instanceof lifecycle_annotations_impl_1.CanActivate) {
2141
+ return annotation.fn;
2142
+ }
2143
+ }
2144
+ return null;
2145
+ }
2146
+ exports.getCanActivateHook = getCanActivateHook;
2147
+ global.define = __define;
2148
+ return module.exports;
2149
+ });
2150
+
2151
+ System.register("angular2/src/router/directives/router_outlet", ["angular2/src/facade/async", "angular2/src/facade/collection", "angular2/src/facade/lang", "angular2/core", "angular2/src/router/router", "angular2/src/router/instruction", "angular2/src/router/lifecycle/lifecycle_annotations", "angular2/src/router/lifecycle/route_lifecycle_reflector"], true, function(require, exports, module) {
2152
+ var global = System.global,
2153
+ __define = global.define;
2154
+ global.define = undefined;
2155
+ "use strict";
2156
+ var __decorate = (this && this.__decorate) || function(decorators, target, key, desc) {
2157
+ var c = arguments.length,
2158
+ r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
2159
+ d;
2160
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
2161
+ r = Reflect.decorate(decorators, target, key, desc);
2162
+ else
2163
+ for (var i = decorators.length - 1; i >= 0; i--)
2164
+ if (d = decorators[i])
2165
+ r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
2166
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
2167
+ };
2168
+ var __metadata = (this && this.__metadata) || function(k, v) {
2169
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
2170
+ return Reflect.metadata(k, v);
2171
+ };
2172
+ var __param = (this && this.__param) || function(paramIndex, decorator) {
2173
+ return function(target, key) {
2174
+ decorator(target, key, paramIndex);
2175
+ };
2176
+ };
2177
+ var async_1 = require("angular2/src/facade/async");
2178
+ var collection_1 = require("angular2/src/facade/collection");
2179
+ var lang_1 = require("angular2/src/facade/lang");
2180
+ var core_1 = require("angular2/core");
2181
+ var routerMod = require("angular2/src/router/router");
2182
+ var instruction_1 = require("angular2/src/router/instruction");
2183
+ var hookMod = require("angular2/src/router/lifecycle/lifecycle_annotations");
2184
+ var route_lifecycle_reflector_1 = require("angular2/src/router/lifecycle/route_lifecycle_reflector");
2185
+ var _resolveToTrue = async_1.PromiseWrapper.resolve(true);
2186
+ var RouterOutlet = (function() {
2187
+ function RouterOutlet(_elementRef, _loader, _parentRouter, nameAttr) {
2188
+ this._elementRef = _elementRef;
2189
+ this._loader = _loader;
2190
+ this._parentRouter = _parentRouter;
2191
+ this.name = null;
2192
+ this._componentRef = null;
2193
+ this._currentInstruction = null;
2194
+ if (lang_1.isPresent(nameAttr)) {
2195
+ this.name = nameAttr;
2196
+ this._parentRouter.registerAuxOutlet(this);
2197
+ } else {
2198
+ this._parentRouter.registerPrimaryOutlet(this);
2199
+ }
2200
+ }
2201
+ RouterOutlet.prototype.activate = function(nextInstruction) {
2202
+ var _this = this;
2203
+ var previousInstruction = this._currentInstruction;
2204
+ this._currentInstruction = nextInstruction;
2205
+ var componentType = nextInstruction.componentType;
2206
+ var childRouter = this._parentRouter.childRouter(componentType);
2207
+ var providers = core_1.Injector.resolve([core_1.provide(instruction_1.RouteData, {useValue: nextInstruction.routeData}), core_1.provide(instruction_1.RouteParams, {useValue: new instruction_1.RouteParams(nextInstruction.params)}), core_1.provide(routerMod.Router, {useValue: childRouter})]);
2208
+ this._componentRef = this._loader.loadNextToLocation(componentType, this._elementRef, providers);
2209
+ return this._componentRef.then(function(componentRef) {
2210
+ if (route_lifecycle_reflector_1.hasLifecycleHook(hookMod.routerOnActivate, componentType)) {
2211
+ return _this._componentRef.then(function(ref) {
2212
+ return ref.instance.routerOnActivate(nextInstruction, previousInstruction);
2213
+ });
2214
+ } else {
2215
+ return componentRef;
2216
+ }
2217
+ });
2218
+ };
2219
+ RouterOutlet.prototype.reuse = function(nextInstruction) {
2220
+ var previousInstruction = this._currentInstruction;
2221
+ this._currentInstruction = nextInstruction;
2222
+ if (lang_1.isBlank(this._componentRef)) {
2223
+ return this.activate(nextInstruction);
2224
+ } else {
2225
+ return async_1.PromiseWrapper.resolve(route_lifecycle_reflector_1.hasLifecycleHook(hookMod.routerOnReuse, this._currentInstruction.componentType) ? this._componentRef.then(function(ref) {
2226
+ return ref.instance.routerOnReuse(nextInstruction, previousInstruction);
2227
+ }) : true);
2228
+ }
2229
+ };
2230
+ RouterOutlet.prototype.deactivate = function(nextInstruction) {
2231
+ var _this = this;
2232
+ var next = _resolveToTrue;
2233
+ if (lang_1.isPresent(this._componentRef) && lang_1.isPresent(this._currentInstruction) && route_lifecycle_reflector_1.hasLifecycleHook(hookMod.routerOnDeactivate, this._currentInstruction.componentType)) {
2234
+ next = this._componentRef.then(function(ref) {
2235
+ return ref.instance.routerOnDeactivate(nextInstruction, _this._currentInstruction);
2236
+ });
2237
+ }
2238
+ return next.then(function(_) {
2239
+ if (lang_1.isPresent(_this._componentRef)) {
2240
+ var onDispose = _this._componentRef.then(function(ref) {
2241
+ return ref.dispose();
2242
+ });
2243
+ _this._componentRef = null;
2244
+ return onDispose;
2245
+ }
2246
+ });
2247
+ };
2248
+ RouterOutlet.prototype.routerCanDeactivate = function(nextInstruction) {
2249
+ var _this = this;
2250
+ if (lang_1.isBlank(this._currentInstruction)) {
2251
+ return _resolveToTrue;
2252
+ }
2253
+ if (route_lifecycle_reflector_1.hasLifecycleHook(hookMod.routerCanDeactivate, this._currentInstruction.componentType)) {
2254
+ return this._componentRef.then(function(ref) {
2255
+ return ref.instance.routerCanDeactivate(nextInstruction, _this._currentInstruction);
2256
+ });
2257
+ } else {
2258
+ return _resolveToTrue;
2259
+ }
2260
+ };
2261
+ RouterOutlet.prototype.routerCanReuse = function(nextInstruction) {
2262
+ var _this = this;
2263
+ var result;
2264
+ if (lang_1.isBlank(this._currentInstruction) || this._currentInstruction.componentType != nextInstruction.componentType) {
2265
+ result = false;
2266
+ } else if (route_lifecycle_reflector_1.hasLifecycleHook(hookMod.routerCanReuse, this._currentInstruction.componentType)) {
2267
+ result = this._componentRef.then(function(ref) {
2268
+ return ref.instance.routerCanReuse(nextInstruction, _this._currentInstruction);
2269
+ });
2270
+ } else {
2271
+ result = nextInstruction == this._currentInstruction || (lang_1.isPresent(nextInstruction.params) && lang_1.isPresent(this._currentInstruction.params) && collection_1.StringMapWrapper.equals(nextInstruction.params, this._currentInstruction.params));
2272
+ }
2273
+ return async_1.PromiseWrapper.resolve(result);
2274
+ };
2275
+ RouterOutlet.prototype.ngOnDestroy = function() {
2276
+ this._parentRouter.unregisterPrimaryOutlet(this);
2277
+ };
2278
+ RouterOutlet = __decorate([core_1.Directive({selector: 'router-outlet'}), __param(3, core_1.Attribute('name')), __metadata('design:paramtypes', [core_1.ElementRef, core_1.DynamicComponentLoader, routerMod.Router, String])], RouterOutlet);
2279
+ return RouterOutlet;
2280
+ }());
2281
+ exports.RouterOutlet = RouterOutlet;
2282
+ global.define = __define;
2283
+ return module.exports;
2284
+ });
2285
+
2286
+ System.register("angular2/src/router/location/browser_platform_location", ["angular2/core", "angular2/src/router/location/platform_location", "angular2/src/platform/dom/dom_adapter"], true, function(require, exports, module) {
2287
+ var global = System.global,
2288
+ __define = global.define;
2289
+ global.define = undefined;
2290
+ "use strict";
2291
+ var __extends = (this && this.__extends) || function(d, b) {
2292
+ for (var p in b)
2293
+ if (b.hasOwnProperty(p))
2294
+ d[p] = b[p];
2295
+ function __() {
2296
+ this.constructor = d;
2297
+ }
2298
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
2299
+ };
2300
+ var __decorate = (this && this.__decorate) || function(decorators, target, key, desc) {
2301
+ var c = arguments.length,
2302
+ r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
2303
+ d;
2304
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
2305
+ r = Reflect.decorate(decorators, target, key, desc);
2306
+ else
2307
+ for (var i = decorators.length - 1; i >= 0; i--)
2308
+ if (d = decorators[i])
2309
+ r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
2310
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
2311
+ };
2312
+ var __metadata = (this && this.__metadata) || function(k, v) {
2313
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
2314
+ return Reflect.metadata(k, v);
2315
+ };
2316
+ var core_1 = require("angular2/core");
2317
+ var platform_location_1 = require("angular2/src/router/location/platform_location");
2318
+ var dom_adapter_1 = require("angular2/src/platform/dom/dom_adapter");
2319
+ var BrowserPlatformLocation = (function(_super) {
2320
+ __extends(BrowserPlatformLocation, _super);
2321
+ function BrowserPlatformLocation() {
2322
+ _super.call(this);
2323
+ this._init();
2324
+ }
2325
+ BrowserPlatformLocation.prototype._init = function() {
2326
+ this._location = dom_adapter_1.DOM.getLocation();
2327
+ this._history = dom_adapter_1.DOM.getHistory();
2328
+ };
2329
+ Object.defineProperty(BrowserPlatformLocation.prototype, "location", {
2330
+ get: function() {
2331
+ return this._location;
2332
+ },
2333
+ enumerable: true,
2334
+ configurable: true
2335
+ });
2336
+ BrowserPlatformLocation.prototype.getBaseHrefFromDOM = function() {
2337
+ return dom_adapter_1.DOM.getBaseHref();
2338
+ };
2339
+ BrowserPlatformLocation.prototype.onPopState = function(fn) {
2340
+ dom_adapter_1.DOM.getGlobalEventTarget('window').addEventListener('popstate', fn, false);
2341
+ };
2342
+ BrowserPlatformLocation.prototype.onHashChange = function(fn) {
2343
+ dom_adapter_1.DOM.getGlobalEventTarget('window').addEventListener('hashchange', fn, false);
2344
+ };
2345
+ Object.defineProperty(BrowserPlatformLocation.prototype, "pathname", {
2346
+ get: function() {
2347
+ return this._location.pathname;
2348
+ },
2349
+ set: function(newPath) {
2350
+ this._location.pathname = newPath;
2351
+ },
2352
+ enumerable: true,
2353
+ configurable: true
2354
+ });
2355
+ Object.defineProperty(BrowserPlatformLocation.prototype, "search", {
2356
+ get: function() {
2357
+ return this._location.search;
2358
+ },
2359
+ enumerable: true,
2360
+ configurable: true
2361
+ });
2362
+ Object.defineProperty(BrowserPlatformLocation.prototype, "hash", {
2363
+ get: function() {
2364
+ return this._location.hash;
2365
+ },
2366
+ enumerable: true,
2367
+ configurable: true
2368
+ });
2369
+ BrowserPlatformLocation.prototype.pushState = function(state, title, url) {
2370
+ this._history.pushState(state, title, url);
2371
+ };
2372
+ BrowserPlatformLocation.prototype.replaceState = function(state, title, url) {
2373
+ this._history.replaceState(state, title, url);
2374
+ };
2375
+ BrowserPlatformLocation.prototype.forward = function() {
2376
+ this._history.forward();
2377
+ };
2378
+ BrowserPlatformLocation.prototype.back = function() {
2379
+ this._history.back();
2380
+ };
2381
+ BrowserPlatformLocation = __decorate([core_1.Injectable(), __metadata('design:paramtypes', [])], BrowserPlatformLocation);
2382
+ return BrowserPlatformLocation;
2383
+ }(platform_location_1.PlatformLocation));
2384
+ exports.BrowserPlatformLocation = BrowserPlatformLocation;
2385
+ global.define = __define;
2386
+ return module.exports;
2387
+ });
2388
+
2389
+ System.register("angular2/src/router/rules/rule_set", ["angular2/src/facade/lang", "angular2/src/facade/exceptions", "angular2/src/facade/collection", "angular2/src/facade/async", "angular2/src/router/rules/rules", "angular2/src/router/route_config/route_config_impl", "angular2/src/router/rules/route_handlers/async_route_handler", "angular2/src/router/rules/route_handlers/sync_route_handler", "angular2/src/router/rules/route_paths/param_route_path", "angular2/src/router/rules/route_paths/regex_route_path"], true, function(require, exports, module) {
2390
+ var global = System.global,
2391
+ __define = global.define;
2392
+ global.define = undefined;
2393
+ "use strict";
2394
+ var lang_1 = require("angular2/src/facade/lang");
2395
+ var exceptions_1 = require("angular2/src/facade/exceptions");
2396
+ var collection_1 = require("angular2/src/facade/collection");
2397
+ var async_1 = require("angular2/src/facade/async");
2398
+ var rules_1 = require("angular2/src/router/rules/rules");
2399
+ var route_config_impl_1 = require("angular2/src/router/route_config/route_config_impl");
2400
+ var async_route_handler_1 = require("angular2/src/router/rules/route_handlers/async_route_handler");
2401
+ var sync_route_handler_1 = require("angular2/src/router/rules/route_handlers/sync_route_handler");
2402
+ var param_route_path_1 = require("angular2/src/router/rules/route_paths/param_route_path");
2403
+ var regex_route_path_1 = require("angular2/src/router/rules/route_paths/regex_route_path");
2404
+ var RuleSet = (function() {
2405
+ function RuleSet() {
2406
+ this.rulesByName = new collection_1.Map();
2407
+ this.auxRulesByName = new collection_1.Map();
2408
+ this.auxRulesByPath = new collection_1.Map();
2409
+ this.rules = [];
2410
+ this.defaultRule = null;
2411
+ }
2412
+ RuleSet.prototype.config = function(config) {
2413
+ var handler;
2414
+ if (lang_1.isPresent(config.name) && config.name[0].toUpperCase() != config.name[0]) {
2415
+ var suggestedName = config.name[0].toUpperCase() + config.name.substring(1);
2416
+ throw new exceptions_1.BaseException("Route \"" + config.path + "\" with name \"" + config.name + "\" does not begin with an uppercase letter. Route names should be CamelCase like \"" + suggestedName + "\".");
2417
+ }
2418
+ if (config instanceof route_config_impl_1.AuxRoute) {
2419
+ handler = new sync_route_handler_1.SyncRouteHandler(config.component, config.data);
2420
+ var routePath_1 = this._getRoutePath(config);
2421
+ var auxRule = new rules_1.RouteRule(routePath_1, handler, config.name);
2422
+ this.auxRulesByPath.set(routePath_1.toString(), auxRule);
2423
+ if (lang_1.isPresent(config.name)) {
2424
+ this.auxRulesByName.set(config.name, auxRule);
2425
+ }
2426
+ return auxRule.terminal;
2427
+ }
2428
+ var useAsDefault = false;
2429
+ if (config instanceof route_config_impl_1.Redirect) {
2430
+ var routePath_2 = this._getRoutePath(config);
2431
+ var redirector = new rules_1.RedirectRule(routePath_2, config.redirectTo);
2432
+ this._assertNoHashCollision(redirector.hash, config.path);
2433
+ this.rules.push(redirector);
2434
+ return true;
2435
+ }
2436
+ if (config instanceof route_config_impl_1.Route) {
2437
+ handler = new sync_route_handler_1.SyncRouteHandler(config.component, config.data);
2438
+ useAsDefault = lang_1.isPresent(config.useAsDefault) && config.useAsDefault;
2439
+ } else if (config instanceof route_config_impl_1.AsyncRoute) {
2440
+ handler = new async_route_handler_1.AsyncRouteHandler(config.loader, config.data);
2441
+ useAsDefault = lang_1.isPresent(config.useAsDefault) && config.useAsDefault;
2442
+ }
2443
+ var routePath = this._getRoutePath(config);
2444
+ var newRule = new rules_1.RouteRule(routePath, handler, config.name);
2445
+ this._assertNoHashCollision(newRule.hash, config.path);
2446
+ if (useAsDefault) {
2447
+ if (lang_1.isPresent(this.defaultRule)) {
2448
+ throw new exceptions_1.BaseException("Only one route can be default");
2449
+ }
2450
+ this.defaultRule = newRule;
2451
+ }
2452
+ this.rules.push(newRule);
2453
+ if (lang_1.isPresent(config.name)) {
2454
+ this.rulesByName.set(config.name, newRule);
2455
+ }
2456
+ return newRule.terminal;
2457
+ };
2458
+ RuleSet.prototype.recognize = function(urlParse) {
2459
+ var solutions = [];
2460
+ this.rules.forEach(function(routeRecognizer) {
2461
+ var pathMatch = routeRecognizer.recognize(urlParse);
2462
+ if (lang_1.isPresent(pathMatch)) {
2463
+ solutions.push(pathMatch);
2464
+ }
2465
+ });
2466
+ if (solutions.length == 0 && lang_1.isPresent(urlParse) && urlParse.auxiliary.length > 0) {
2467
+ return [async_1.PromiseWrapper.resolve(new rules_1.PathMatch(null, null, urlParse.auxiliary))];
2468
+ }
2469
+ return solutions;
2470
+ };
2471
+ RuleSet.prototype.recognizeAuxiliary = function(urlParse) {
2472
+ var routeRecognizer = this.auxRulesByPath.get(urlParse.path);
2473
+ if (lang_1.isPresent(routeRecognizer)) {
2474
+ return [routeRecognizer.recognize(urlParse)];
2475
+ }
2476
+ return [async_1.PromiseWrapper.resolve(null)];
2477
+ };
2478
+ RuleSet.prototype.hasRoute = function(name) {
2479
+ return this.rulesByName.has(name);
2480
+ };
2481
+ RuleSet.prototype.componentLoaded = function(name) {
2482
+ return this.hasRoute(name) && lang_1.isPresent(this.rulesByName.get(name).handler.componentType);
2483
+ };
2484
+ RuleSet.prototype.loadComponent = function(name) {
2485
+ return this.rulesByName.get(name).handler.resolveComponentType();
2486
+ };
2487
+ RuleSet.prototype.generate = function(name, params) {
2488
+ var rule = this.rulesByName.get(name);
2489
+ if (lang_1.isBlank(rule)) {
2490
+ return null;
2491
+ }
2492
+ return rule.generate(params);
2493
+ };
2494
+ RuleSet.prototype.generateAuxiliary = function(name, params) {
2495
+ var rule = this.auxRulesByName.get(name);
2496
+ if (lang_1.isBlank(rule)) {
2497
+ return null;
2498
+ }
2499
+ return rule.generate(params);
2500
+ };
2501
+ RuleSet.prototype._assertNoHashCollision = function(hash, path) {
2502
+ this.rules.forEach(function(rule) {
2503
+ if (hash == rule.hash) {
2504
+ throw new exceptions_1.BaseException("Configuration '" + path + "' conflicts with existing route '" + rule.path + "'");
2505
+ }
2506
+ });
2507
+ };
2508
+ RuleSet.prototype._getRoutePath = function(config) {
2509
+ if (lang_1.isPresent(config.regex)) {
2510
+ if (lang_1.isFunction(config.serializer)) {
2511
+ return new regex_route_path_1.RegexRoutePath(config.regex, config.serializer);
2512
+ } else {
2513
+ throw new exceptions_1.BaseException("Route provides a regex property, '" + config.regex + "', but no serializer property");
2514
+ }
2515
+ }
2516
+ if (lang_1.isPresent(config.path)) {
2517
+ var path = (config instanceof route_config_impl_1.AuxRoute && config.path.startsWith('/')) ? config.path.substring(1) : config.path;
2518
+ return new param_route_path_1.ParamRoutePath(path);
2519
+ }
2520
+ throw new exceptions_1.BaseException('Route must provide either a path or regex property');
2521
+ };
2522
+ return RuleSet;
2523
+ }());
2524
+ exports.RuleSet = RuleSet;
2525
+ global.define = __define;
2526
+ return module.exports;
2527
+ });
2528
+
2529
+ System.register("angular2/src/router/router_providers", ["angular2/src/router/router_providers_common", "angular2/core", "angular2/src/facade/lang", "angular2/src/router/location/browser_platform_location", "angular2/src/router/location/platform_location"], true, function(require, exports, module) {
2530
+ var global = System.global,
2531
+ __define = global.define;
2532
+ global.define = undefined;
2533
+ "use strict";
2534
+ var router_providers_common_1 = require("angular2/src/router/router_providers_common");
2535
+ var core_1 = require("angular2/core");
2536
+ var lang_1 = require("angular2/src/facade/lang");
2537
+ var browser_platform_location_1 = require("angular2/src/router/location/browser_platform_location");
2538
+ var platform_location_1 = require("angular2/src/router/location/platform_location");
2539
+ exports.ROUTER_PROVIDERS = lang_1.CONST_EXPR([router_providers_common_1.ROUTER_PROVIDERS_COMMON, lang_1.CONST_EXPR(new core_1.Provider(platform_location_1.PlatformLocation, {useClass: browser_platform_location_1.BrowserPlatformLocation}))]);
2540
+ exports.ROUTER_BINDINGS = exports.ROUTER_PROVIDERS;
2541
+ global.define = __define;
2542
+ return module.exports;
2543
+ });
2544
+
2545
+ System.register("angular2/src/router/route_registry", ["angular2/src/facade/collection", "angular2/src/facade/async", "angular2/src/facade/lang", "angular2/src/facade/exceptions", "angular2/src/core/reflection/reflection", "angular2/core", "angular2/src/router/route_config/route_config_impl", "angular2/src/router/rules/rules", "angular2/src/router/rules/rule_set", "angular2/src/router/instruction", "angular2/src/router/route_config/route_config_normalizer", "angular2/src/router/url_parser"], true, function(require, exports, module) {
2546
+ var global = System.global,
2547
+ __define = global.define;
2548
+ global.define = undefined;
2549
+ "use strict";
2550
+ var __decorate = (this && this.__decorate) || function(decorators, target, key, desc) {
2551
+ var c = arguments.length,
2552
+ r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
2553
+ d;
2554
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
2555
+ r = Reflect.decorate(decorators, target, key, desc);
2556
+ else
2557
+ for (var i = decorators.length - 1; i >= 0; i--)
2558
+ if (d = decorators[i])
2559
+ r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
2560
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
2561
+ };
2562
+ var __metadata = (this && this.__metadata) || function(k, v) {
2563
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
2564
+ return Reflect.metadata(k, v);
2565
+ };
2566
+ var __param = (this && this.__param) || function(paramIndex, decorator) {
2567
+ return function(target, key) {
2568
+ decorator(target, key, paramIndex);
2569
+ };
2570
+ };
2571
+ var collection_1 = require("angular2/src/facade/collection");
2572
+ var async_1 = require("angular2/src/facade/async");
2573
+ var lang_1 = require("angular2/src/facade/lang");
2574
+ var exceptions_1 = require("angular2/src/facade/exceptions");
2575
+ var reflection_1 = require("angular2/src/core/reflection/reflection");
2576
+ var core_1 = require("angular2/core");
2577
+ var route_config_impl_1 = require("angular2/src/router/route_config/route_config_impl");
2578
+ var rules_1 = require("angular2/src/router/rules/rules");
2579
+ var rule_set_1 = require("angular2/src/router/rules/rule_set");
2580
+ var instruction_1 = require("angular2/src/router/instruction");
2581
+ var route_config_normalizer_1 = require("angular2/src/router/route_config/route_config_normalizer");
2582
+ var url_parser_1 = require("angular2/src/router/url_parser");
2583
+ var _resolveToNull = async_1.PromiseWrapper.resolve(null);
2584
+ exports.ROUTER_PRIMARY_COMPONENT = lang_1.CONST_EXPR(new core_1.OpaqueToken('RouterPrimaryComponent'));
2585
+ var RouteRegistry = (function() {
2586
+ function RouteRegistry(_rootComponent) {
2587
+ this._rootComponent = _rootComponent;
2588
+ this._rules = new collection_1.Map();
2589
+ }
2590
+ RouteRegistry.prototype.config = function(parentComponent, config) {
2591
+ config = route_config_normalizer_1.normalizeRouteConfig(config, this);
2592
+ if (config instanceof route_config_impl_1.Route) {
2593
+ route_config_normalizer_1.assertComponentExists(config.component, config.path);
2594
+ } else if (config instanceof route_config_impl_1.AuxRoute) {
2595
+ route_config_normalizer_1.assertComponentExists(config.component, config.path);
2596
+ }
2597
+ var rules = this._rules.get(parentComponent);
2598
+ if (lang_1.isBlank(rules)) {
2599
+ rules = new rule_set_1.RuleSet();
2600
+ this._rules.set(parentComponent, rules);
2601
+ }
2602
+ var terminal = rules.config(config);
2603
+ if (config instanceof route_config_impl_1.Route) {
2604
+ if (terminal) {
2605
+ assertTerminalComponent(config.component, config.path);
2606
+ } else {
2607
+ this.configFromComponent(config.component);
2608
+ }
2609
+ }
2610
+ };
2611
+ RouteRegistry.prototype.configFromComponent = function(component) {
2612
+ var _this = this;
2613
+ if (!lang_1.isType(component)) {
2614
+ return ;
2615
+ }
2616
+ if (this._rules.has(component)) {
2617
+ return ;
2618
+ }
2619
+ var annotations = reflection_1.reflector.annotations(component);
2620
+ if (lang_1.isPresent(annotations)) {
2621
+ for (var i = 0; i < annotations.length; i++) {
2622
+ var annotation = annotations[i];
2623
+ if (annotation instanceof route_config_impl_1.RouteConfig) {
2624
+ var routeCfgs = annotation.configs;
2625
+ routeCfgs.forEach(function(config) {
2626
+ return _this.config(component, config);
2627
+ });
2628
+ }
2629
+ }
2630
+ }
2631
+ };
2632
+ RouteRegistry.prototype.recognize = function(url, ancestorInstructions) {
2633
+ var parsedUrl = url_parser_1.parser.parse(url);
2634
+ return this._recognize(parsedUrl, []);
2635
+ };
2636
+ RouteRegistry.prototype._recognize = function(parsedUrl, ancestorInstructions, _aux) {
2637
+ var _this = this;
2638
+ if (_aux === void 0) {
2639
+ _aux = false;
2640
+ }
2641
+ var parentInstruction = collection_1.ListWrapper.last(ancestorInstructions);
2642
+ var parentComponent = lang_1.isPresent(parentInstruction) ? parentInstruction.component.componentType : this._rootComponent;
2643
+ var rules = this._rules.get(parentComponent);
2644
+ if (lang_1.isBlank(rules)) {
2645
+ return _resolveToNull;
2646
+ }
2647
+ var possibleMatches = _aux ? rules.recognizeAuxiliary(parsedUrl) : rules.recognize(parsedUrl);
2648
+ var matchPromises = possibleMatches.map(function(candidate) {
2649
+ return candidate.then(function(candidate) {
2650
+ if (candidate instanceof rules_1.PathMatch) {
2651
+ var auxParentInstructions = ancestorInstructions.length > 0 ? [collection_1.ListWrapper.last(ancestorInstructions)] : [];
2652
+ var auxInstructions = _this._auxRoutesToUnresolved(candidate.remainingAux, auxParentInstructions);
2653
+ var instruction = new instruction_1.ResolvedInstruction(candidate.instruction, null, auxInstructions);
2654
+ if (lang_1.isBlank(candidate.instruction) || candidate.instruction.terminal) {
2655
+ return instruction;
2656
+ }
2657
+ var newAncestorInstructions = ancestorInstructions.concat([instruction]);
2658
+ return _this._recognize(candidate.remaining, newAncestorInstructions).then(function(childInstruction) {
2659
+ if (lang_1.isBlank(childInstruction)) {
2660
+ return null;
2661
+ }
2662
+ if (childInstruction instanceof instruction_1.RedirectInstruction) {
2663
+ return childInstruction;
2664
+ }
2665
+ instruction.child = childInstruction;
2666
+ return instruction;
2667
+ });
2668
+ }
2669
+ if (candidate instanceof rules_1.RedirectMatch) {
2670
+ var instruction = _this.generate(candidate.redirectTo, ancestorInstructions.concat([null]));
2671
+ return new instruction_1.RedirectInstruction(instruction.component, instruction.child, instruction.auxInstruction, candidate.specificity);
2672
+ }
2673
+ });
2674
+ });
2675
+ if ((lang_1.isBlank(parsedUrl) || parsedUrl.path == '') && possibleMatches.length == 0) {
2676
+ return async_1.PromiseWrapper.resolve(this.generateDefault(parentComponent));
2677
+ }
2678
+ return async_1.PromiseWrapper.all(matchPromises).then(mostSpecific);
2679
+ };
2680
+ RouteRegistry.prototype._auxRoutesToUnresolved = function(auxRoutes, parentInstructions) {
2681
+ var _this = this;
2682
+ var unresolvedAuxInstructions = {};
2683
+ auxRoutes.forEach(function(auxUrl) {
2684
+ unresolvedAuxInstructions[auxUrl.path] = new instruction_1.UnresolvedInstruction(function() {
2685
+ return _this._recognize(auxUrl, parentInstructions, true);
2686
+ });
2687
+ });
2688
+ return unresolvedAuxInstructions;
2689
+ };
2690
+ RouteRegistry.prototype.generate = function(linkParams, ancestorInstructions, _aux) {
2691
+ if (_aux === void 0) {
2692
+ _aux = false;
2693
+ }
2694
+ var params = splitAndFlattenLinkParams(linkParams);
2695
+ var prevInstruction;
2696
+ if (collection_1.ListWrapper.first(params) == '') {
2697
+ params.shift();
2698
+ prevInstruction = collection_1.ListWrapper.first(ancestorInstructions);
2699
+ ancestorInstructions = [];
2700
+ } else {
2701
+ prevInstruction = ancestorInstructions.length > 0 ? ancestorInstructions.pop() : null;
2702
+ if (collection_1.ListWrapper.first(params) == '.') {
2703
+ params.shift();
2704
+ } else if (collection_1.ListWrapper.first(params) == '..') {
2705
+ while (collection_1.ListWrapper.first(params) == '..') {
2706
+ if (ancestorInstructions.length <= 0) {
2707
+ throw new exceptions_1.BaseException("Link \"" + collection_1.ListWrapper.toJSON(linkParams) + "\" has too many \"../\" segments.");
2708
+ }
2709
+ prevInstruction = ancestorInstructions.pop();
2710
+ params = collection_1.ListWrapper.slice(params, 1);
2711
+ }
2712
+ } else {
2713
+ var routeName = collection_1.ListWrapper.first(params);
2714
+ var parentComponentType = this._rootComponent;
2715
+ var grandparentComponentType = null;
2716
+ if (ancestorInstructions.length > 1) {
2717
+ var parentComponentInstruction = ancestorInstructions[ancestorInstructions.length - 1];
2718
+ var grandComponentInstruction = ancestorInstructions[ancestorInstructions.length - 2];
2719
+ parentComponentType = parentComponentInstruction.component.componentType;
2720
+ grandparentComponentType = grandComponentInstruction.component.componentType;
2721
+ } else if (ancestorInstructions.length == 1) {
2722
+ parentComponentType = ancestorInstructions[0].component.componentType;
2723
+ grandparentComponentType = this._rootComponent;
2724
+ }
2725
+ var childRouteExists = this.hasRoute(routeName, parentComponentType);
2726
+ var parentRouteExists = lang_1.isPresent(grandparentComponentType) && this.hasRoute(routeName, grandparentComponentType);
2727
+ if (parentRouteExists && childRouteExists) {
2728
+ var msg = "Link \"" + collection_1.ListWrapper.toJSON(linkParams) + "\" is ambiguous, use \"./\" or \"../\" to disambiguate.";
2729
+ throw new exceptions_1.BaseException(msg);
2730
+ }
2731
+ if (parentRouteExists) {
2732
+ prevInstruction = ancestorInstructions.pop();
2733
+ }
2734
+ }
2735
+ }
2736
+ if (params[params.length - 1] == '') {
2737
+ params.pop();
2738
+ }
2739
+ if (params.length > 0 && params[0] == '') {
2740
+ params.shift();
2741
+ }
2742
+ if (params.length < 1) {
2743
+ var msg = "Link \"" + collection_1.ListWrapper.toJSON(linkParams) + "\" must include a route name.";
2744
+ throw new exceptions_1.BaseException(msg);
2745
+ }
2746
+ var generatedInstruction = this._generate(params, ancestorInstructions, prevInstruction, _aux, linkParams);
2747
+ for (var i = ancestorInstructions.length - 1; i >= 0; i--) {
2748
+ var ancestorInstruction = ancestorInstructions[i];
2749
+ if (lang_1.isBlank(ancestorInstruction)) {
2750
+ break;
2751
+ }
2752
+ generatedInstruction = ancestorInstruction.replaceChild(generatedInstruction);
2753
+ }
2754
+ return generatedInstruction;
2755
+ };
2756
+ RouteRegistry.prototype._generate = function(linkParams, ancestorInstructions, prevInstruction, _aux, _originalLink) {
2757
+ var _this = this;
2758
+ if (_aux === void 0) {
2759
+ _aux = false;
2760
+ }
2761
+ var parentComponentType = this._rootComponent;
2762
+ var componentInstruction = null;
2763
+ var auxInstructions = {};
2764
+ var parentInstruction = collection_1.ListWrapper.last(ancestorInstructions);
2765
+ if (lang_1.isPresent(parentInstruction) && lang_1.isPresent(parentInstruction.component)) {
2766
+ parentComponentType = parentInstruction.component.componentType;
2767
+ }
2768
+ if (linkParams.length == 0) {
2769
+ var defaultInstruction = this.generateDefault(parentComponentType);
2770
+ if (lang_1.isBlank(defaultInstruction)) {
2771
+ throw new exceptions_1.BaseException("Link \"" + collection_1.ListWrapper.toJSON(_originalLink) + "\" does not resolve to a terminal instruction.");
2772
+ }
2773
+ return defaultInstruction;
2774
+ }
2775
+ if (lang_1.isPresent(prevInstruction) && !_aux) {
2776
+ auxInstructions = collection_1.StringMapWrapper.merge(prevInstruction.auxInstruction, auxInstructions);
2777
+ componentInstruction = prevInstruction.component;
2778
+ }
2779
+ var rules = this._rules.get(parentComponentType);
2780
+ if (lang_1.isBlank(rules)) {
2781
+ throw new exceptions_1.BaseException("Component \"" + lang_1.getTypeNameForDebugging(parentComponentType) + "\" has no route config.");
2782
+ }
2783
+ var linkParamIndex = 0;
2784
+ var routeParams = {};
2785
+ if (linkParamIndex < linkParams.length && lang_1.isString(linkParams[linkParamIndex])) {
2786
+ var routeName = linkParams[linkParamIndex];
2787
+ if (routeName == '' || routeName == '.' || routeName == '..') {
2788
+ throw new exceptions_1.BaseException("\"" + routeName + "/\" is only allowed at the beginning of a link DSL.");
2789
+ }
2790
+ linkParamIndex += 1;
2791
+ if (linkParamIndex < linkParams.length) {
2792
+ var linkParam = linkParams[linkParamIndex];
2793
+ if (lang_1.isStringMap(linkParam) && !lang_1.isArray(linkParam)) {
2794
+ routeParams = linkParam;
2795
+ linkParamIndex += 1;
2796
+ }
2797
+ }
2798
+ var routeRecognizer = (_aux ? rules.auxRulesByName : rules.rulesByName).get(routeName);
2799
+ if (lang_1.isBlank(routeRecognizer)) {
2800
+ throw new exceptions_1.BaseException("Component \"" + lang_1.getTypeNameForDebugging(parentComponentType) + "\" has no route named \"" + routeName + "\".");
2801
+ }
2802
+ if (lang_1.isBlank(routeRecognizer.handler.componentType)) {
2803
+ var generatedUrl = routeRecognizer.generateComponentPathValues(routeParams);
2804
+ return new instruction_1.UnresolvedInstruction(function() {
2805
+ return routeRecognizer.handler.resolveComponentType().then(function(_) {
2806
+ return _this._generate(linkParams, ancestorInstructions, prevInstruction, _aux, _originalLink);
2807
+ });
2808
+ }, generatedUrl.urlPath, url_parser_1.convertUrlParamsToArray(generatedUrl.urlParams));
2809
+ }
2810
+ componentInstruction = _aux ? rules.generateAuxiliary(routeName, routeParams) : rules.generate(routeName, routeParams);
2811
+ }
2812
+ while (linkParamIndex < linkParams.length && lang_1.isArray(linkParams[linkParamIndex])) {
2813
+ var auxParentInstruction = [parentInstruction];
2814
+ var auxInstruction = this._generate(linkParams[linkParamIndex], auxParentInstruction, null, true, _originalLink);
2815
+ auxInstructions[auxInstruction.component.urlPath] = auxInstruction;
2816
+ linkParamIndex += 1;
2817
+ }
2818
+ var instruction = new instruction_1.ResolvedInstruction(componentInstruction, null, auxInstructions);
2819
+ if (lang_1.isPresent(componentInstruction) && lang_1.isPresent(componentInstruction.componentType)) {
2820
+ var childInstruction = null;
2821
+ if (componentInstruction.terminal) {
2822
+ if (linkParamIndex >= linkParams.length) {}
2823
+ } else {
2824
+ var childAncestorComponents = ancestorInstructions.concat([instruction]);
2825
+ var remainingLinkParams = linkParams.slice(linkParamIndex);
2826
+ childInstruction = this._generate(remainingLinkParams, childAncestorComponents, null, false, _originalLink);
2827
+ }
2828
+ instruction.child = childInstruction;
2829
+ }
2830
+ return instruction;
2831
+ };
2832
+ RouteRegistry.prototype.hasRoute = function(name, parentComponent) {
2833
+ var rules = this._rules.get(parentComponent);
2834
+ if (lang_1.isBlank(rules)) {
2835
+ return false;
2836
+ }
2837
+ return rules.hasRoute(name);
2838
+ };
2839
+ RouteRegistry.prototype.generateDefault = function(componentCursor) {
2840
+ var _this = this;
2841
+ if (lang_1.isBlank(componentCursor)) {
2842
+ return null;
2843
+ }
2844
+ var rules = this._rules.get(componentCursor);
2845
+ if (lang_1.isBlank(rules) || lang_1.isBlank(rules.defaultRule)) {
2846
+ return null;
2847
+ }
2848
+ var defaultChild = null;
2849
+ if (lang_1.isPresent(rules.defaultRule.handler.componentType)) {
2850
+ var componentInstruction = rules.defaultRule.generate({});
2851
+ if (!rules.defaultRule.terminal) {
2852
+ defaultChild = this.generateDefault(rules.defaultRule.handler.componentType);
2853
+ }
2854
+ return new instruction_1.DefaultInstruction(componentInstruction, defaultChild);
2855
+ }
2856
+ return new instruction_1.UnresolvedInstruction(function() {
2857
+ return rules.defaultRule.handler.resolveComponentType().then(function(_) {
2858
+ return _this.generateDefault(componentCursor);
2859
+ });
2860
+ });
2861
+ };
2862
+ RouteRegistry = __decorate([core_1.Injectable(), __param(0, core_1.Inject(exports.ROUTER_PRIMARY_COMPONENT)), __metadata('design:paramtypes', [lang_1.Type])], RouteRegistry);
2863
+ return RouteRegistry;
2864
+ }());
2865
+ exports.RouteRegistry = RouteRegistry;
2866
+ function splitAndFlattenLinkParams(linkParams) {
2867
+ var accumulation = [];
2868
+ linkParams.forEach(function(item) {
2869
+ if (lang_1.isString(item)) {
2870
+ var strItem = item;
2871
+ accumulation = accumulation.concat(strItem.split('/'));
2872
+ } else {
2873
+ accumulation.push(item);
2874
+ }
2875
+ });
2876
+ return accumulation;
2877
+ }
2878
+ function mostSpecific(instructions) {
2879
+ instructions = instructions.filter(function(instruction) {
2880
+ return lang_1.isPresent(instruction);
2881
+ });
2882
+ if (instructions.length == 0) {
2883
+ return null;
2884
+ }
2885
+ if (instructions.length == 1) {
2886
+ return instructions[0];
2887
+ }
2888
+ var first = instructions[0];
2889
+ var rest = instructions.slice(1);
2890
+ return rest.reduce(function(instruction, contender) {
2891
+ if (compareSpecificityStrings(contender.specificity, instruction.specificity) == -1) {
2892
+ return contender;
2893
+ }
2894
+ return instruction;
2895
+ }, first);
2896
+ }
2897
+ function compareSpecificityStrings(a, b) {
2898
+ var l = lang_1.Math.min(a.length, b.length);
2899
+ for (var i = 0; i < l; i += 1) {
2900
+ var ai = lang_1.StringWrapper.charCodeAt(a, i);
2901
+ var bi = lang_1.StringWrapper.charCodeAt(b, i);
2902
+ var difference = bi - ai;
2903
+ if (difference != 0) {
2904
+ return difference;
2905
+ }
2906
+ }
2907
+ return a.length - b.length;
2908
+ }
2909
+ function assertTerminalComponent(component, path) {
2910
+ if (!lang_1.isType(component)) {
2911
+ return ;
2912
+ }
2913
+ var annotations = reflection_1.reflector.annotations(component);
2914
+ if (lang_1.isPresent(annotations)) {
2915
+ for (var i = 0; i < annotations.length; i++) {
2916
+ var annotation = annotations[i];
2917
+ if (annotation instanceof route_config_impl_1.RouteConfig) {
2918
+ throw new exceptions_1.BaseException("Child routes are not allowed for \"" + path + "\". Use \"...\" on the parent's route path.");
2919
+ }
2920
+ }
2921
+ }
2922
+ }
2923
+ global.define = __define;
2924
+ return module.exports;
2925
+ });
2926
+
2927
+ System.register("angular2/src/router/router", ["angular2/src/facade/async", "angular2/src/facade/collection", "angular2/src/facade/lang", "angular2/src/facade/exceptions", "angular2/core", "angular2/src/router/route_registry", "angular2/src/router/location/location", "angular2/src/router/lifecycle/route_lifecycle_reflector"], true, function(require, exports, module) {
2928
+ var global = System.global,
2929
+ __define = global.define;
2930
+ global.define = undefined;
2931
+ "use strict";
2932
+ var __extends = (this && this.__extends) || function(d, b) {
2933
+ for (var p in b)
2934
+ if (b.hasOwnProperty(p))
2935
+ d[p] = b[p];
2936
+ function __() {
2937
+ this.constructor = d;
2938
+ }
2939
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
2940
+ };
2941
+ var __decorate = (this && this.__decorate) || function(decorators, target, key, desc) {
2942
+ var c = arguments.length,
2943
+ r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
2944
+ d;
2945
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
2946
+ r = Reflect.decorate(decorators, target, key, desc);
2947
+ else
2948
+ for (var i = decorators.length - 1; i >= 0; i--)
2949
+ if (d = decorators[i])
2950
+ r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
2951
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
2952
+ };
2953
+ var __metadata = (this && this.__metadata) || function(k, v) {
2954
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
2955
+ return Reflect.metadata(k, v);
2956
+ };
2957
+ var __param = (this && this.__param) || function(paramIndex, decorator) {
2958
+ return function(target, key) {
2959
+ decorator(target, key, paramIndex);
2960
+ };
2961
+ };
2962
+ var async_1 = require("angular2/src/facade/async");
2963
+ var collection_1 = require("angular2/src/facade/collection");
2964
+ var lang_1 = require("angular2/src/facade/lang");
2965
+ var exceptions_1 = require("angular2/src/facade/exceptions");
2966
+ var core_1 = require("angular2/core");
2967
+ var route_registry_1 = require("angular2/src/router/route_registry");
2968
+ var location_1 = require("angular2/src/router/location/location");
2969
+ var route_lifecycle_reflector_1 = require("angular2/src/router/lifecycle/route_lifecycle_reflector");
2970
+ var _resolveToTrue = async_1.PromiseWrapper.resolve(true);
2971
+ var _resolveToFalse = async_1.PromiseWrapper.resolve(false);
2972
+ var Router = (function() {
2973
+ function Router(registry, parent, hostComponent, root) {
2974
+ this.registry = registry;
2975
+ this.parent = parent;
2976
+ this.hostComponent = hostComponent;
2977
+ this.root = root;
2978
+ this.navigating = false;
2979
+ this.currentInstruction = null;
2980
+ this._currentNavigation = _resolveToTrue;
2981
+ this._outlet = null;
2982
+ this._auxRouters = new collection_1.Map();
2983
+ this._subject = new async_1.EventEmitter();
2984
+ }
2985
+ Router.prototype.childRouter = function(hostComponent) {
2986
+ return this._childRouter = new ChildRouter(this, hostComponent);
2987
+ };
2988
+ Router.prototype.auxRouter = function(hostComponent) {
2989
+ return new ChildRouter(this, hostComponent);
2990
+ };
2991
+ Router.prototype.registerPrimaryOutlet = function(outlet) {
2992
+ if (lang_1.isPresent(outlet.name)) {
2993
+ throw new exceptions_1.BaseException("registerPrimaryOutlet expects to be called with an unnamed outlet.");
2994
+ }
2995
+ if (lang_1.isPresent(this._outlet)) {
2996
+ throw new exceptions_1.BaseException("Primary outlet is already registered.");
2997
+ }
2998
+ this._outlet = outlet;
2999
+ if (lang_1.isPresent(this.currentInstruction)) {
3000
+ return this.commit(this.currentInstruction, false);
3001
+ }
3002
+ return _resolveToTrue;
3003
+ };
3004
+ Router.prototype.unregisterPrimaryOutlet = function(outlet) {
3005
+ if (lang_1.isPresent(outlet.name)) {
3006
+ throw new exceptions_1.BaseException("registerPrimaryOutlet expects to be called with an unnamed outlet.");
3007
+ }
3008
+ this._outlet = null;
3009
+ };
3010
+ Router.prototype.registerAuxOutlet = function(outlet) {
3011
+ var outletName = outlet.name;
3012
+ if (lang_1.isBlank(outletName)) {
3013
+ throw new exceptions_1.BaseException("registerAuxOutlet expects to be called with an outlet with a name.");
3014
+ }
3015
+ var router = this.auxRouter(this.hostComponent);
3016
+ this._auxRouters.set(outletName, router);
3017
+ router._outlet = outlet;
3018
+ var auxInstruction;
3019
+ if (lang_1.isPresent(this.currentInstruction) && lang_1.isPresent(auxInstruction = this.currentInstruction.auxInstruction[outletName])) {
3020
+ return router.commit(auxInstruction);
3021
+ }
3022
+ return _resolveToTrue;
3023
+ };
3024
+ Router.prototype.isRouteActive = function(instruction) {
3025
+ var _this = this;
3026
+ var router = this;
3027
+ if (lang_1.isBlank(this.currentInstruction)) {
3028
+ return false;
3029
+ }
3030
+ while (lang_1.isPresent(router.parent) && lang_1.isPresent(instruction.child)) {
3031
+ router = router.parent;
3032
+ instruction = instruction.child;
3033
+ }
3034
+ if (lang_1.isBlank(instruction.component) || lang_1.isBlank(this.currentInstruction.component) || this.currentInstruction.component.routeName != instruction.component.routeName) {
3035
+ return false;
3036
+ }
3037
+ var paramEquals = true;
3038
+ if (lang_1.isPresent(this.currentInstruction.component.params)) {
3039
+ collection_1.StringMapWrapper.forEach(instruction.component.params, function(value, key) {
3040
+ if (_this.currentInstruction.component.params[key] !== value) {
3041
+ paramEquals = false;
3042
+ }
3043
+ });
3044
+ }
3045
+ return paramEquals;
3046
+ };
3047
+ Router.prototype.config = function(definitions) {
3048
+ var _this = this;
3049
+ definitions.forEach(function(routeDefinition) {
3050
+ _this.registry.config(_this.hostComponent, routeDefinition);
3051
+ });
3052
+ return this.renavigate();
3053
+ };
3054
+ Router.prototype.navigate = function(linkParams) {
3055
+ var instruction = this.generate(linkParams);
3056
+ return this.navigateByInstruction(instruction, false);
3057
+ };
3058
+ Router.prototype.navigateByUrl = function(url, _skipLocationChange) {
3059
+ var _this = this;
3060
+ if (_skipLocationChange === void 0) {
3061
+ _skipLocationChange = false;
3062
+ }
3063
+ return this._currentNavigation = this._currentNavigation.then(function(_) {
3064
+ _this.lastNavigationAttempt = url;
3065
+ _this._startNavigating();
3066
+ return _this._afterPromiseFinishNavigating(_this.recognize(url).then(function(instruction) {
3067
+ if (lang_1.isBlank(instruction)) {
3068
+ return false;
3069
+ }
3070
+ return _this._navigate(instruction, _skipLocationChange);
3071
+ }));
3072
+ });
3073
+ };
3074
+ Router.prototype.navigateByInstruction = function(instruction, _skipLocationChange) {
3075
+ var _this = this;
3076
+ if (_skipLocationChange === void 0) {
3077
+ _skipLocationChange = false;
3078
+ }
3079
+ if (lang_1.isBlank(instruction)) {
3080
+ return _resolveToFalse;
3081
+ }
3082
+ return this._currentNavigation = this._currentNavigation.then(function(_) {
3083
+ _this._startNavigating();
3084
+ return _this._afterPromiseFinishNavigating(_this._navigate(instruction, _skipLocationChange));
3085
+ });
3086
+ };
3087
+ Router.prototype._settleInstruction = function(instruction) {
3088
+ var _this = this;
3089
+ return instruction.resolveComponent().then(function(_) {
3090
+ var unsettledInstructions = [];
3091
+ if (lang_1.isPresent(instruction.component)) {
3092
+ instruction.component.reuse = false;
3093
+ }
3094
+ if (lang_1.isPresent(instruction.child)) {
3095
+ unsettledInstructions.push(_this._settleInstruction(instruction.child));
3096
+ }
3097
+ collection_1.StringMapWrapper.forEach(instruction.auxInstruction, function(instruction, _) {
3098
+ unsettledInstructions.push(_this._settleInstruction(instruction));
3099
+ });
3100
+ return async_1.PromiseWrapper.all(unsettledInstructions);
3101
+ });
3102
+ };
3103
+ Router.prototype._navigate = function(instruction, _skipLocationChange) {
3104
+ var _this = this;
3105
+ return this._settleInstruction(instruction).then(function(_) {
3106
+ return _this._routerCanReuse(instruction);
3107
+ }).then(function(_) {
3108
+ return _this._canActivate(instruction);
3109
+ }).then(function(result) {
3110
+ if (!result) {
3111
+ return false;
3112
+ }
3113
+ return _this._routerCanDeactivate(instruction).then(function(result) {
3114
+ if (result) {
3115
+ return _this.commit(instruction, _skipLocationChange).then(function(_) {
3116
+ _this._emitNavigationFinish(instruction.toRootUrl());
3117
+ return true;
3118
+ });
3119
+ }
3120
+ });
3121
+ });
3122
+ };
3123
+ Router.prototype._emitNavigationFinish = function(url) {
3124
+ async_1.ObservableWrapper.callEmit(this._subject, url);
3125
+ };
3126
+ Router.prototype._emitNavigationFail = function(url) {
3127
+ async_1.ObservableWrapper.callError(this._subject, url);
3128
+ };
3129
+ Router.prototype._afterPromiseFinishNavigating = function(promise) {
3130
+ var _this = this;
3131
+ return async_1.PromiseWrapper.catchError(promise.then(function(_) {
3132
+ return _this._finishNavigating();
3133
+ }), function(err) {
3134
+ _this._finishNavigating();
3135
+ throw err;
3136
+ });
3137
+ };
3138
+ Router.prototype._routerCanReuse = function(instruction) {
3139
+ var _this = this;
3140
+ if (lang_1.isBlank(this._outlet)) {
3141
+ return _resolveToFalse;
3142
+ }
3143
+ if (lang_1.isBlank(instruction.component)) {
3144
+ return _resolveToTrue;
3145
+ }
3146
+ return this._outlet.routerCanReuse(instruction.component).then(function(result) {
3147
+ instruction.component.reuse = result;
3148
+ if (result && lang_1.isPresent(_this._childRouter) && lang_1.isPresent(instruction.child)) {
3149
+ return _this._childRouter._routerCanReuse(instruction.child);
3150
+ }
3151
+ });
3152
+ };
3153
+ Router.prototype._canActivate = function(nextInstruction) {
3154
+ return canActivateOne(nextInstruction, this.currentInstruction);
3155
+ };
3156
+ Router.prototype._routerCanDeactivate = function(instruction) {
3157
+ var _this = this;
3158
+ if (lang_1.isBlank(this._outlet)) {
3159
+ return _resolveToTrue;
3160
+ }
3161
+ var next;
3162
+ var childInstruction = null;
3163
+ var reuse = false;
3164
+ var componentInstruction = null;
3165
+ if (lang_1.isPresent(instruction)) {
3166
+ childInstruction = instruction.child;
3167
+ componentInstruction = instruction.component;
3168
+ reuse = lang_1.isBlank(instruction.component) || instruction.component.reuse;
3169
+ }
3170
+ if (reuse) {
3171
+ next = _resolveToTrue;
3172
+ } else {
3173
+ next = this._outlet.routerCanDeactivate(componentInstruction);
3174
+ }
3175
+ return next.then(function(result) {
3176
+ if (result == false) {
3177
+ return false;
3178
+ }
3179
+ if (lang_1.isPresent(_this._childRouter)) {
3180
+ return _this._childRouter._routerCanDeactivate(childInstruction);
3181
+ }
3182
+ return true;
3183
+ });
3184
+ };
3185
+ Router.prototype.commit = function(instruction, _skipLocationChange) {
3186
+ var _this = this;
3187
+ if (_skipLocationChange === void 0) {
3188
+ _skipLocationChange = false;
3189
+ }
3190
+ this.currentInstruction = instruction;
3191
+ var next = _resolveToTrue;
3192
+ if (lang_1.isPresent(this._outlet) && lang_1.isPresent(instruction.component)) {
3193
+ var componentInstruction = instruction.component;
3194
+ if (componentInstruction.reuse) {
3195
+ next = this._outlet.reuse(componentInstruction);
3196
+ } else {
3197
+ next = this.deactivate(instruction).then(function(_) {
3198
+ return _this._outlet.activate(componentInstruction);
3199
+ });
3200
+ }
3201
+ if (lang_1.isPresent(instruction.child)) {
3202
+ next = next.then(function(_) {
3203
+ if (lang_1.isPresent(_this._childRouter)) {
3204
+ return _this._childRouter.commit(instruction.child);
3205
+ }
3206
+ });
3207
+ }
3208
+ }
3209
+ var promises = [];
3210
+ this._auxRouters.forEach(function(router, name) {
3211
+ if (lang_1.isPresent(instruction.auxInstruction[name])) {
3212
+ promises.push(router.commit(instruction.auxInstruction[name]));
3213
+ }
3214
+ });
3215
+ return next.then(function(_) {
3216
+ return async_1.PromiseWrapper.all(promises);
3217
+ });
3218
+ };
3219
+ Router.prototype._startNavigating = function() {
3220
+ this.navigating = true;
3221
+ };
3222
+ Router.prototype._finishNavigating = function() {
3223
+ this.navigating = false;
3224
+ };
3225
+ Router.prototype.subscribe = function(onNext, onError) {
3226
+ return async_1.ObservableWrapper.subscribe(this._subject, onNext, onError);
3227
+ };
3228
+ Router.prototype.deactivate = function(instruction) {
3229
+ var _this = this;
3230
+ var childInstruction = null;
3231
+ var componentInstruction = null;
3232
+ if (lang_1.isPresent(instruction)) {
3233
+ childInstruction = instruction.child;
3234
+ componentInstruction = instruction.component;
3235
+ }
3236
+ var next = _resolveToTrue;
3237
+ if (lang_1.isPresent(this._childRouter)) {
3238
+ next = this._childRouter.deactivate(childInstruction);
3239
+ }
3240
+ if (lang_1.isPresent(this._outlet)) {
3241
+ next = next.then(function(_) {
3242
+ return _this._outlet.deactivate(componentInstruction);
3243
+ });
3244
+ }
3245
+ return next;
3246
+ };
3247
+ Router.prototype.recognize = function(url) {
3248
+ var ancestorComponents = this._getAncestorInstructions();
3249
+ return this.registry.recognize(url, ancestorComponents);
3250
+ };
3251
+ Router.prototype._getAncestorInstructions = function() {
3252
+ var ancestorInstructions = [this.currentInstruction];
3253
+ var ancestorRouter = this;
3254
+ while (lang_1.isPresent(ancestorRouter = ancestorRouter.parent)) {
3255
+ ancestorInstructions.unshift(ancestorRouter.currentInstruction);
3256
+ }
3257
+ return ancestorInstructions;
3258
+ };
3259
+ Router.prototype.renavigate = function() {
3260
+ if (lang_1.isBlank(this.lastNavigationAttempt)) {
3261
+ return this._currentNavigation;
3262
+ }
3263
+ return this.navigateByUrl(this.lastNavigationAttempt);
3264
+ };
3265
+ Router.prototype.generate = function(linkParams) {
3266
+ var ancestorInstructions = this._getAncestorInstructions();
3267
+ return this.registry.generate(linkParams, ancestorInstructions);
3268
+ };
3269
+ Router = __decorate([core_1.Injectable(), __metadata('design:paramtypes', [route_registry_1.RouteRegistry, Router, Object, Router])], Router);
3270
+ return Router;
3271
+ }());
3272
+ exports.Router = Router;
3273
+ var RootRouter = (function(_super) {
3274
+ __extends(RootRouter, _super);
3275
+ function RootRouter(registry, location, primaryComponent) {
3276
+ var _this = this;
3277
+ _super.call(this, registry, null, primaryComponent);
3278
+ this.root = this;
3279
+ this._location = location;
3280
+ this._locationSub = this._location.subscribe(function(change) {
3281
+ _this.recognize(change['url']).then(function(instruction) {
3282
+ if (lang_1.isPresent(instruction)) {
3283
+ _this.navigateByInstruction(instruction, lang_1.isPresent(change['pop'])).then(function(_) {
3284
+ if (lang_1.isPresent(change['pop']) && change['type'] != 'hashchange') {
3285
+ return ;
3286
+ }
3287
+ var emitPath = instruction.toUrlPath();
3288
+ var emitQuery = instruction.toUrlQuery();
3289
+ if (emitPath.length > 0 && emitPath[0] != '/') {
3290
+ emitPath = '/' + emitPath;
3291
+ }
3292
+ if (change['type'] == 'hashchange') {
3293
+ if (instruction.toRootUrl() != _this._location.path()) {
3294
+ _this._location.replaceState(emitPath, emitQuery);
3295
+ }
3296
+ } else {
3297
+ _this._location.go(emitPath, emitQuery);
3298
+ }
3299
+ });
3300
+ } else {
3301
+ _this._emitNavigationFail(change['url']);
3302
+ }
3303
+ });
3304
+ });
3305
+ this.registry.configFromComponent(primaryComponent);
3306
+ this.navigateByUrl(location.path());
3307
+ }
3308
+ RootRouter.prototype.commit = function(instruction, _skipLocationChange) {
3309
+ var _this = this;
3310
+ if (_skipLocationChange === void 0) {
3311
+ _skipLocationChange = false;
3312
+ }
3313
+ var emitPath = instruction.toUrlPath();
3314
+ var emitQuery = instruction.toUrlQuery();
3315
+ if (emitPath.length > 0 && emitPath[0] != '/') {
3316
+ emitPath = '/' + emitPath;
3317
+ }
3318
+ var promise = _super.prototype.commit.call(this, instruction);
3319
+ if (!_skipLocationChange) {
3320
+ promise = promise.then(function(_) {
3321
+ _this._location.go(emitPath, emitQuery);
3322
+ });
3323
+ }
3324
+ return promise;
3325
+ };
3326
+ RootRouter.prototype.dispose = function() {
3327
+ if (lang_1.isPresent(this._locationSub)) {
3328
+ async_1.ObservableWrapper.dispose(this._locationSub);
3329
+ this._locationSub = null;
3330
+ }
3331
+ };
3332
+ RootRouter = __decorate([core_1.Injectable(), __param(2, core_1.Inject(route_registry_1.ROUTER_PRIMARY_COMPONENT)), __metadata('design:paramtypes', [route_registry_1.RouteRegistry, location_1.Location, lang_1.Type])], RootRouter);
3333
+ return RootRouter;
3334
+ }(Router));
3335
+ exports.RootRouter = RootRouter;
3336
+ var ChildRouter = (function(_super) {
3337
+ __extends(ChildRouter, _super);
3338
+ function ChildRouter(parent, hostComponent) {
3339
+ _super.call(this, parent.registry, parent, hostComponent, parent.root);
3340
+ this.parent = parent;
3341
+ }
3342
+ ChildRouter.prototype.navigateByUrl = function(url, _skipLocationChange) {
3343
+ if (_skipLocationChange === void 0) {
3344
+ _skipLocationChange = false;
3345
+ }
3346
+ return this.parent.navigateByUrl(url, _skipLocationChange);
3347
+ };
3348
+ ChildRouter.prototype.navigateByInstruction = function(instruction, _skipLocationChange) {
3349
+ if (_skipLocationChange === void 0) {
3350
+ _skipLocationChange = false;
3351
+ }
3352
+ return this.parent.navigateByInstruction(instruction, _skipLocationChange);
3353
+ };
3354
+ return ChildRouter;
3355
+ }(Router));
3356
+ function canActivateOne(nextInstruction, prevInstruction) {
3357
+ var next = _resolveToTrue;
3358
+ if (lang_1.isBlank(nextInstruction.component)) {
3359
+ return next;
3360
+ }
3361
+ if (lang_1.isPresent(nextInstruction.child)) {
3362
+ next = canActivateOne(nextInstruction.child, lang_1.isPresent(prevInstruction) ? prevInstruction.child : null);
3363
+ }
3364
+ return next.then(function(result) {
3365
+ if (result == false) {
3366
+ return false;
3367
+ }
3368
+ if (nextInstruction.component.reuse) {
3369
+ return true;
3370
+ }
3371
+ var hook = route_lifecycle_reflector_1.getCanActivateHook(nextInstruction.component.componentType);
3372
+ if (lang_1.isPresent(hook)) {
3373
+ return hook(nextInstruction.component, lang_1.isPresent(prevInstruction) ? prevInstruction.component : null);
3374
+ }
3375
+ return true;
3376
+ });
3377
+ }
3378
+ global.define = __define;
3379
+ return module.exports;
3380
+ });
3381
+
3382
+ System.register("angular2/router", ["angular2/src/router/router", "angular2/src/router/directives/router_outlet", "angular2/src/router/directives/router_link", "angular2/src/router/instruction", "angular2/src/router/location/platform_location", "angular2/src/router/route_registry", "angular2/src/router/location/location_strategy", "angular2/src/router/location/hash_location_strategy", "angular2/src/router/location/path_location_strategy", "angular2/src/router/location/location", "angular2/src/router/route_config/route_config_decorator", "angular2/src/router/lifecycle/lifecycle_annotations", "angular2/src/router/instruction", "angular2/core", "angular2/src/router/router_providers_common", "angular2/src/router/router_providers", "angular2/src/router/directives/router_outlet", "angular2/src/router/directives/router_link", "angular2/src/facade/lang"], true, function(require, exports, module) {
3383
+ var global = System.global,
3384
+ __define = global.define;
3385
+ global.define = undefined;
3386
+ "use strict";
3387
+ function __export(m) {
3388
+ for (var p in m)
3389
+ if (!exports.hasOwnProperty(p))
3390
+ exports[p] = m[p];
3391
+ }
3392
+ var router_1 = require("angular2/src/router/router");
3393
+ exports.Router = router_1.Router;
3394
+ var router_outlet_1 = require("angular2/src/router/directives/router_outlet");
3395
+ exports.RouterOutlet = router_outlet_1.RouterOutlet;
3396
+ var router_link_1 = require("angular2/src/router/directives/router_link");
3397
+ exports.RouterLink = router_link_1.RouterLink;
3398
+ var instruction_1 = require("angular2/src/router/instruction");
3399
+ exports.RouteParams = instruction_1.RouteParams;
3400
+ exports.RouteData = instruction_1.RouteData;
3401
+ var platform_location_1 = require("angular2/src/router/location/platform_location");
3402
+ exports.PlatformLocation = platform_location_1.PlatformLocation;
3403
+ var route_registry_1 = require("angular2/src/router/route_registry");
3404
+ exports.RouteRegistry = route_registry_1.RouteRegistry;
3405
+ exports.ROUTER_PRIMARY_COMPONENT = route_registry_1.ROUTER_PRIMARY_COMPONENT;
3406
+ var location_strategy_1 = require("angular2/src/router/location/location_strategy");
3407
+ exports.LocationStrategy = location_strategy_1.LocationStrategy;
3408
+ exports.APP_BASE_HREF = location_strategy_1.APP_BASE_HREF;
3409
+ var hash_location_strategy_1 = require("angular2/src/router/location/hash_location_strategy");
3410
+ exports.HashLocationStrategy = hash_location_strategy_1.HashLocationStrategy;
3411
+ var path_location_strategy_1 = require("angular2/src/router/location/path_location_strategy");
3412
+ exports.PathLocationStrategy = path_location_strategy_1.PathLocationStrategy;
3413
+ var location_1 = require("angular2/src/router/location/location");
3414
+ exports.Location = location_1.Location;
3415
+ __export(require("angular2/src/router/route_config/route_config_decorator"));
3416
+ var lifecycle_annotations_1 = require("angular2/src/router/lifecycle/lifecycle_annotations");
3417
+ exports.CanActivate = lifecycle_annotations_1.CanActivate;
3418
+ var instruction_2 = require("angular2/src/router/instruction");
3419
+ exports.Instruction = instruction_2.Instruction;
3420
+ exports.ComponentInstruction = instruction_2.ComponentInstruction;
3421
+ var core_1 = require("angular2/core");
3422
+ exports.OpaqueToken = core_1.OpaqueToken;
3423
+ var router_providers_common_1 = require("angular2/src/router/router_providers_common");
3424
+ exports.ROUTER_PROVIDERS_COMMON = router_providers_common_1.ROUTER_PROVIDERS_COMMON;
3425
+ var router_providers_1 = require("angular2/src/router/router_providers");
3426
+ exports.ROUTER_PROVIDERS = router_providers_1.ROUTER_PROVIDERS;
3427
+ exports.ROUTER_BINDINGS = router_providers_1.ROUTER_BINDINGS;
3428
+ var router_outlet_2 = require("angular2/src/router/directives/router_outlet");
3429
+ var router_link_2 = require("angular2/src/router/directives/router_link");
3430
+ var lang_1 = require("angular2/src/facade/lang");
3431
+ exports.ROUTER_DIRECTIVES = lang_1.CONST_EXPR([router_outlet_2.RouterOutlet, router_link_2.RouterLink]);
3432
+ global.define = __define;
3433
+ return module.exports;
3434
+ });
3435
+
3436
+ //# sourceMappingURLDisabled=router.dev.js.map