@behance/router
Version:
A lightweight JavaScript library is built on top of route-recognizer and rsvp.js to provide an API for handling routes
1 lines • 25 kB
JavaScript
(function(e,r,t){var n,a,i,s;(function(){var e={},r={};n=function(r,t,n){e[r]={deps:t,callback:n}};s=i=a=function(t){if(r[t]){return r[t]}r[t]={};if(!e[t]){throw new Error("Could not find module "+t)}var n=e[t],i=n.deps,s=n.callback,o=[],l;for(var u=0,h=i.length;u<h;u++){if(i[u]==="exports"){o.push(l={})}else{o.push(a(d(i[u])))}}var f=s.apply(this,o);return r[t]=l||f;function d(e){if(e.charAt(0)!=="."){return e}var r=e.split("/");var n=t.split("/").slice(0,-1);for(var a=0,i=r.length;a<i;a++){var s=r[a];if(s===".."){n.pop()}else if(s==="."){continue}else{n.push(s)}}return n.join("/")}}})();n("router/handler-info",["./utils","rsvp/promise","exports"],function(e,r,t){"use strict";var n=e.bind;var a=e.merge;var i=e.serialize;var s=e.promiseLabel;var o=e.applyHook;var l=r["default"];function u(e){var r=e||{};a(this,r);this.initialize(r)}u.prototype={name:null,handler:null,params:null,context:null,factory:null,initialize:function(){},log:function(e,r){if(e.log){e.log(this.name+": "+r)}},promiseLabel:function(e){return s("'"+this.name+"' "+e)},getUnresolved:function(){return this},serialize:function(){return this.params||{}},resolve:function(e,r){var t=n(this,this.checkForAbort,e),a=n(this,this.runBeforeModelHook,r),i=n(this,this.getModel,r),s=n(this,this.runAfterModelHook,r),o=n(this,this.becomeResolved,r);return l.resolve(undefined,this.promiseLabel("Start handler")).then(t,null,this.promiseLabel("Check for abort")).then(a,null,this.promiseLabel("Before model")).then(t,null,this.promiseLabel("Check if aborted during 'beforeModel' hook")).then(i,null,this.promiseLabel("Model")).then(t,null,this.promiseLabel("Check if aborted in 'model' hook")).then(s,null,this.promiseLabel("After model")).then(t,null,this.promiseLabel("Check if aborted in 'afterModel' hook")).then(o,null,this.promiseLabel("Become resolved"))},runBeforeModelHook:function(e){if(e.trigger){e.trigger(true,"willResolveModel",e,this.handler)}return this.runSharedModelHook(e,"beforeModel",[])},runAfterModelHook:function(e,r){var t=this.name;this.stashResolvedModel(e,r);return this.runSharedModelHook(e,"afterModel",[r]).then(function(){return e.resolvedModels[t]},null,this.promiseLabel("Ignore fulfillment value and return model value"))},runSharedModelHook:function(e,r,t){this.log(e,"calling "+r+" hook");if(this.queryParams){t.push(this.queryParams)}t.push(e);var n=o(this.handler,r,t);if(n&&n.isTransition){n=null}return l.resolve(n,this.promiseLabel("Resolve value returned from one of the model hooks"))},getModel:null,checkForAbort:function(e,r){return l.resolve(e(),this.promiseLabel("Check for abort")).then(function(){return r},null,this.promiseLabel("Ignore fulfillment value and continue"))},stashResolvedModel:function(e,r){e.resolvedModels=e.resolvedModels||{};e.resolvedModels[this.name]=r},becomeResolved:function(e,r){var t=this.serialize(r);if(e){this.stashResolvedModel(e,r);e.params=e.params||{};e.params[this.name]=t}return this.factory("resolved",{context:r,name:this.name,handler:this.handler,params:t})},shouldSupercede:function(e){if(!e){return true}var r=e.context===this.context;return e.name!==this.name||this.hasOwnProperty("context")&&!r||this.hasOwnProperty("params")&&!h(this.params,e.params)}};function h(e,r){if(!e^!r){return false}if(!e){return true}for(var t in e){if(e.hasOwnProperty(t)&&e[t]!==r[t]){return false}}return true}t["default"]=u});n("router/handler-info/factory",["router/handler-info/resolved-handler-info","router/handler-info/unresolved-handler-info-by-object","router/handler-info/unresolved-handler-info-by-param","exports"],function(e,r,t,n){"use strict";var a=e["default"];var i=r["default"];var s=t["default"];o.klasses={resolved:a,param:s,object:i};function o(e,r){var t=o.klasses[e],n=new t(r||{});n.factory=o;return n}n["default"]=o});n("router/handler-info/resolved-handler-info",["../handler-info","router/utils","rsvp/promise","exports"],function(e,r,t,n){"use strict";var a=e["default"];var i=r.subclass;var s=r.promiseLabel;var o=t["default"];var l=i(a,{resolve:function(e,r){if(r&&r.resolvedModels){r.resolvedModels[this.name]=this.context}return o.resolve(this,this.promiseLabel("Resolve"))},getUnresolved:function(){return this.factory("param",{name:this.name,handler:this.handler,params:this.params})},isResolved:true});n["default"]=l});n("router/handler-info/unresolved-handler-info-by-object",["../handler-info","router/utils","rsvp/promise","exports"],function(e,r,t,n){"use strict";var a=e["default"];var i=r.merge;var s=r.subclass;var o=r.promiseLabel;var l=r.isParam;var u=t["default"];var h=s(a,{getModel:function(e){this.log(e,this.name+": resolving provided model");return u.resolve(this.context)},initialize:function(e){this.names=e.names||[];this.context=e.context},serialize:function(e){var r=e||this.context,t=this.names,n=this.handler;var a={};if(l(r)){a[t[0]]=r;return a}if(n.serialize){return n.serialize(r,t)}if(t.length!==1){return}var i=t[0];if(/_id$/.test(i)){a[i]=r.id}else{a[i]=r}return a}});n["default"]=h});n("router/handler-info/unresolved-handler-info-by-param",["../handler-info","router/utils","exports"],function(e,r,t){"use strict";var n=e["default"];var a=r.resolveHook;var i=r.merge;var s=r.subclass;var o=r.promiseLabel;var l=s(n,{initialize:function(e){this.params=e.params||{}},getModel:function(e){var r=this.params;if(e&&e.queryParams){r={};i(r,this.params);r.queryParams=e.queryParams}var t=this.handler;var n=a(t,"deserialize")||a(t,"model");return this.runSharedModelHook(e,n,[r])}});t["default"]=l});n("router/router",["route-recognizer","rsvp/promise","./utils","./transition-state","./transition","./transition-intent/named-transition-intent","./transition-intent/url-transition-intent","./handler-info","exports"],function(e,r,t,n,a,i,s,o,l){"use strict";var u=e["default"];var h=r["default"];var f=t.trigger;var d=t.log;var c=t.slice;var v=t.forEach;var m=t.merge;var p=t.serialize;var g=t.extractQueryParams;var y=t.getChangelist;var b=t.promiseLabel;var I=t.callHook;var w=n["default"];var x=a.logAbort;var P=a.Transition;var T=a.TransitionAborted;var H=i["default"];var q=s["default"];var L=o.ResolvedHandlerInfo;var R=Array.prototype.pop;function A(e){var r=e||{};this.getHandler=r.getHandler||this.getHandler;this.updateURL=r.updateURL||this.updateURL;this.replaceURL=r.replaceURL||this.replaceURL;this.didTransition=r.didTransition||this.didTransition;this.willTransition=r.willTransition||this.willTransition;this.delegate=r.delegate||this.delegate;this.triggerEvent=r.triggerEvent||this.triggerEvent;this.log=r.log||this.log;this.recognizer=new u;this.reset()}function k(e,r){var t=!!this.activeTransition;var n=t?this.activeTransition.state:this.state;var a;var i=e.applyToState(n,this.recognizer,this.getHandler,r);var s=y(n.queryParams,i.queryParams);if(j(i.handlerInfos,n.handlerInfos)){if(s){a=this.queryParamsTransition(s,t,n,i);if(a){return a}}return new P(this)}if(r){M(this,i);return}a=new P(this,e,i);if(this.activeTransition){this.activeTransition.abort()}this.activeTransition=a;a.promise=a.promise.then(function(e){return E(a,e.state)},null,b("Settle transition promise when transition is finalized"));if(!t){B(this,i,a)}z(this,i,s);return a}A.prototype={map:function(e){this.recognizer.delegate=this.delegate;this.recognizer.map(e,function(e,r){for(var t=r.length-1,n=true;t>=0&&n;--t){var a=r[t];e.add(r,{as:a.handler});n=a.path==="/"||a.path===""||a.handler.slice(-6)===".index"}})},hasRoute:function(e){return this.recognizer.hasRoute(e)},getHandler:function(){},queryParamsTransition:function(e,r,t,n){var a=this;z(this,n,e);if(!r&&this.activeTransition){return this.activeTransition}else{var i=new P(this);i.queryParamsOnly=true;t.queryParams=Q(this,n.handlerInfos,n.queryParams,i);i.promise=i.promise.then(function(e){U(i,t,true);if(a.didTransition){a.didTransition(a.currentHandlerInfos)}return e},null,b("Transition complete"));return i}},transitionByIntent:function(e,r){try{return k.apply(this,arguments)}catch(t){return new P(this,e,null,t)}},reset:function(){if(this.state){v(this.state.handlerInfos.slice().reverse(),function(e){var r=e.handler;I(r,"exit")})}this.state=new w;this.currentHandlerInfos=null},activeTransition:null,handleURL:function(e){var r=c.call(arguments);if(e.charAt(0)!=="/"){r[0]="/"+e}return O(this,r).method(null)},updateURL:function(){throw new Error("updateURL is not implemented")},replaceURL:function(e){this.updateURL(e)},transitionTo:function(e){return O(this,arguments)},intermediateTransitionTo:function(e){return O(this,arguments,true)},refresh:function(e){var r=this.activeTransition?this.activeTransition.state:this.state;var t=r.handlerInfos;var n={};for(var a=0,i=t.length;a<i;++a){var s=t[a];n[s.name]=s.params||{}}d(this,"Starting a refresh transition");var o=new H({name:t[t.length-1].name,pivotHandler:e||t[0].handler,contexts:[],queryParams:this._changedQueryParams||r.queryParams||{}});return this.transitionByIntent(o,false)},replaceWith:function(e){return O(this,arguments).method("replace")},generate:function(e){var r=g(c.call(arguments,1)),t=r[0],n=r[1];var a=new H({name:e,contexts:t});var i=a.applyToState(this.state,this.recognizer,this.getHandler);var s={};for(var o=0,l=i.handlerInfos.length;o<l;++o){var u=i.handlerInfos[o];var h=u.serialize();m(s,h)}s.queryParams=n;return this.recognizer.generate(e,s)},applyIntent:function(e,r){var t=new H({name:e,contexts:r});var n=this.activeTransition&&this.activeTransition.state||this.state;return t.applyToState(n,this.recognizer,this.getHandler)},isActiveIntent:function(e,r,t,n){var a=n||this.state,i=a.handlerInfos,s=false,o,l,u,h,f,d;if(!i.length){return false}var c=i[i.length-1].name;var v=this.recognizer.handlersFor(c);var p=0;for(d=v.length;p<d;++p){u=i[p];if(u.name===e){break}}if(p===v.length){return false}var g=new w;g.handlerInfos=i.slice(0,p+1);v=v.slice(0,p+1);var b=new H({name:c,contexts:r});var I=b.applyToHandlers(g,v,this.getHandler,c,true,true);var x=j(I.handlerInfos,g.handlerInfos);if(!t||!x){return x}var P={};m(P,t);var T=a.queryParams;for(var q in T){if(T.hasOwnProperty(q)&&P.hasOwnProperty(q)){P[q]=T[q]}}return x&&!y(P,t)},isActive:function(e){var r=g(c.call(arguments,1));return this.isActiveIntent(e,r[0],r[1])},trigger:function(e){var r=c.call(arguments);f(this,this.currentHandlerInfos,false,r)},log:null};function z(e,r,t){if(t){e._changedQueryParams=t.all;f(e,r.handlerInfos,true,["queryParamsDidChange",t.changed,t.all,t.removed]);e._changedQueryParams=null}}function M(e,r,t){var n=C(e.state,r);var a,i,s;for(a=0,i=n.exited.length;a<i;a++){s=n.exited[a].handler;delete s.context;I(s,"reset",true,t);I(s,"exit",t)}var o=e.oldState=e.state;e.state=r;var l=e.currentHandlerInfos=n.unchanged.slice();try{for(a=0,i=n.reset.length;a<i;a++){s=n.reset[a].handler;I(s,"reset",false,t)}for(a=0,i=n.updatedContext.length;a<i;a++){S(l,n.updatedContext[a],false,t)}for(a=0,i=n.entered.length;a<i;a++){S(l,n.entered[a],true,t)}}catch(u){e.state=o;e.currentHandlerInfos=o.handlerInfos;throw u}e.state.queryParams=Q(e,l,r.queryParams,t)}function S(e,r,t,n){var a=r.handler,i=r.context;if(t){I(a,"enter",n)}if(n&&n.isAborted){throw new T}a.context=i;I(a,"contextDidChange");I(a,"setup",i,n);if(n&&n.isAborted){throw new T}e.push(r);return true}function C(e,r){var t=e.handlerInfos;var n=r.handlerInfos;var a={updatedContext:[],exited:[],entered:[],unchanged:[]};var i,s=false,o,l;for(o=0,l=n.length;o<l;o++){var u=t[o],h=n[o];if(!u||u.handler!==h.handler){i=true}if(i){a.entered.push(h);if(u){a.exited.unshift(u)}}else if(s||u.context!==h.context){s=true;a.updatedContext.push(h)}else{a.unchanged.push(u)}}for(o=n.length,l=t.length;o<l;o++){a.exited.unshift(t[o])}a.reset=a.updatedContext.slice();a.reset.reverse();return a}function U(e,r,t){var n=e.urlMethod;if(!n){return}var a=e.router,i=r.handlerInfos,s=i[i.length-1].name,o={};for(var l=i.length-1;l>=0;--l){var u=i[l];m(o,u.params);if(u.handler.inaccessibleByURL){n=null}}if(n){o.queryParams=e._visibleQueryParams||r.queryParams;var h=a.recognizer.generate(s,o);if(n==="replace"){a.replaceURL(h)}else{a.updateURL(h)}}}function E(e,r){try{d(e.router,e.sequence,"Resolved all models on destination route; finalizing transition.");var t=e.router,n=r.handlerInfos,a=e.sequence;M(t,r,e);if(e.isAborted){t.state.handlerInfos=t.currentHandlerInfos;return h.reject(x(e))}U(e,r,e.intent.url);e.isActive=false;t.activeTransition=null;f(t,t.currentHandlerInfos,true,["didTransition"]);if(t.didTransition){t.didTransition(t.currentHandlerInfos)}d(t,e.sequence,"TRANSITION COMPLETE.");return n[n.length-1].handler}catch(i){if(!((i instanceof T))){var s=e.state.handlerInfos;e.trigger(true,"error",i,e,s[s.length-1].handler);e.abort()}throw i}}function O(e,r,t){var n=r[0]||"/";var a=r[r.length-1];var i={};if(a&&a.hasOwnProperty("queryParams")){i=R.call(r).queryParams}var s;if(r.length===0){d(e,"Updating query params");var o=e.state.handlerInfos;s=new H({name:o[o.length-1].name,contexts:[],queryParams:i})}else if(n.charAt(0)==="/"){d(e,"Attempting URL transition to "+n);s=new q({url:n})}else{d(e,"Attempting transition to "+n);s=new H({name:r[0],contexts:c.call(r,1),queryParams:i})}return e.transitionByIntent(s,t)}function j(e,r){if(e.length!==r.length){return false}for(var t=0,n=e.length;t<n;++t){if(e[t]!==r[t]){return false}}return true}function Q(e,r,t,n){for(var a in t){if(t.hasOwnProperty(a)&&t[a]===null){delete t[a]}}var i=[];f(e,r,true,["finalizeQueryParamChange",t,i,n]);if(n){n._visibleQueryParams={}}var s={};for(var o=0,l=i.length;o<l;++o){var u=i[o];s[u.key]=u.value;if(n&&u.visible!==false){n._visibleQueryParams[u.key]=u.value}}return s}function B(e,r,t){var n=e.state.handlerInfos,a=[],i=null,s,o,l,u,h,d;u=n.length;for(l=0;l<u;l++){h=n[l];d=r.handlerInfos[l];if(!d||h.name!==d.name){i=l;break}if(!d.isResolved){a.push(h)}}if(i!==null){s=n.slice(i,u);o=function(e){for(var r=0,t=s.length;r<t;r++){if(s[r].name===e){return true}}return false}}f(e,n,true,["willTransition",t]);if(e.willTransition){e.willTransition(n,r.handlerInfos,t)}}l["default"]=A});n("router/transition-intent",["./utils","exports"],function(e,r){"use strict";var t=e.merge;function n(e){this.initialize(e);this.data=this.data||{}}n.prototype={initialize:null,applyToState:null};r["default"]=n});n("router/transition-intent/named-transition-intent",["../transition-intent","../transition-state","../handler-info/factory","../utils","exports"],function(e,r,t,n,a){"use strict";var i=e["default"];var s=r["default"];var o=t["default"];var l=n.isParam;var u=n.extractQueryParams;var h=n.merge;var f=n.subclass;a["default"]=f(i,{name:null,pivotHandler:null,contexts:null,queryParams:null,initialize:function(e){this.name=e.name;this.pivotHandler=e.pivotHandler;this.contexts=e.contexts||[];this.queryParams=e.queryParams},applyToState:function(e,r,t,n){var a=u([this.name].concat(this.contexts)),i=a[0],s=a[1],o=r.handlersFor(i[0]);var l=o[o.length-1].handler;return this.applyToHandlers(e,o,t,l,n)},applyToHandlers:function(e,r,t,n,a,i){var o,l;var u=new s;var f=this.contexts.slice(0);var d=r.length;if(this.pivotHandler){for(o=0,l=r.length;o<l;++o){if(t(r[o].handler)===this.pivotHandler){d=o;break}}}var c=!this.pivotHandler;for(o=r.length-1;o>=0;--o){var v=r[o];var m=v.handler;var p=t(m);var g=e.handlerInfos[o];var y=null;if(v.names.length>0){if(o>=d){y=this.createParamHandlerInfo(m,p,v.names,f,g)}else{y=this.getHandlerInfoForDynamicSegment(m,p,v.names,f,g,n,o)}}else{y=this.createParamHandlerInfo(m,p,v.names,f,g)}if(i){y=y.becomeResolved(null,y.context);var b=g&&g.context;if(v.names.length>0&&y.context===b){y.params=g&&g.params}y.context=b}var I=g;if(o>=d||y.shouldSupercede(g)){d=Math.min(o,d);I=y}if(a&&!i){I=I.becomeResolved(null,I.context)}u.handlerInfos.unshift(I)}if(f.length>0){throw new Error("More context objects were passed than there are dynamic segments for the route: "+n)}if(!a){this.invalidateChildren(u.handlerInfos,d)}h(u.queryParams,this.queryParams||{});return u},invalidateChildren:function(e,r){for(var t=r,n=e.length;t<n;++t){var a=e[t];e[t]=e[t].getUnresolved()}},getHandlerInfoForDynamicSegment:function(e,r,t,n,a,i,s){var u=t.length;var h;if(n.length>0){h=n[n.length-1];if(l(h)){return this.createParamHandlerInfo(e,r,t,n,a)}else{n.pop()}}else if(a&&a.name===e){return a}else{if(this.preTransitionState){var f=this.preTransitionState.handlerInfos[s];h=f&&f.context}else{return a}}return o("object",{name:e,handler:r,context:h,names:t})},createParamHandlerInfo:function(e,r,t,n,a){var i={};var s=t.length;while(s--){var u=a&&e===a.name&&a.params||{};var h=n[n.length-1];var f=t[s];if(l(h)){i[f]=""+n.pop()}else{if(u.hasOwnProperty(f)){i[f]=u[f]}else{throw new Error("You didn't provide enough string/numeric parameters to satisfy all of the dynamic segments for route "+e)}}}return o("param",{name:e,handler:r,params:i})}})});n("router/transition-intent/url-transition-intent",["../transition-intent","../transition-state","../handler-info/factory","../utils","./../unrecognized-url-error","exports"],function(e,r,t,n,a,i){"use strict";var s=e["default"];var o=r["default"];var l=t["default"];var u=n.oCreate;var h=n.merge;var f=n.subclass;var d=a["default"];i["default"]=f(s,{url:null,initialize:function(e){this.url=e.url},applyToState:function(e,r,t){var n=new o;var a=r.recognize(this.url),i={},s,u;if(!a){throw new d(this.url)}var f=false;for(s=0,u=a.length;s<u;++s){var c=a[s];var v=c.handler;var m=t(v);if(m.inaccessibleByURL){throw new d(this.url)}var p=l("param",{name:v,handler:m,params:c.params});var g=e.handlerInfos[s];if(f||p.shouldSupercede(g)){f=true;n.handlerInfos[s]=p}else{n.handlerInfos[s]=g}}h(n.queryParams,a.queryParams);return n}})});n("router/transition-state",["./handler-info","./utils","rsvp/promise","exports"],function(e,r,t,n){"use strict";var a=e.ResolvedHandlerInfo;var i=r.forEach;var s=r.promiseLabel;var o=r.callHook;var l=t["default"];function u(e){this.handlerInfos=[];this.queryParams={};this.params={}}u.prototype={handlerInfos:null,queryParams:null,params:null,promiseLabel:function(e){var r="";i(this.handlerInfos,function(e){if(r!==""){r+="."}r+=e.name});return s("'"+r+"': "+e)},resolve:function(e,r){var t=this;var n=this.params;i(this.handlerInfos,function(e){n[e.name]=e.params||{}});r=r||{};r.resolveIndex=0;var a=this;var s=false;return l.resolve(null,this.promiseLabel("Start transition")).then(d,null,this.promiseLabel("Resolve handler"))["catch"](h,this.promiseLabel("Handle error"));function u(){return l.resolve(e(),a.promiseLabel("Check if should continue"))["catch"](function(e){s=true;return l.reject(e)},a.promiseLabel("Handle abort"))}function h(e){var t=a.handlerInfos;var n=r.resolveIndex>=t.length?t.length-1:r.resolveIndex;return l.reject({error:e,handlerWithError:a.handlerInfos[n].handler,wasAborted:s,state:a})}function f(e){var t=a.handlerInfos[r.resolveIndex].isResolved;a.handlerInfos[r.resolveIndex++]=e;if(!t){var n=e.handler;o(n,"redirect",e.context,r)}return u().then(d,null,a.promiseLabel("Resolve handler"))}function d(){if(r.resolveIndex===a.handlerInfos.length){return{error:null,state:a}}var e=a.handlerInfos[r.resolveIndex];return e.resolve(u,r).then(f,null,a.promiseLabel("Proceed"))}}};n["default"]=u});n("router/transition",["rsvp/promise","./handler-info","./utils","exports"],function(e,r,t,n){"use strict";var a=e["default"];var i=r.ResolvedHandlerInfo;var s=t.trigger;var o=t.slice;var l=t.log;var u=t.promiseLabel;function h(e,r,t,n){var i=this;this.state=t||e.state;this.intent=r;this.router=e;this.data=this.intent&&this.intent.data||{};this.resolvedModels={};this.queryParams={};if(n){this.promise=a.reject(n);this.error=n;return}if(t){this.params=t.params;this.queryParams=t.queryParams;this.handlerInfos=t.handlerInfos;var s=t.handlerInfos.length;if(s){this.targetName=t.handlerInfos[s-1].name}for(var o=0;o<s;++o){var l=t.handlerInfos[o];if(!l.isResolved){break}this.pivotHandler=l.handler}this.sequence=h.currentSequence++;this.promise=t.resolve(d,this)["catch"](function(e){if(e.wasAborted||i.isAborted){return a.reject(f(i))}else{i.trigger("error",e.error,i,e.handlerWithError);i.abort();return a.reject(e.error)}},u("Handle Abort"))}else{this.promise=a.resolve(this.state);this.params={}}function d(){if(i.isAborted){return a.reject(undefined,u("Transition aborted - reject"))}}}h.currentSequence=0;h.prototype={targetName:null,urlMethod:"update",intent:null,params:null,pivotHandler:null,resolveIndex:0,handlerInfos:null,resolvedModels:null,isActive:true,state:null,queryParamsOnly:false,isTransition:true,isExiting:function(e){var r=this.handlerInfos;for(var t=0,n=r.length;t<n;++t){var a=r[t];if(a.name===e||a.handler===e){return false}}return true},promise:null,data:null,then:function(e,r,t){return this.promise.then(e,r,t)},"catch":function(e,r){return this.promise["catch"](e,r)},"finally":function(e,r){return this.promise["finally"](e,r)},abort:function(){if(this.isAborted){return this}l(this.router,this.sequence,this.targetName+": transition was aborted");this.intent.preTransitionState=this.router.state;this.isAborted=true;this.isActive=false;this.router.activeTransition=null;return this},retry:function(){this.abort();return this.router.transitionByIntent(this.intent,false)},method:function(e){this.urlMethod=e;return this},trigger:function(e){var r=o.call(arguments);if(typeof e==="boolean"){r.shift()}else{e=false}s(this.router,this.state.handlerInfos.slice(0,this.resolveIndex+1),e,r)},followRedirects:function(){var e=this.router;return this.promise["catch"](function(r){if(e.activeTransition){return e.activeTransition.followRedirects()}return a.reject(r)})},toString:function(){return"Transition (sequence "+this.sequence+")"},log:function(e){l(this.router,this.sequence,e)}};h.prototype.send=h.prototype.trigger;function f(e){l(e.router,e.sequence,"detected abort.");return new d}function d(e){this.message=e||"TransitionAborted";this.name="TransitionAborted"}n.Transition=h;n.logAbort=f;n.TransitionAborted=d});n("router/unrecognized-url-error",["./utils","exports"],function(e,r){"use strict";var t=e.oCreate;function n(e){this.message=e||"UnrecognizedURLError";this.name="UnrecognizedURLError";Error.call(this)}n.prototype=t(Error.prototype);r["default"]=n});n("router/utils",["exports"],function(e){"use strict";var r=Array.prototype.slice;var t;if(!Array.isArray){t=function(e){return Object.prototype.toString.call(e)==="[object Array]"}}else{t=Array.isArray}var n=t;e.isArray=n;function a(e,r){for(var t in r){if(r.hasOwnProperty(t)){e[t]=r[t]}}}var i=Object.create||function(e){function r(){}r.prototype=e;return new r};e.oCreate=i;function s(e){var t=e&&e.length,n,a;if(t&&t>0&&e[t-1]&&e[t-1].hasOwnProperty("queryParams")){a=e[t-1].queryParams;n=r.call(e,0,t-1);return[n,a]}else{return[e,null]}}e.extractQueryParams=s;function o(e){for(var r in e){if(typeof e[r]==="number"){e[r]=""+e[r]}else if(n(e[r])){for(var t=0,a=e[r].length;t<a;t++){e[r][t]=""+e[r][t]}}}}function l(e,r,t){if(!e.log){return}if(arguments.length===3){e.log("Transition #"+r+": "+t)}else{t=r;e.log(t)}}e.log=l;function u(e,t){var n=arguments;return function(a){var i=r.call(n,2);i.push(a);return t.apply(e,i)}}e.bind=u;function h(e){return typeof e==="string"||e instanceof String||typeof e==="number"||e instanceof Number}function f(e,r){for(var t=0,n=e.length;t<n&&false!==r(e[t]);t++){}}e.forEach=f;function d(e,r,t,n){if(e.triggerEvent){e.triggerEvent(r,t,n);return}var a=n.shift();if(!r){if(t){return}throw new Error("Could not trigger event '"+a+"'. There are no active handlers")}var i=false;for(var s=r.length-1;s>=0;s--){var o=r[s],l=o.handler;if(l.events&&l.events[a]){if(l.events[a].apply(l,n)===true){i=true}else{return}}}if(!i&&!t){throw new Error("Nothing handled the event '"+a+"'.")}}e.trigger=d;function c(e,r){var t;var i={all:{},changed:{},removed:{}};a(i.all,r);var s=false;o(e);o(r);for(t in e){if(e.hasOwnProperty(t)){if(!r.hasOwnProperty(t)){s=true;i.removed[t]=e[t]}}}for(t in r){if(r.hasOwnProperty(t)){if(n(e[t])&&n(r[t])){if(e[t].length!==r[t].length){i.changed[t]=r[t];s=true}else{for(var l=0,u=e[t].length;l<u;l++){if(e[t][l]!==r[t][l]){i.changed[t]=r[t];s=true}}}}else{if(e[t]!==r[t]){i.changed[t]=r[t];s=true}}}}return s&&i}e.getChangelist=c;function v(e){return"Router: "+e}e.promiseLabel=v;function m(e,r){function t(r){e.call(this,r||{})}t.prototype=i(e.prototype);a(t.prototype,r);return t}e.subclass=m;function p(e,r){if(!e){return}var t="_"+r;return e[t]&&t||e[r]&&r}function g(e,r,t,n){var a=p(e,r);return a&&e[a].call(e,t,n)}function y(e,r,t){var n=p(e,r);if(n){if(t.length===0){return e[n].call(e)}else if(t.length===1){return e[n].call(e,t[0])}else if(t.length===2){return e[n].call(e,t[0],t[1])}else{return e[n].apply(e,t)}}}e.merge=a;e.slice=r;e.isParam=h;e.coerceQueryParamsToString=o;e.callHook=g;e.resolveHook=p;e.applyHook=y});n("router",["./router/router","exports"],function(e,r){"use strict";var t=e["default"];r["default"]=t});n("route-recognizer",[],function(){return{"default":t}});n("rsvp",[],function(){return r});n("rsvp/promise",[],function(){return{"default":r.Promise}});window.Router=a("router")})(window,window.RSVP,window.RouteRecognizer);