Skip to content

Instantly share code, notes, and snippets.

@KidkArolis
Created August 31, 2014 12:15
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save KidkArolis/192ac7df420d8c92fd30 to your computer and use it in GitHub Desktop.
Save KidkArolis/192ac7df420d8c92fd30 to your computer and use it in GitHub Desktop.
requirebin sketch
// example using the raf module from npm. try changing some values!
var requestAnimationFrame = require("cherrytree");
var requestAnimationFrame = require("cherrytree/location/history_location");
require=function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s}({1:[function(require,module,exports){var process=module.exports={};process.nextTick=function(){var canSetImmediate=typeof window!=="undefined"&&window.setImmediate;var canPost=typeof window!=="undefined"&&window.postMessage&&window.addEventListener;if(canSetImmediate){return function(f){return window.setImmediate(f)}}if(canPost){var queue=[];window.addEventListener("message",function(ev){var source=ev.source;if((source===window||source===null)&&ev.data==="process-tick"){ev.stopPropagation();if(queue.length>0){var fn=queue.shift();fn()}}},true);return function nextTick(fn){queue.push(fn);window.postMessage("process-tick","*")}}return function nextTick(fn){setTimeout(fn,0)}}();process.title="browser";process.browser=true;process.env={};process.argv=[];function noop(){}process.on=noop;process.addListener=noop;process.once=noop;process.off=noop;process.removeListener=noop;process.removeAllListeners=noop;process.emit=noop;process.binding=function(name){throw new Error("process.binding is not supported")};process.cwd=function(){return"/"};process.chdir=function(dir){throw new Error("process.chdir is not supported")}},{}],2:[function(require,module,exports){(function(define){"use strict";define(function(require){var _=require("./util");function DSL(parent){this.parent=parent;this.matches=[];this.resolvers={}}DSL.prototype={resource:function(name,options,callback){if(arguments.length===2&&typeof options==="function"){callback=options;options={}}if(arguments.length===1){options={}}if(typeof options.path!=="string"){options.path="/"+name}if(options.resolver){this.addResolver(name,options.resolver)}if(callback){var dsl=new DSL(name);callback.call(dsl);this.push(options.path,name,dsl.generate(),options.queryParams);_.extend(this.resolvers,dsl.resolvers)}else{this.push(options.path,name,null,options.queryParams)}},route:function(name,options){options=options||{};if(typeof options.path!=="string"){options.path="/"+name}if(this.parent&&this.parent!=="application"){name=this.parent+"."+name}if(options.resolver){this.addResolver(name,options.resolver)}this.push(options.path,name,null,options.queryParams)},push:function(url,name,callback,queryParams){var parts=name.split(".");if(url===""||url==="/"||parts[parts.length-1]==="index"){this.explicitIndex=true}this.matches.push([url,name,callback,queryParams])},addResolver:function(name,fn){this.resolvers[name]=fn},generate:function(){var dslMatches=this.matches;if(!this.explicitIndex){this.route("index",{path:"/"})}return function(match){for(var i=0,l=dslMatches.length;i<l;i++){var dslMatch=dslMatches[i];match(dslMatch[0]).to(dslMatch[1],dslMatch[2])}}}};DSL.map=function(callback){var dsl=new DSL;callback.call(dsl);return dsl};return DSL})})(typeof define==="function"&&define.amd?define:function(factory){module.exports=factory(require)})},{"./util":6}],3:[function(require,module,exports){(function(define){"use strict";define(function(require){var _=require("./util");var Promise=require("../vendor/promise");var makeRouteCreator=require("./route_creator");var debug=false;var log=function(){if(debug){console.log.apply(console,arguments)}};function proxy(method){return function(){log("cherrytree:",this.route.name+"#"+method);return this.route[method].apply(this.route,arguments)}}function proxyEvent(event){return function(){if(this.route&&this.route[event]){log("cherrytree:",this.route.name+"#"+event);return this.route[event].apply(this.route,arguments)}else{return true}}}function createHandler(router,createRoute,name){return{serialize:function(){return this.params},beforeModel:function(transition){var handler=this;return Promise.resolve(handler.route||createRoute(name)).then(function(route){handler.route=route;route.needsReactivation=false;route.refresh=function(){router.router.refresh(handler)};if(name!=="application"&&name!=="loading"){var parentHandler=transition.state.handlerInfos[0];for(var i=1,len=transition.state.handlerInfos.length;i<len;i++){if(transition.state.handlerInfos[i].name===name){break}parentHandler=transition.state.handlerInfos[i]}handler.route.setParent(parentHandler.handler.route)}route.setContext({});log("cherrytree:",handler.route.name+"#"+"beforeModel");return handler.route.beforeModel.apply(handler.route,arguments)})},model:function(params){params=params||{};this.params=JSON.parse(JSON.stringify(params||{}));this.route.needsReactivation=true;log("cherrytree:",this.route.name+"#"+"model");var route=this.route;return Promise.resolve(this.route.model.apply(this.route,arguments)).then(function(){return route.getContext()})},afterModel:proxy("afterModel"),enter:proxy("enter"),setup:proxy("setup"),exit:proxy("exit"),events:{willTransition:proxyEvent("willTransition"),error:proxyEvent("error"),queryParamsDidChange:proxyEvent("queryParamsDidChange"),finalizeQueryParamChange:function(params,finalParams,transition){_.each(params,function(val,key){finalParams.push({value:val,visible:!!val,key:key})});return true}},refresh:function(){router.router.refresh(this)}}}return function getHandler(router){var seen={};var createRoute=makeRouteCreator(router);if(!router.routes["loading"]){seen.loading={}}else{seen.loading=createHandler(router,createRoute,"loading");seen.loading.beforeModel()}return function(name){if(!seen[name]){seen[name]=createHandler(router,createRoute,name)}return seen[name]}}})})(typeof define==="function"&&define.amd?define:function(factory){module.exports=factory(require)})},{"../vendor/promise":9,"./route_creator":5,"./util":6}],4:[function(require,module,exports){(function(define){"use strict";define(function(require){var _=require("./util");var Ctor=function(){};var inherits=function(parent,protoProps,staticProps){var child;if(protoProps&&protoProps.hasOwnProperty("constructor")){child=protoProps.constructor}else{child=function(){return parent.apply(this,arguments)}}_.extend(child,parent);Ctor.prototype=parent.prototype;child.prototype=new Ctor;if(protoProps){_.extend(child.prototype,protoProps)}if(staticProps){_.extend(child,staticProps)}child.prototype.constructor=child;child.__super__=parent.prototype;return child};return function(protoProps,classProps){var child=inherits(this,protoProps,classProps);child.extend=this.extend;return child}})})(typeof define==="function"&&define.amd?define:function(factory){module.exports=factory(require)})},{"./util":6}],5:[function(require,module,exports){(function(define){"use strict";define(function(require){var Promise=require("../vendor/promise");return function routeCreator(router){var cache={};function createRoute(name){var Route=cache[name]||router.options.BaseRoute;return new Route({name:name,router:router})}function resolveRoute(name,cb){return getRouteResolver(name)(name,cb)}function getRouteResolver(name){var routeName,i,l;var branches=router.getBranchNames(name);for(i=branches.length-1,l=0;i>=l;i--){routeName=branches[i];if(router.resolvers[routeName]){return router.resolvers[routeName]}}}function promise(value){return new Promise(function(resolve){resolve(value)})}return function getRoute(name){if(cache[name]&&cache[name].then){return cache[name].then(function(name){return createRoute(name)})}if(cache[name]){return promise(createRoute(name))}cache[name]=new Promise(function(resolve,reject){resolveRoute(name,function(route){cache[name]=route;resolve(createRoute(name))},reject)});return cache[name]}}})})(typeof define==="function"&&define.amd?define:function(factory){module.exports=factory(require)})},{"../vendor/promise":9}],6:[function(require,module,exports){(function(define){"use strict";define(function(){var _={};var breaker={};var ArrayProto=Array.prototype;var slice=ArrayProto.slice;var nativeMap=ArrayProto.map;var nativeForEach=ArrayProto.forEach;var nativeKeys=Object.keys;_.keys=nativeKeys||function(obj){if(obj!==Object(obj))throw new TypeError("Invalid object");var keys=[];for(var key in obj)if(_.has(obj,key))keys.push(key);return keys};var each=_.each=function(obj,iterator,context){if(obj===null)return;var i,length;if(nativeForEach&&obj.forEach===nativeForEach){obj.forEach(iterator,context)}else if(obj.length===+obj.length){for(i=0,length=obj.length;i<length;i++){if(iterator.call(context,obj[i],i,obj)===breaker)return}}else{var keys=_.keys(obj);for(i=0,length=keys.length;i<length;i++){if(iterator.call(context,obj[keys[i]],keys[i],obj)===breaker)return}}};_.map=function(obj,iterator,context){var results=[];if(obj===null)return results;if(nativeMap&&obj.map===nativeMap)return obj.map(iterator,context);each(obj,function(value,index,list){results.push(iterator.call(context,value,index,list))});return results};_.extend=function(obj){each(slice.call(arguments,1),function(source){if(source){for(var prop in source){obj[prop]=source[prop]}}});return obj};_.pluck=function(obj,key){return _.map(obj,function(value){return value[key]})};var idCounter=0;_.uniqueId=function uniqueId(prefix){var id=++idCounter+"";return prefix?prefix+id:id};return _})})(typeof define==="function"&&define.amd?define:function(factory){module.exports=factory(require)})},{}],7:[function(require,module,exports){(function(define){"use strict";define(function(){return function(){return{path:"",getURL:function(){return this.path},setURL:function(path){this.path=path},replaceURL:function(path){this.setURL(path)},onChange:function(callback){this.changeCallback=callback},handleURL:function(url){this.path=url;if(this.changeCallback){this.changeCallback(url)}},formatURL:function(url){return url}}}})})(typeof define==="function"&&define.amd?define:function(factory){module.exports=factory(require)})},{}],8:[function(require,module,exports){(function(define){"use strict";define(function(require){var _=require("./lib/util");var inherit=require("./lib/inherit");var noop=function(){};var Route=function(options){this.name=options.name;this.router=options.router;this.id=_.uniqueId();this._context={};this.initialize()};_.extend(Route.prototype,{initialize:noop,beforeModel:noop,model:noop,afterModel:noop,activate:noop,update:function(){return false},deactivate:noop,enter:function(){this._setup=0;this.needsReactivation=false},exit:function(){this.deactivate.apply(this,arguments)},setup:function(){this._setup+=1;var route=this;var args=arguments;function activate(){route.activate.apply(route,args)}function reactivate(){route.exit();route.activate.apply(route,args)}function shouldTryUpdate(){return route.parent&&!route.parent.needsReactivation}if(this._setup===1){return activate()}if(shouldTryUpdate()&&this.update&&this.update.apply(this,args)!==false){route.needsReactivation=false;return}reactivate()},setParent:function(parent){this.parent=parent},getContext:function(){return this._context},setContext:function(context){this._context=context;return this},get:function(field){var context;var route=this;while(route){context=route.getContext();if(context&&context[field]){return context[field]}else{route=route.parent}}},transitionTo:function(){var router=this.router;return router.transitionTo.apply(router,arguments)},replaceWith:function(){var router=this.router;return router.replaceWith.apply(router,arguments)}});Route.extend=inherit;return Route})})(typeof define==="function"&&define.amd?define:function(factory){module.exports=factory(require)})},{"./lib/inherit":4,"./lib/util":6}],9:[function(require,module,exports){(function(process){(function(define){"use strict";var notwindow={};(function(global){var define,requireModule,require,requirejs;(function(){var registry={},seen={};define=function(name,deps,callback){registry[name]={deps:deps,callback:callback}};requirejs=require=requireModule=function(name){requirejs._eak_seen=registry;if(seen[name]){return seen[name]}seen[name]={};if(!registry[name]){throw new Error("Could not find module "+name)}var mod=registry[name],deps=mod.deps,callback=mod.callback,reified=[],exports;for(var i=0,l=deps.length;i<l;i++){if(deps[i]==="exports"){reified.push(exports={})}else{reified.push(requireModule(resolve(deps[i])))}}var value=callback.apply(this,reified);return seen[name]=exports||value;function resolve(child){if(child.charAt(0)!=="."){return child}var parts=child.split("/");var parentBase=name.split("/").slice(0,-1);for(var i=0,l=parts.length;i<l;i++){var part=parts[i];if(part===".."){parentBase.pop()}else if(part==="."){continue}else{parentBase.push(part)}}return parentBase.join("/")}}})();define("rsvp/all",["./promise","exports"],function(__dependency1__,__exports__){"use strict";var Promise=__dependency1__["default"];__exports__["default"]=function all(array,label){return Promise.all(array,label)}});define("rsvp/all_settled",["./promise","./utils","exports"],function(__dependency1__,__dependency2__,__exports__){"use strict";var Promise=__dependency1__["default"];var isArray=__dependency2__.isArray;var isNonThenable=__dependency2__.isNonThenable;__exports__["default"]=function allSettled(entries,label){return new Promise(function(resolve,reject){if(!isArray(entries)){throw new TypeError("You must pass an array to allSettled.")}var remaining=entries.length;var entry;if(remaining===0){resolve([]);return}var results=new Array(remaining);function fulfilledResolver(index){return function(value){resolveAll(index,fulfilled(value))}}function rejectedResolver(index){return function(reason){resolveAll(index,rejected(reason))}}function resolveAll(index,value){results[index]=value;if(--remaining===0){resolve(results)}}for(var index=0;index<entries.length;index++){entry=entries[index];if(isNonThenable(entry)){resolveAll(index,fulfilled(entry))}else{Promise.cast(entry).then(fulfilledResolver(index),rejectedResolver(index))}}},label)};function fulfilled(value){return{state:"fulfilled",value:value}}function rejected(reason){return{state:"rejected",reason:reason}}});define("rsvp/asap",["exports"],function(__exports__){"use strict";__exports__["default"]=function asap(callback,arg){var length=queue.push([callback,arg]);if(length===1){scheduleFlush()}};var browserGlobal=typeof window!=="undefined"?window:{};var BrowserMutationObserver=browserGlobal.MutationObserver||browserGlobal.WebKitMutationObserver;function useNextTick(){return function(){process.nextTick(flush)}}function useMutationObserver(){var iterations=0;var observer=new BrowserMutationObserver(flush);var node=document.createTextNode("");observer.observe(node,{characterData:true});return function(){node.data=iterations=++iterations%2}}function useSetTimeout(){return function(){setTimeout(flush,1)}}var queue=[];function flush(){for(var i=0;i<queue.length;i++){var tuple=queue[i];var callback=tuple[0],arg=tuple[1];callback(arg)}queue=[]}var scheduleFlush;if(typeof process!=="undefined"&&{}.toString.call(process)==="[object process]"){scheduleFlush=useNextTick()}else if(BrowserMutationObserver){scheduleFlush=useMutationObserver()}else{scheduleFlush=useSetTimeout()}});define("rsvp/config",["./events","exports"],function(__dependency1__,__exports__){"use strict";var EventTarget=__dependency1__["default"];var config={instrument:false};EventTarget.mixin(config);function configure(name,value){if(name==="onerror"){config.on("error",value);return}if(arguments.length===2){config[name]=value}else{return config[name]}}__exports__.config=config;__exports__.configure=configure});define("rsvp/defer",["./promise","exports"],function(__dependency1__,__exports__){"use strict";var Promise=__dependency1__["default"];__exports__["default"]=function defer(label){var deferred={};deferred.promise=new Promise(function(resolve,reject){deferred.resolve=resolve;deferred.reject=reject},label);return deferred}});define("rsvp/events",["exports"],function(__exports__){"use strict";var indexOf=function(callbacks,callback){for(var i=0,l=callbacks.length;i<l;i++){if(callbacks[i]===callback){return i}}return-1};var callbacksFor=function(object){var callbacks=object._promiseCallbacks;if(!callbacks){callbacks=object._promiseCallbacks={}}return callbacks};__exports__["default"]={mixin:function(object){object.on=this.on;object.off=this.off;object.trigger=this.trigger;object._promiseCallbacks=undefined;return object},on:function(eventName,callback){var allCallbacks=callbacksFor(this),callbacks;callbacks=allCallbacks[eventName];if(!callbacks){callbacks=allCallbacks[eventName]=[]}if(indexOf(callbacks,callback)===-1){callbacks.push(callback)}},off:function(eventName,callback){var allCallbacks=callbacksFor(this),callbacks,index;if(!callback){allCallbacks[eventName]=[];return}callbacks=allCallbacks[eventName];index=indexOf(callbacks,callback);if(index!==-1){callbacks.splice(index,1)}},trigger:function(eventName,options){var allCallbacks=callbacksFor(this),callbacks,callbackTuple,callback,binding;if(callbacks=allCallbacks[eventName]){for(var i=0;i<callbacks.length;i++){callback=callbacks[i];callback(options)}}}}});define("rsvp/filter",["./all","./map","./utils","exports"],function(__dependency1__,__dependency2__,__dependency3__,__exports__){"use strict";var all=__dependency1__["default"];var map=__dependency2__["default"];var isFunction=__dependency3__.isFunction;var isArray=__dependency3__.isArray;function filter(promises,filterFn,label){if(!isArray(promises)){throw new TypeError("You must pass an array to filter.")}if(!isFunction(filterFn)){throw new TypeError("You must pass a function to filter's second argument.")}return all(promises,label).then(function(values){return map(promises,filterFn,label).then(function(filterResults){var i,valuesLen=values.length,filtered=[];for(i=0;i<valuesLen;i++){if(filterResults[i])filtered.push(values[i])}return filtered})})}__exports__["default"]=filter});define("rsvp/hash",["./promise","./utils","exports"],function(__dependency1__,__dependency2__,__exports__){"use strict";var Promise=__dependency1__["default"];var isNonThenable=__dependency2__.isNonThenable;var keysOf=__dependency2__.keysOf;__exports__["default"]=function hash(object,label){return new Promise(function(resolve,reject){var results={};var keys=keysOf(object);var remaining=keys.length;var entry,property;if(remaining===0){resolve(results);return}function fulfilledTo(property){return function(value){results[property]=value;if(--remaining===0){resolve(results)}}}function onRejection(reason){remaining=0;reject(reason)}for(var i=0;i<keys.length;i++){property=keys[i];entry=object[property];if(isNonThenable(entry)){results[property]=entry;if(--remaining===0){resolve(results)}}else{Promise.cast(entry).then(fulfilledTo(property),onRejection)}}})}});define("rsvp/instrument",["./config","./utils","exports"],function(__dependency1__,__dependency2__,__exports__){"use strict";var config=__dependency1__.config;var now=__dependency2__.now;__exports__["default"]=function instrument(eventName,promise,child){try{config.trigger(eventName,{guid:promise._guidKey+promise._id,eventName:eventName,detail:promise._detail,childGuid:child&&promise._guidKey+child._id,label:promise._label,timeStamp:now(),stack:new Error(promise._label).stack})}catch(error){setTimeout(function(){throw error},0)}}});define("rsvp/map",["./promise","./all","./utils","exports"],function(__dependency1__,__dependency2__,__dependency3__,__exports__){"use strict";var Promise=__dependency1__["default"];var all=__dependency2__["default"];var isArray=__dependency3__.isArray;var isFunction=__dependency3__.isFunction;__exports__["default"]=function map(promises,mapFn,label){if(!isArray(promises)){throw new TypeError("You must pass an array to map.")}if(!isFunction(mapFn)){throw new TypeError("You must pass a function to map's second argument.")}return all(promises,label).then(function(results){var resultLen=results.length,mappedResults=[],i;for(i=0;i<resultLen;i++){mappedResults.push(mapFn(results[i]))}return all(mappedResults,label)})}});define("rsvp/node",["./promise","exports"],function(__dependency1__,__exports__){"use strict";var Promise=__dependency1__["default"];var slice=Array.prototype.slice;function makeNodeCallbackFor(resolve,reject){return function(error,value){if(error){reject(error)}else if(arguments.length>2){resolve(slice.call(arguments,1))}else{resolve(value)}}}__exports__["default"]=function denodeify(nodeFunc,binding){return function(){var nodeArgs=slice.call(arguments),resolve,reject;var thisArg=this||binding;return new Promise(function(resolve,reject){Promise.all(nodeArgs).then(function(nodeArgs){try{nodeArgs.push(makeNodeCallbackFor(resolve,reject));nodeFunc.apply(thisArg,nodeArgs)}catch(e){reject(e)}})})}}});define("rsvp/promise",["./config","./events","./instrument","./utils","./promise/cast","./promise/all","./promise/race","./promise/resolve","./promise/reject","exports"],function(__dependency1__,__dependency2__,__dependency3__,__dependency4__,__dependency5__,__dependency6__,__dependency7__,__dependency8__,__dependency9__,__exports__){"use strict";var config=__dependency1__.config;var EventTarget=__dependency2__["default"];var instrument=__dependency3__["default"];var objectOrFunction=__dependency4__.objectOrFunction;var isFunction=__dependency4__.isFunction;var now=__dependency4__.now;var cast=__dependency5__["default"];var all=__dependency6__["default"];var race=__dependency7__["default"];var Resolve=__dependency8__["default"];var Reject=__dependency9__["default"];var guidKey="rsvp_"+now()+"-";var counter=0;function noop(){}__exports__["default"]=Promise;function Promise(resolver,label){if(!isFunction(resolver)){throw new TypeError("You must pass a resolver function as the first argument to the promise constructor")}if(!(this instanceof Promise)){throw new TypeError("Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.")}this._id=counter++;this._label=label;this._subscribers=[];if(config.instrument){instrument("created",this)}if(noop!==resolver){invokeResolver(resolver,this)}}function invokeResolver(resolver,promise){function resolvePromise(value){resolve(promise,value)}function rejectPromise(reason){reject(promise,reason)}try{resolver(resolvePromise,rejectPromise)}catch(e){rejectPromise(e)}}Promise.cast=cast;Promise.all=all;Promise.race=race;Promise.resolve=Resolve;Promise.reject=Reject;var PENDING=void 0;var SEALED=0;var FULFILLED=1;var REJECTED=2;function subscribe(parent,child,onFulfillment,onRejection){var subscribers=parent._subscribers;var length=subscribers.length;subscribers[length]=child;subscribers[length+FULFILLED]=onFulfillment;subscribers[length+REJECTED]=onRejection}function publish(promise,settled){var child,callback,subscribers=promise._subscribers,detail=promise._detail;if(config.instrument){instrument(settled===FULFILLED?"fulfilled":"rejected",promise)}for(var i=0;i<subscribers.length;i+=3){child=subscribers[i];callback=subscribers[i+settled];invokeCallback(settled,child,callback,detail)}promise._subscribers=null}Promise.prototype={constructor:Promise,_id:undefined,_guidKey:guidKey,_label:undefined,_state:undefined,_detail:undefined,_subscribers:undefined,_onerror:function(reason){config.trigger("error",reason)},then:function(onFulfillment,onRejection,label){var promise=this;this._onerror=null;var thenPromise=new this.constructor(noop,label);if(this._state){var callbacks=arguments;config.async(function invokePromiseCallback(){invokeCallback(promise._state,thenPromise,callbacks[promise._state-1],promise._detail)})}else{subscribe(this,thenPromise,onFulfillment,onRejection)}if(config.instrument){instrument("chained",promise,thenPromise)}return thenPromise},"catch":function(onRejection,label){return this.then(null,onRejection,label)},"finally":function(callback,label){var constructor=this.constructor;return this.then(function(value){return constructor.cast(callback()).then(function(){return value})},function(reason){return constructor.cast(callback()).then(function(){throw reason})},label)}};function invokeCallback(settled,promise,callback,detail){var hasCallback=isFunction(callback),value,error,succeeded,failed;if(hasCallback){try{value=callback(detail);succeeded=true}catch(e){failed=true;error=e}}else{value=detail;succeeded=true}if(handleThenable(promise,value)){return}else if(hasCallback&&succeeded){resolve(promise,value)}else if(failed){reject(promise,error)}else if(settled===FULFILLED){resolve(promise,value)}else if(settled===REJECTED){reject(promise,value)}}function handleThenable(promise,value){var then=null,resolved;try{if(promise===value){throw new TypeError("A promises callback cannot return that same promise.")}if(objectOrFunction(value)){then=value.then;if(isFunction(then)){then.call(value,function(val){if(resolved){return true}resolved=true;if(value!==val){resolve(promise,val)}else{fulfill(promise,val)}},function(val){if(resolved){return true}resolved=true;reject(promise,val)},"derived from: "+(promise._label||" unknown promise"));return true}}}catch(error){if(resolved){return true}reject(promise,error);return true}return false}function resolve(promise,value){if(promise===value){fulfill(promise,value)}else if(!handleThenable(promise,value)){fulfill(promise,value)}}function fulfill(promise,value){if(promise._state!==PENDING){return}promise._state=SEALED;promise._detail=value;config.async(publishFulfillment,promise)}function reject(promise,reason){if(promise._state!==PENDING){return}promise._state=SEALED;promise._detail=reason;config.async(publishRejection,promise)}function publishFulfillment(promise){publish(promise,promise._state=FULFILLED)}function publishRejection(promise){if(promise._onerror){promise._onerror(promise._detail)}publish(promise,promise._state=REJECTED)}});define("rsvp/promise/all",["../utils","exports"],function(__dependency1__,__exports__){"use strict";var isArray=__dependency1__.isArray;var isNonThenable=__dependency1__.isNonThenable;__exports__["default"]=function all(entries,label){var Constructor=this;return new Constructor(function(resolve,reject){if(!isArray(entries)){throw new TypeError("You must pass an array to all.")}var remaining=entries.length;var results=new Array(remaining);var entry,pending=true;if(remaining===0){resolve(results);return}function fulfillmentAt(index){return function(value){results[index]=value;if(--remaining===0){resolve(results)}}}function onRejection(reason){remaining=0;reject(reason)}for(var index=0;index<entries.length;index++){entry=entries[index];if(isNonThenable(entry)){results[index]=entry;if(--remaining===0){resolve(results)}}else{Constructor.cast(entry).then(fulfillmentAt(index),onRejection)}}},label)}});define("rsvp/promise/cast",["exports"],function(__exports__){"use strict";__exports__["default"]=function cast(object,label){var Constructor=this;if(object&&typeof object==="object"&&object.constructor===Constructor){return object}return new Constructor(function(resolve){resolve(object)},label)}});define("rsvp/promise/race",["../utils","exports"],function(__dependency1__,__exports__){"use strict";var isArray=__dependency1__.isArray;var isFunction=__dependency1__.isFunction;var isNonThenable=__dependency1__.isNonThenable;__exports__["default"]=function race(entries,label){var Constructor=this,entry;return new Constructor(function(resolve,reject){if(!isArray(entries)){throw new TypeError("You must pass an array to race.")}var pending=true;function onFulfillment(value){if(pending){pending=false;resolve(value)}}function onRejection(reason){if(pending){pending=false;reject(reason)}}for(var i=0;i<entries.length;i++){entry=entries[i];if(isNonThenable(entry)){pending=false;resolve(entry);return}else{Constructor.cast(entry).then(onFulfillment,onRejection)}}},label)}});define("rsvp/promise/reject",["exports"],function(__exports__){"use strict";__exports__["default"]=function reject(reason,label){var Constructor=this;return new Constructor(function(resolve,reject){reject(reason)},label)}});define("rsvp/promise/resolve",["exports"],function(__exports__){"use strict";__exports__["default"]=function resolve(value,label){var Constructor=this;return new Constructor(function(resolve,reject){resolve(value)},label)}});define("rsvp/race",["./promise","exports"],function(__dependency1__,__exports__){"use strict";var Promise=__dependency1__["default"];__exports__["default"]=function race(array,label){return Promise.race(array,label)}});define("rsvp/reject",["./promise","exports"],function(__dependency1__,__exports__){"use strict";var Promise=__dependency1__["default"];__exports__["default"]=function reject(reason,label){return Promise.reject(reason,label)}});define("rsvp/resolve",["./promise","exports"],function(__dependency1__,__exports__){"use strict";var Promise=__dependency1__["default"];__exports__["default"]=function resolve(value,label){return Promise.resolve(value,label)}});define("rsvp/rethrow",["exports"],function(__exports__){"use strict";__exports__["default"]=function rethrow(reason){setTimeout(function(){throw reason});throw reason}});define("rsvp/utils",["exports"],function(__exports__){"use strict";function objectOrFunction(x){return typeof x==="function"||typeof x==="object"&&x!==null}__exports__.objectOrFunction=objectOrFunction;function isFunction(x){return typeof x==="function"}__exports__.isFunction=isFunction;function isNonThenable(x){return!objectOrFunction(x)}__exports__.isNonThenable=isNonThenable;function isArray(x){return Object.prototype.toString.call(x)==="[object Array]"}__exports__.isArray=isArray;var now=Date.now||function(){return(new Date).getTime()};__exports__.now=now;var keysOf=Object.keys||function(object){var result=[];for(var prop in object){result.push(prop)}return result};__exports__.keysOf=keysOf});define("rsvp",["./rsvp/promise","./rsvp/events","./rsvp/node","./rsvp/all","./rsvp/all_settled","./rsvp/race","./rsvp/hash","./rsvp/rethrow","./rsvp/defer","./rsvp/config","./rsvp/map","./rsvp/resolve","./rsvp/reject","./rsvp/asap","./rsvp/filter","exports"],function(__dependency1__,__dependency2__,__dependency3__,__dependency4__,__dependency5__,__dependency6__,__dependency7__,__dependency8__,__dependency9__,__dependency10__,__dependency11__,__dependency12__,__dependency13__,__dependency14__,__dependency15__,__exports__){"use strict";var Promise=__dependency1__["default"];var EventTarget=__dependency2__["default"];var denodeify=__dependency3__["default"];var all=__dependency4__["default"];var allSettled=__dependency5__["default"];var race=__dependency6__["default"];var hash=__dependency7__["default"];var rethrow=__dependency8__["default"];var defer=__dependency9__["default"];var config=__dependency10__.config;var configure=__dependency10__.configure;var map=__dependency11__["default"];var resolve=__dependency12__["default"];var reject=__dependency13__["default"];var asap=__dependency14__["default"];var filter=__dependency15__["default"];config.async=asap;function async(callback,arg){config.async(callback,arg)}function on(){config.on.apply(config,arguments)}function off(){config.off.apply(config,arguments)}if(typeof window!=="undefined"&&typeof window.__PROMISE_INSTRUMENTATION__==="object"){var callbacks=window.__PROMISE_INSTRUMENTATION__;configure("instrument",true);for(var eventName in callbacks){if(callbacks.hasOwnProperty(eventName)){on(eventName,callbacks[eventName])}}}__exports__.Promise=Promise;__exports__.EventTarget=EventTarget;__exports__.all=all;__exports__.allSettled=allSettled;__exports__.race=race;__exports__.hash=hash;__exports__.rethrow=rethrow;__exports__.defer=defer;__exports__.denodeify=denodeify;__exports__.configure=configure;__exports__.on=on;__exports__.off=off;__exports__.resolve=resolve;__exports__.reject=reject;__exports__.async=async;__exports__.map=map;__exports__.filter=filter});global.RSVP=requireModule("rsvp")})(notwindow);define(function(require){return notwindow.RSVP.Promise})})(typeof define==="function"&&define.amd?define:function(factory){module.exports=factory(require)
})}).call(this,require("_process"))},{_process:1}],10:[function(require,module,exports){(function(define){"use strict";define(function(require){return function(__exports__){"use strict";var specials=["/",".","*","+","?","|","(",")","[","]","{","}","\\"];var escapeRegex=new RegExp("(\\"+specials.join("|\\")+")","g");function isArray(test){return Object.prototype.toString.call(test)==="[object Array]"}function StaticSegment(string){this.string=string}StaticSegment.prototype={eachChar:function(callback){var string=this.string,ch;for(var i=0,l=string.length;i<l;i++){ch=string.charAt(i);callback({validChars:ch})}},regex:function(){return this.string.replace(escapeRegex,"\\$1")},generate:function(){return this.string}};function DynamicSegment(name){this.name=name}DynamicSegment.prototype={eachChar:function(callback){callback({invalidChars:"/",repeat:true})},regex:function(){return"([^/]+)"},generate:function(params){return params[this.name]}};function StarSegment(name){this.name=name}StarSegment.prototype={eachChar:function(callback){callback({invalidChars:"",repeat:true})},regex:function(){return"(.+)"},generate:function(params){return params[this.name]}};function EpsilonSegment(){}EpsilonSegment.prototype={eachChar:function(){},regex:function(){return""},generate:function(){return""}};function parse(route,names,types){if(route.charAt(0)==="/"){route=route.substr(1)}var segments=route.split("/"),results=[];for(var i=0,l=segments.length;i<l;i++){var segment=segments[i],match;if(match=segment.match(/^:([^\/]+)$/)){results.push(new DynamicSegment(match[1]));names.push(match[1]);types.dynamics++}else if(match=segment.match(/^\*([^\/]+)$/)){results.push(new StarSegment(match[1]));names.push(match[1]);types.stars++}else if(segment===""){results.push(new EpsilonSegment)}else{results.push(new StaticSegment(segment));types.statics++}}return results}function State(charSpec){this.charSpec=charSpec;this.nextStates=[]}State.prototype={get:function(charSpec){var nextStates=this.nextStates;for(var i=0,l=nextStates.length;i<l;i++){var child=nextStates[i];var isEqual=child.charSpec.validChars===charSpec.validChars;isEqual=isEqual&&child.charSpec.invalidChars===charSpec.invalidChars;if(isEqual){return child}}},put:function(charSpec){var state;if(state=this.get(charSpec)){return state}state=new State(charSpec);this.nextStates.push(state);if(charSpec.repeat){state.nextStates.push(state)}return state},match:function(ch){var nextStates=this.nextStates,child,charSpec,chars;var returned=[];for(var i=0,l=nextStates.length;i<l;i++){child=nextStates[i];charSpec=child.charSpec;if(typeof(chars=charSpec.validChars)!=="undefined"){if(chars.indexOf(ch)!==-1){returned.push(child)}}else if(typeof(chars=charSpec.invalidChars)!=="undefined"){if(chars.indexOf(ch)===-1){returned.push(child)}}}return returned}};function sortSolutions(states){return states.sort(function(a,b){if(a.types.stars!==b.types.stars){return a.types.stars-b.types.stars}if(a.types.stars){if(a.types.statics!==b.types.statics){return b.types.statics-a.types.statics}if(a.types.dynamics!==b.types.dynamics){return b.types.dynamics-a.types.dynamics}}if(a.types.dynamics!==b.types.dynamics){return a.types.dynamics-b.types.dynamics}if(a.types.statics!==b.types.statics){return b.types.statics-a.types.statics}return 0})}function recognizeChar(states,ch){var nextStates=[];for(var i=0,l=states.length;i<l;i++){var state=states[i];nextStates=nextStates.concat(state.match(ch))}return nextStates}var oCreate=Object.create||function(proto){function F(){}F.prototype=proto;return new F};function RecognizeResults(queryParams){this.queryParams=queryParams||{}}RecognizeResults.prototype=oCreate({splice:Array.prototype.splice,slice:Array.prototype.slice,push:Array.prototype.push,length:0,queryParams:null});function findHandler(state,path,queryParams){var handlers=state.handlers,regex=state.regex;var captures=path.match(regex),currentCapture=1;var result=new RecognizeResults(queryParams);for(var i=0,l=handlers.length;i<l;i++){var handler=handlers[i],names=handler.names,params={};for(var j=0,m=names.length;j<m;j++){params[names[j]]=captures[currentCapture++]}result.push({handler:handler.handler,params:params,isDynamic:!!names.length})}return result}function addSegment(currentState,segment){segment.eachChar(function(ch){var state;currentState=currentState.put(ch)});return currentState}var RouteRecognizer=function(){this.rootState=new State;this.names={}};RouteRecognizer.prototype={add:function(routes,options){var currentState=this.rootState,regex="^",types={statics:0,dynamics:0,stars:0},handlers=[],allSegments=[],name;var isEmpty=true;for(var i=0,l=routes.length;i<l;i++){var route=routes[i],names=[];var segments=parse(route.path,names,types);allSegments=allSegments.concat(segments);for(var j=0,m=segments.length;j<m;j++){var segment=segments[j];if(segment instanceof EpsilonSegment){continue}isEmpty=false;currentState=currentState.put({validChars:"/"});regex+="/";currentState=addSegment(currentState,segment);regex+=segment.regex()}var handler={handler:route.handler,names:names};handlers.push(handler)}if(isEmpty){currentState=currentState.put({validChars:"/"});regex+="/"}currentState.handlers=handlers;currentState.regex=new RegExp(regex+"$");currentState.types=types;if(name=options&&options.as){this.names[name]={segments:allSegments,handlers:handlers}}},handlersFor:function(name){var route=this.names[name],result=[];if(!route){throw new Error("There is no route named "+name)}for(var i=0,l=route.handlers.length;i<l;i++){result.push(route.handlers[i])}return result},hasRoute:function(name){return!!this.names[name]},generate:function(name,params){var route=this.names[name],output="";if(!route){throw new Error("There is no route named "+name)}var segments=route.segments;for(var i=0,l=segments.length;i<l;i++){var segment=segments[i];if(segment instanceof EpsilonSegment){continue}output+="/";output+=segment.generate(params)}if(output.charAt(0)!=="/"){output="/"+output}if(params&&params.queryParams){output+=this.generateQueryString(params.queryParams,route.handlers)}return output},generateQueryString:function(params,handlers){var pairs=[];var keys=[];for(var key in params){if(params.hasOwnProperty(key)){keys.push(key)}}keys.sort();for(var i=0,len=keys.length;i<len;i++){key=keys[i];var value=params[key];if(value==null){continue}var pair=key;if(isArray(value)){for(var j=0,l=value.length;j<l;j++){var arrayPair=key+"[]"+"="+encodeURIComponent(value[j]);pairs.push(arrayPair)}}else{pair+="="+encodeURIComponent(value);pairs.push(pair)}}if(pairs.length===0){return""}return"?"+pairs.join("&")},parseQueryString:function(queryString){var pairs=queryString.split("&"),queryParams={};for(var i=0;i<pairs.length;i++){var pair=pairs[i].split("="),key=decodeURIComponent(pair[0]),keyLength=key.length,isArray=false,value;if(pair.length===1){value="true"}else{if(keyLength>2&&key.slice(keyLength-2)==="[]"){isArray=true;key=key.slice(0,keyLength-2);if(!queryParams[key]){queryParams[key]=[]}}value=pair[1]?decodeURIComponent(pair[1]):""}if(isArray){queryParams[key].push(value)}else{queryParams[key]=decodeURIComponent(value)}}return queryParams},recognize:function(path){var states=[this.rootState],pathLen,i,l,queryStart,queryParams={},isSlashDropped=false;path=decodeURI(path);queryStart=path.indexOf("?");if(queryStart!==-1){var queryString=path.substr(queryStart+1,path.length);path=path.substr(0,queryStart);queryParams=this.parseQueryString(queryString)}if(path.charAt(0)!=="/"){path="/"+path}pathLen=path.length;if(pathLen>1&&path.charAt(pathLen-1)==="/"){path=path.substr(0,pathLen-1);isSlashDropped=true}for(i=0,l=path.length;i<l;i++){states=recognizeChar(states,path.charAt(i));if(!states.length){break}}var solutions=[];for(i=0,l=states.length;i<l;i++){if(states[i].handlers){solutions.push(states[i])}}states=sortSolutions(solutions);var state=solutions[0];if(state&&state.handlers){if(isSlashDropped&&state.regex.source.slice(-5)==="(.+)$"){path=path+"/"}return findHandler(state,path,queryParams)}}};function Target(path,matcher,delegate){this.path=path;this.matcher=matcher;this.delegate=delegate}Target.prototype={to:function(target,callback){var delegate=this.delegate;if(delegate&&delegate.willAddRoute){target=delegate.willAddRoute(this.matcher.target,target)}this.matcher.add(this.path,target);if(callback){if(callback.length===0){throw new Error("You must have an argument in the function passed to `to`")}this.matcher.addChild(this.path,target,callback,this.delegate)}return this}};function Matcher(target){this.routes={};this.children={};this.target=target}Matcher.prototype={add:function(path,handler){this.routes[path]=handler},addChild:function(path,target,callback,delegate){var matcher=new Matcher(target);this.children[path]=matcher;var match=generateMatch(path,matcher,delegate);if(delegate&&delegate.contextEntered){delegate.contextEntered(target,match)}callback(match)}};function generateMatch(startingPath,matcher,delegate){return function(path,nestedCallback){var fullPath=startingPath+path;if(nestedCallback){nestedCallback(generateMatch(fullPath,matcher,delegate))}else{return new Target(startingPath+path,matcher,delegate)}}}function addRoute(routeArray,path,handler){var len=0;for(var i=0,l=routeArray.length;i<l;i++){len+=routeArray[i].path.length}path=path.substr(len);var route={path:path,handler:handler};routeArray.push(route)}function eachRoute(baseRoute,matcher,callback,binding){var routes=matcher.routes;for(var path in routes){if(routes.hasOwnProperty(path)){var routeArray=baseRoute.slice();addRoute(routeArray,path,routes[path]);if(matcher.children[path]){eachRoute(routeArray,matcher.children[path],callback,binding)}else{callback.call(binding,routeArray)}}}}RouteRecognizer.prototype.map=function(callback,addRouteCallback){var matcher=new Matcher;callback(generateMatch("",matcher,this.delegate));eachRoute([],matcher,function(route){if(addRouteCallback){addRouteCallback(this,route)}else{this.add(route)}},this)};return RouteRecognizer}(window)})})(typeof define==="function"&&define.amd?define:function(factory){module.exports=factory(require)})},{}],11:[function(require,module,exports){(function(define){"use strict";define(function(require){return function(globals,RSVP,RouteRecognizer){var define,requireModule,require,requirejs;(function(){var registry={},seen={};define=function(name,deps,callback){registry[name]={deps:deps,callback:callback}};requirejs=require=requireModule=function(name){if(seen[name]){return seen[name]}seen[name]={};if(!registry[name]){throw new Error("Could not find module "+name)}var mod=registry[name],deps=mod.deps,callback=mod.callback,reified=[],exports;for(var i=0,l=deps.length;i<l;i++){if(deps[i]==="exports"){reified.push(exports={})}else{reified.push(requireModule(resolve(deps[i])))}}var value=callback.apply(this,reified);return seen[name]=exports||value;function resolve(child){if(child.charAt(0)!=="."){return child}var parts=child.split("/");var parentBase=name.split("/").slice(0,-1);for(var i=0,l=parts.length;i<l;i++){var part=parts[i];if(part===".."){parentBase.pop()}else if(part==="."){continue}else{parentBase.push(part)}}return parentBase.join("/")}}})();define("router/handler-info",["./utils","rsvp/promise","exports"],function(__dependency1__,__dependency2__,__exports__){"use strict";var bind=__dependency1__.bind;var merge=__dependency1__.merge;var oCreate=__dependency1__.oCreate;var serialize=__dependency1__.serialize;var promiseLabel=__dependency1__.promiseLabel;var Promise=__dependency2__["default"];function HandlerInfo(props){if(props){merge(this,props)}}HandlerInfo.prototype={name:null,handler:null,params:null,context:null,log:function(payload,message){if(payload.log){payload.log(this.name+": "+message)}},promiseLabel:function(label){return promiseLabel("'"+this.name+"' "+label)},getUnresolved:function(){return this},resolve:function(async,shouldContinue,payload){var checkForAbort=bind(this.checkForAbort,this,shouldContinue),beforeModel=bind(this.runBeforeModelHook,this,async,payload),model=bind(this.getModel,this,async,payload),afterModel=bind(this.runAfterModelHook,this,async,payload),becomeResolved=bind(this.becomeResolved,this,payload);return Promise.resolve(undefined,this.promiseLabel("Start handler")).then(checkForAbort,null,this.promiseLabel("Check for abort")).then(beforeModel,null,this.promiseLabel("Before model")).then(checkForAbort,null,this.promiseLabel("Check if aborted during 'beforeModel' hook")).then(model,null,this.promiseLabel("Model")).then(checkForAbort,null,this.promiseLabel("Check if aborted in 'model' hook")).then(afterModel,null,this.promiseLabel("After model")).then(checkForAbort,null,this.promiseLabel("Check if aborted in 'afterModel' hook")).then(becomeResolved,null,this.promiseLabel("Become resolved"))},runBeforeModelHook:function(async,payload){if(payload.trigger){payload.trigger(true,"willResolveModel",payload,this.handler)}return this.runSharedModelHook(async,payload,"beforeModel",[])},runAfterModelHook:function(async,payload,resolvedModel){var name=this.name;this.stashResolvedModel(payload,resolvedModel);return this.runSharedModelHook(async,payload,"afterModel",[resolvedModel]).then(function(){return payload.resolvedModels[name]},null,this.promiseLabel("Ignore fulfillment value and return model value"))},runSharedModelHook:function(async,payload,hookName,args){this.log(payload,"calling "+hookName+" hook");if(this.queryParams){args.push(this.queryParams)}args.push(payload);var handler=this.handler;return async(function(){return handler[hookName]&&handler[hookName].apply(handler,args)},this.promiseLabel("Handle "+hookName))},getModel:function(payload){throw new Error("This should be overridden by a subclass of HandlerInfo")},checkForAbort:function(shouldContinue,promiseValue){return Promise.resolve(shouldContinue(),this.promiseLabel("Check for abort")).then(function(){return promiseValue},null,this.promiseLabel("Ignore fulfillment value and continue"))},stashResolvedModel:function(payload,resolvedModel){payload.resolvedModels=payload.resolvedModels||{};payload.resolvedModels[this.name]=resolvedModel},becomeResolved:function(payload,resolvedContext){var params=this.params||serialize(this.handler,resolvedContext,this.names);if(payload){this.stashResolvedModel(payload,resolvedContext);payload.params=payload.params||{};payload.params[this.name]=params}return new ResolvedHandlerInfo({context:resolvedContext,name:this.name,handler:this.handler,params:params})},shouldSupercede:function(other){if(!other){return true}var contextsMatch=other.context===this.context;return other.name!==this.name||this.hasOwnProperty("context")&&!contextsMatch||this.hasOwnProperty("params")&&!paramsMatch(this.params,other.params)}};function ResolvedHandlerInfo(props){HandlerInfo.call(this,props)}ResolvedHandlerInfo.prototype=oCreate(HandlerInfo.prototype);ResolvedHandlerInfo.prototype.resolve=function(async,shouldContinue,payload){if(payload&&payload.resolvedModels){payload.resolvedModels[this.name]=this.context}return Promise.resolve(this,this.promiseLabel("Resolve"))};ResolvedHandlerInfo.prototype.getUnresolved=function(){return new UnresolvedHandlerInfoByParam({name:this.name,handler:this.handler,params:this.params})};function UnresolvedHandlerInfoByParam(props){HandlerInfo.call(this,props);this.params=this.params||{}}UnresolvedHandlerInfoByParam.prototype=oCreate(HandlerInfo.prototype);UnresolvedHandlerInfoByParam.prototype.getModel=function(async,payload){var fullParams=this.params;if(payload&&payload.queryParams){fullParams={};merge(fullParams,this.params);fullParams.queryParams=payload.queryParams}var hookName=typeof this.handler.deserialize==="function"?"deserialize":"model";return this.runSharedModelHook(async,payload,hookName,[fullParams])};function UnresolvedHandlerInfoByObject(props){HandlerInfo.call(this,props)}UnresolvedHandlerInfoByObject.prototype=oCreate(HandlerInfo.prototype);UnresolvedHandlerInfoByObject.prototype.getModel=function(async,payload){this.log(payload,this.name+": resolving provided model");return Promise.resolve(this.context)};function paramsMatch(a,b){if(!a^!b){return false}if(!a){return true}for(var k in a){if(a.hasOwnProperty(k)&&a[k]!==b[k]){return false}}return true}__exports__.HandlerInfo=HandlerInfo;__exports__.ResolvedHandlerInfo=ResolvedHandlerInfo;__exports__.UnresolvedHandlerInfoByParam=UnresolvedHandlerInfoByParam;__exports__.UnresolvedHandlerInfoByObject=UnresolvedHandlerInfoByObject});define("router/router",["route-recognizer","rsvp/promise","./utils","./transition-state","./transition","./transition-intent/named-transition-intent","./transition-intent/url-transition-intent","exports"],function(__dependency1__,__dependency2__,__dependency3__,__dependency4__,__dependency5__,__dependency6__,__dependency7__,__exports__){"use strict";var RouteRecognizer=__dependency1__;var Promise=__dependency2__["default"];var trigger=__dependency3__.trigger;var log=__dependency3__.log;var slice=__dependency3__.slice;var forEach=__dependency3__.forEach;var merge=__dependency3__.merge;var serialize=__dependency3__.serialize;var extractQueryParams=__dependency3__.extractQueryParams;var getChangelist=__dependency3__.getChangelist;var promiseLabel=__dependency3__.promiseLabel;var TransitionState=__dependency4__["default"];var logAbort=__dependency5__.logAbort;var Transition=__dependency5__.Transition;var TransitionAborted=__dependency5__.TransitionAborted;var NamedTransitionIntent=__dependency6__["default"];var URLTransitionIntent=__dependency7__["default"];var pop=Array.prototype.pop;function Router(){this.recognizer=new RouteRecognizer;this.reset()}Router.prototype={map:function(callback){this.recognizer.delegate=this.delegate;this.recognizer.map(callback,function(recognizer,routes){for(var i=routes.length-1,proceed=true;i>=0&&proceed;--i){var route=routes[i];recognizer.add(routes,{as:route.handler});proceed=route.path==="/"||route.path===""||route.handler.slice(-6)===".index"}})},hasRoute:function(route){return this.recognizer.hasRoute(route)},transitionByIntent:function(intent,isIntermediate){var wasTransitioning=!!this.activeTransition;var oldState=wasTransitioning?this.activeTransition.state:this.state;var newTransition;var router=this;try{var newState=intent.applyToState(oldState,this.recognizer,this.getHandler,isIntermediate);if(handlerInfosEqual(newState.handlerInfos,oldState.handlerInfos)){var queryParamChangelist=getChangelist(oldState.queryParams,newState.queryParams);if(queryParamChangelist){this._changedQueryParams=queryParamChangelist.changed;for(var k in queryParamChangelist.removed){if(queryParamChangelist.removed.hasOwnProperty(k)){this._changedQueryParams[k]=null}}trigger(this,newState.handlerInfos,true,["queryParamsDidChange",queryParamChangelist.changed,queryParamChangelist.all,queryParamChangelist.removed]);this._changedQueryParams=null;if(!wasTransitioning&&this.activeTransition){return this.activeTransition}else{newTransition=new Transition(this);oldState.queryParams=finalizeQueryParamChange(this,newState.handlerInfos,newState.queryParams,newTransition);newTransition.promise=newTransition.promise.then(function(result){updateURL(newTransition,oldState,true);if(router.didTransition){router.didTransition(router.currentHandlerInfos)}return result},null,promiseLabel("Transition complete"));return newTransition}}return new Transition(this)}if(isIntermediate){setupContexts(this,newState);return}newTransition=new Transition(this,intent,newState);if(this.activeTransition){this.activeTransition.abort()}this.activeTransition=newTransition;newTransition.promise=newTransition.promise.then(function(result){return router.async(function(){return finalizeTransition(newTransition,result.state)},"Finalize transition")},null,promiseLabel("Settle transition promise when transition is finalized"));if(!wasTransitioning){trigger(this,this.state.handlerInfos,true,["willTransition",newTransition])}return newTransition}catch(e){return new Transition(this,intent,null,e)}},reset:function(){if(this.state){forEach(this.state.handlerInfos,function(handlerInfo){var handler=handlerInfo.handler;if(handler.exit){handler.exit()}})}this.state=new TransitionState;this.currentHandlerInfos=null},activeTransition:null,handleURL:function(url){var args=slice.call(arguments);if(url.charAt(0)!=="/"){args[0]="/"+url}return doTransition(this,args).method(null)},updateURL:function(){throw new Error("updateURL is not implemented")},replaceURL:function(url){this.updateURL(url)},transitionTo:function(name){return doTransition(this,arguments)},intermediateTransitionTo:function(name){doTransition(this,arguments,true)},refresh:function(pivotHandler){var state=this.activeTransition?this.activeTransition.state:this.state;var handlerInfos=state.handlerInfos;var params={};for(var i=0,len=handlerInfos.length;i<len;++i){var handlerInfo=handlerInfos[i];params[handlerInfo.name]=handlerInfo.params||{}}log(this,"Starting a refresh transition");var intent=new NamedTransitionIntent({name:handlerInfos[handlerInfos.length-1].name,pivotHandler:pivotHandler||handlerInfos[0].handler,contexts:[],queryParams:this._changedQueryParams||state.queryParams||{}});return this.transitionByIntent(intent,false)},replaceWith:function(name){return doTransition(this,arguments).method("replace")},generate:function(handlerName){var partitionedArgs=extractQueryParams(slice.call(arguments,1)),suppliedParams=partitionedArgs[0],queryParams=partitionedArgs[1];var intent=new NamedTransitionIntent({name:handlerName,contexts:suppliedParams});var state=intent.applyToState(this.state,this.recognizer,this.getHandler);var params={};for(var i=0,len=state.handlerInfos.length;i<len;++i){var handlerInfo=state.handlerInfos[i];var handlerParams=handlerInfo.params||serialize(handlerInfo.handler,handlerInfo.context,handlerInfo.names);merge(params,handlerParams)}params.queryParams=queryParams;return this.recognizer.generate(handlerName,params)},isActive:function(handlerName){var partitionedArgs=extractQueryParams(slice.call(arguments,1)),contexts=partitionedArgs[0],queryParams=partitionedArgs[1],activeQueryParams=this.state.queryParams;var targetHandlerInfos=this.state.handlerInfos,found=false,names,object,handlerInfo,handlerObj,i,len;if(!targetHandlerInfos.length){return false}var targetHandler=targetHandlerInfos[targetHandlerInfos.length-1].name;var recogHandlers=this.recognizer.handlersFor(targetHandler);var index=0;for(len=recogHandlers.length;index<len;++index){handlerInfo=targetHandlerInfos[index];if(handlerInfo.name===handlerName){break}}if(index===recogHandlers.length){return false}var state=new TransitionState;state.handlerInfos=targetHandlerInfos.slice(0,index+1);recogHandlers=recogHandlers.slice(0,index+1);var intent=new NamedTransitionIntent({name:targetHandler,contexts:contexts});var newState=intent.applyToHandlers(state,recogHandlers,this.getHandler,targetHandler,true,true);var activeQPsOnNewHandler={};merge(activeQPsOnNewHandler,queryParams);for(var key in activeQueryParams){if(activeQueryParams.hasOwnProperty(key)&&activeQPsOnNewHandler.hasOwnProperty(key)){activeQPsOnNewHandler[key]=activeQueryParams[key]}}return handlerInfosEqual(newState.handlerInfos,state.handlerInfos)&&!getChangelist(activeQPsOnNewHandler,queryParams)},trigger:function(name){var args=slice.call(arguments);trigger(this,this.currentHandlerInfos,false,args)},async:function(callback,label){return new Promise(function(resolve){resolve(callback())},label)},log:null};function setupContexts(router,newState,transition){var partition=partitionHandlers(router.state,newState);forEach(partition.exited,function(handlerInfo){var handler=handlerInfo.handler;delete handler.context;if(handler.exit){handler.exit()}});var oldState=router.oldState=router.state;router.state=newState;var currentHandlerInfos=router.currentHandlerInfos=partition.unchanged.slice();try{forEach(partition.updatedContext,function(handlerInfo){return handlerEnteredOrUpdated(currentHandlerInfos,handlerInfo,false,transition)});forEach(partition.entered,function(handlerInfo){return handlerEnteredOrUpdated(currentHandlerInfos,handlerInfo,true,transition)})}catch(e){router.state=oldState;router.currentHandlerInfos=oldState.handlerInfos;throw e}router.state.queryParams=finalizeQueryParamChange(router,currentHandlerInfos,newState.queryParams,transition)}function handlerEnteredOrUpdated(currentHandlerInfos,handlerInfo,enter,transition){var handler=handlerInfo.handler,context=handlerInfo.context;if(enter&&handler.enter){handler.enter(transition)}if(transition&&transition.isAborted){throw new TransitionAborted}handler.context=context;if(handler.contextDidChange){handler.contextDidChange()}if(handler.setup){handler.setup(context,transition)}if(transition&&transition.isAborted){throw new TransitionAborted}currentHandlerInfos.push(handlerInfo);return true}function partitionHandlers(oldState,newState){var oldHandlers=oldState.handlerInfos;var newHandlers=newState.handlerInfos;var handlers={updatedContext:[],exited:[],entered:[],unchanged:[]};var handlerChanged,contextChanged,queryParamsChanged,i,l;for(i=0,l=newHandlers.length;i<l;i++){var oldHandler=oldHandlers[i],newHandler=newHandlers[i];if(!oldHandler||oldHandler.handler!==newHandler.handler){handlerChanged=true}if(handlerChanged){handlers.entered.push(newHandler);if(oldHandler){handlers.exited.unshift(oldHandler)}}else if(contextChanged||oldHandler.context!==newHandler.context||queryParamsChanged){contextChanged=true;handlers.updatedContext.push(newHandler)}else{handlers.unchanged.push(oldHandler)}}for(i=newHandlers.length,l=oldHandlers.length;i<l;i++){handlers.exited.unshift(oldHandlers[i])}return handlers}function updateURL(transition,state,inputUrl){var urlMethod=transition.urlMethod;if(!urlMethod){return}var router=transition.router,handlerInfos=state.handlerInfos,handlerName=handlerInfos[handlerInfos.length-1].name,params={};for(var i=handlerInfos.length-1;i>=0;--i){var handlerInfo=handlerInfos[i];merge(params,handlerInfo.params);if(handlerInfo.handler.inaccessibleByURL){urlMethod=null}}if(urlMethod){params.queryParams=transition._visibleQueryParams||state.queryParams;var url=router.recognizer.generate(handlerName,params);if(urlMethod==="replace"){router.replaceURL(url)}else{router.updateURL(url)}}}function finalizeTransition(transition,newState){try{log(transition.router,transition.sequence,"Resolved all models on destination route; finalizing transition.");var router=transition.router,handlerInfos=newState.handlerInfos,seq=transition.sequence;setupContexts(router,newState,transition);if(transition.isAborted){router.state.handlerInfos=router.currentHandlerInfos;return Promise.reject(logAbort(transition))}updateURL(transition,newState,transition.intent.url);transition.isActive=false;router.activeTransition=null;trigger(router,router.currentHandlerInfos,true,["didTransition"]);if(router.didTransition){router.didTransition(router.currentHandlerInfos)}log(router,transition.sequence,"TRANSITION COMPLETE.");return handlerInfos[handlerInfos.length-1].handler}catch(e){if(!(e instanceof TransitionAborted)){var infos=transition.state.handlerInfos;transition.trigger(true,"error",e,transition,infos[infos.length-1].handler);transition.abort()}throw e}}function doTransition(router,args,isIntermediate){var name=args[0]||"/";var lastArg=args[args.length-1];var queryParams={};if(lastArg&&lastArg.hasOwnProperty("queryParams")){queryParams=pop.call(args).queryParams}var intent;if(args.length===0){log(router,"Updating query params");var handlerInfos=router.state.handlerInfos;intent=new NamedTransitionIntent({name:handlerInfos[handlerInfos.length-1].name,contexts:[],queryParams:queryParams})}else if(name.charAt(0)==="/"){log(router,"Attempting URL transition to "+name);intent=new URLTransitionIntent({url:name})}else{log(router,"Attempting transition to "+name);intent=new NamedTransitionIntent({name:args[0],contexts:slice.call(args,1),queryParams:queryParams})}return router.transitionByIntent(intent,isIntermediate)}function handlerInfosEqual(handlerInfos,otherHandlerInfos){if(handlerInfos.length!==otherHandlerInfos.length){return false}for(var i=0,len=handlerInfos.length;i<len;++i){if(handlerInfos[i]!==otherHandlerInfos[i]){return false}}return true}function finalizeQueryParamChange(router,resolvedHandlers,newQueryParams,transition){for(var k in newQueryParams){if(newQueryParams.hasOwnProperty(k)&&newQueryParams[k]===null){delete newQueryParams[k]}}var finalQueryParamsArray=[];trigger(router,resolvedHandlers,true,["finalizeQueryParamChange",newQueryParams,finalQueryParamsArray,transition]);if(transition){transition._visibleQueryParams={}}var finalQueryParams={};for(var i=0,len=finalQueryParamsArray.length;i<len;++i){var qp=finalQueryParamsArray[i];finalQueryParams[qp.key]=qp.value;if(transition&&qp.visible!==false){transition._visibleQueryParams[qp.key]=qp.value}}return finalQueryParams}__exports__["default"]=Router});define("router/transition-intent",["./utils","exports"],function(__dependency1__,__exports__){"use strict";var merge=__dependency1__.merge;function TransitionIntent(props){if(props){merge(this,props)}this.data=this.data||{}}TransitionIntent.prototype.applyToState=function(oldState){return oldState};__exports__["default"]=TransitionIntent});define("router/transition-intent/named-transition-intent",["../transition-intent","../transition-state","../handler-info","../utils","exports"],function(__dependency1__,__dependency2__,__dependency3__,__dependency4__,__exports__){"use strict";var TransitionIntent=__dependency1__["default"];var TransitionState=__dependency2__["default"];var UnresolvedHandlerInfoByParam=__dependency3__.UnresolvedHandlerInfoByParam;var UnresolvedHandlerInfoByObject=__dependency3__.UnresolvedHandlerInfoByObject;var isParam=__dependency4__.isParam;var forEach=__dependency4__.forEach;var extractQueryParams=__dependency4__.extractQueryParams;var oCreate=__dependency4__.oCreate;var merge=__dependency4__.merge;function NamedTransitionIntent(props){TransitionIntent.call(this,props)}NamedTransitionIntent.prototype=oCreate(TransitionIntent.prototype);NamedTransitionIntent.prototype.applyToState=function(oldState,recognizer,getHandler,isIntermediate){var partitionedArgs=extractQueryParams([this.name].concat(this.contexts)),pureArgs=partitionedArgs[0],queryParams=partitionedArgs[1],handlers=recognizer.handlersFor(pureArgs[0]);var targetRouteName=handlers[handlers.length-1].handler;return this.applyToHandlers(oldState,handlers,getHandler,targetRouteName,isIntermediate)};NamedTransitionIntent.prototype.applyToHandlers=function(oldState,handlers,getHandler,targetRouteName,isIntermediate,checkingIfActive){var i;var newState=new TransitionState;var objects=this.contexts.slice(0);var invalidateIndex=handlers.length;if(this.pivotHandler){for(i=0;i<handlers.length;++i){if(getHandler(handlers[i].handler)===this.pivotHandler){invalidateIndex=i;break}}}var pivotHandlerFound=!this.pivotHandler;for(i=handlers.length-1;i>=0;--i){var result=handlers[i];var name=result.handler;var handler=getHandler(name);var oldHandlerInfo=oldState.handlerInfos[i];var newHandlerInfo=null;if(result.names.length>0){if(i>=invalidateIndex){newHandlerInfo=this.createParamHandlerInfo(name,handler,result.names,objects,oldHandlerInfo)}else{newHandlerInfo=this.getHandlerInfoForDynamicSegment(name,handler,result.names,objects,oldHandlerInfo,targetRouteName)}}else{newHandlerInfo=this.createParamHandlerInfo(name,handler,result.names,objects,oldHandlerInfo)}if(checkingIfActive){newHandlerInfo=newHandlerInfo.becomeResolved(null,newHandlerInfo.context);var oldContext=oldHandlerInfo&&oldHandlerInfo.context;if(result.names.length>0&&newHandlerInfo.context===oldContext){newHandlerInfo.params=oldHandlerInfo&&oldHandlerInfo.params}newHandlerInfo.context=oldContext}var handlerToUse=oldHandlerInfo;if(i>=invalidateIndex||newHandlerInfo.shouldSupercede(oldHandlerInfo)){invalidateIndex=Math.min(i,invalidateIndex);handlerToUse=newHandlerInfo}if(isIntermediate&&!checkingIfActive){handlerToUse=handlerToUse.becomeResolved(null,handlerToUse.context)
}newState.handlerInfos.unshift(handlerToUse)}if(objects.length>0){throw new Error("More context objects were passed than there are dynamic segments for the route: "+targetRouteName)}if(!isIntermediate){this.invalidateChildren(newState.handlerInfos,invalidateIndex)}merge(newState.queryParams,oldState.queryParams);merge(newState.queryParams,this.queryParams||{});return newState};NamedTransitionIntent.prototype.invalidateChildren=function(handlerInfos,invalidateIndex){for(var i=invalidateIndex,l=handlerInfos.length;i<l;++i){var handlerInfo=handlerInfos[i];handlerInfos[i]=handlerInfos[i].getUnresolved()}};NamedTransitionIntent.prototype.getHandlerInfoForDynamicSegment=function(name,handler,names,objects,oldHandlerInfo,targetRouteName){var numNames=names.length;var objectToUse;if(objects.length>0){objectToUse=objects[objects.length-1];if(isParam(objectToUse)){return this.createParamHandlerInfo(name,handler,names,objects,oldHandlerInfo)}else{objects.pop()}}else if(oldHandlerInfo&&oldHandlerInfo.name===name){return oldHandlerInfo}else{return oldHandlerInfo}return new UnresolvedHandlerInfoByObject({name:name,handler:handler,context:objectToUse,names:names})};NamedTransitionIntent.prototype.createParamHandlerInfo=function(name,handler,names,objects,oldHandlerInfo){var params={};var numNames=names.length;while(numNames--){var oldParams=oldHandlerInfo&&name===oldHandlerInfo.name&&oldHandlerInfo.params||{};var peek=objects[objects.length-1];var paramName=names[numNames];if(isParam(peek)){params[paramName]=""+objects.pop()}else{if(oldParams.hasOwnProperty(paramName)){params[paramName]=oldParams[paramName]}else{throw new Error("You didn't provide enough string/numeric parameters to satisfy all of the dynamic segments for route "+name)}}}return new UnresolvedHandlerInfoByParam({name:name,handler:handler,params:params})};__exports__["default"]=NamedTransitionIntent});define("router/transition-intent/url-transition-intent",["../transition-intent","../transition-state","../handler-info","../utils","exports"],function(__dependency1__,__dependency2__,__dependency3__,__dependency4__,__exports__){"use strict";var TransitionIntent=__dependency1__["default"];var TransitionState=__dependency2__["default"];var UnresolvedHandlerInfoByParam=__dependency3__.UnresolvedHandlerInfoByParam;var oCreate=__dependency4__.oCreate;var merge=__dependency4__.merge;function URLTransitionIntent(props){TransitionIntent.call(this,props)}URLTransitionIntent.prototype=oCreate(TransitionIntent.prototype);URLTransitionIntent.prototype.applyToState=function(oldState,recognizer,getHandler){var newState=new TransitionState;var results=recognizer.recognize(this.url),queryParams={},i,len;if(!results){throw new UnrecognizedURLError(this.url)}var statesDiffer=false;for(i=0,len=results.length;i<len;++i){var result=results[i];var name=result.handler;var handler=getHandler(name);if(handler.inaccessibleByURL){throw new UnrecognizedURLError(this.url)}var newHandlerInfo=new UnresolvedHandlerInfoByParam({name:name,handler:handler,params:result.params});var oldHandlerInfo=oldState.handlerInfos[i];if(statesDiffer||newHandlerInfo.shouldSupercede(oldHandlerInfo)){statesDiffer=true;newState.handlerInfos[i]=newHandlerInfo}else{newState.handlerInfos[i]=oldHandlerInfo}}merge(newState.queryParams,results.queryParams);return newState};function UnrecognizedURLError(message){this.message=message||"UnrecognizedURLError";this.name="UnrecognizedURLError"}__exports__["default"]=URLTransitionIntent});define("router/transition-state",["./handler-info","./utils","rsvp/promise","exports"],function(__dependency1__,__dependency2__,__dependency3__,__exports__){"use strict";var ResolvedHandlerInfo=__dependency1__.ResolvedHandlerInfo;var forEach=__dependency2__.forEach;var promiseLabel=__dependency2__.promiseLabel;var Promise=__dependency3__["default"];function TransitionState(other){this.handlerInfos=[];this.queryParams={};this.params={}}TransitionState.prototype={handlerInfos:null,queryParams:null,params:null,promiseLabel:function(label){var targetName="";forEach(this.handlerInfos,function(handlerInfo){if(targetName!==""){targetName+="."}targetName+=handlerInfo.name});return promiseLabel("'"+targetName+"': "+label)},resolve:function(async,shouldContinue,payload){var self=this;var params=this.params;forEach(this.handlerInfos,function(handlerInfo){params[handlerInfo.name]=handlerInfo.params||{}});payload=payload||{};payload.resolveIndex=0;var currentState=this;var wasAborted=false;return Promise.resolve(null,this.promiseLabel("Start transition")).then(resolveOneHandlerInfo,null,this.promiseLabel("Resolve handler"))["catch"](handleError,this.promiseLabel("Handle error"));function innerShouldContinue(){return Promise.resolve(shouldContinue(),promiseLabel("Check if should continue"))["catch"](function(reason){wasAborted=true;return Promise.reject(reason)},promiseLabel("Handle abort"))}function handleError(error){var handlerInfos=currentState.handlerInfos;var errorHandlerIndex=payload.resolveIndex>=handlerInfos.length?handlerInfos.length-1:payload.resolveIndex;return Promise.reject({error:error,handlerWithError:currentState.handlerInfos[errorHandlerIndex].handler,wasAborted:wasAborted,state:currentState})}function proceed(resolvedHandlerInfo){currentState.handlerInfos[payload.resolveIndex++]=resolvedHandlerInfo;var handler=resolvedHandlerInfo.handler;if(handler&&handler.redirect){handler.redirect(resolvedHandlerInfo.context,payload)}return innerShouldContinue().then(resolveOneHandlerInfo,null,promiseLabel("Resolve handler"))}function resolveOneHandlerInfo(){if(payload.resolveIndex===currentState.handlerInfos.length){return{error:null,state:currentState}}var handlerInfo=currentState.handlerInfos[payload.resolveIndex];return handlerInfo.resolve(async,innerShouldContinue,payload).then(proceed,null,promiseLabel("Proceed"))}}};__exports__["default"]=TransitionState});define("router/transition",["rsvp/promise","./handler-info","./utils","exports"],function(__dependency1__,__dependency2__,__dependency3__,__exports__){"use strict";var Promise=__dependency1__["default"];var ResolvedHandlerInfo=__dependency2__.ResolvedHandlerInfo;var trigger=__dependency3__.trigger;var slice=__dependency3__.slice;var log=__dependency3__.log;var promiseLabel=__dependency3__.promiseLabel;function Transition(router,intent,state,error){var transition=this;this.state=state||router.state;this.intent=intent;this.router=router;this.data=this.intent&&this.intent.data||{};this.resolvedModels={};this.queryParams={};if(error){this.promise=Promise.reject(error);return}if(state){this.params=state.params;this.queryParams=state.queryParams;var len=state.handlerInfos.length;if(len){this.targetName=state.handlerInfos[state.handlerInfos.length-1].name}for(var i=0;i<len;++i){var handlerInfo=state.handlerInfos[i];if(!(handlerInfo instanceof ResolvedHandlerInfo)){break}this.pivotHandler=handlerInfo.handler}this.sequence=Transition.currentSequence++;this.promise=state.resolve(router.async,checkForAbort,this)["catch"](function(result){if(result.wasAborted){return Promise.reject(logAbort(transition))}else{transition.trigger("error",result.error,transition,result.handlerWithError);transition.abort();return Promise.reject(result.error)}},promiseLabel("Handle Abort"))}else{this.promise=Promise.resolve(this.state);this.params={}}function checkForAbort(){if(transition.isAborted){return Promise.reject(undefined,promiseLabel("Transition aborted - reject"))}}}Transition.currentSequence=0;Transition.prototype={targetName:null,urlMethod:"update",intent:null,params:null,pivotHandler:null,resolveIndex:0,handlerInfos:null,resolvedModels:null,isActive:true,state:null,promise:null,data:null,then:function(success,failure){return this.promise.then(success,failure)},abort:function(){if(this.isAborted){return this}log(this.router,this.sequence,this.targetName+": transition was aborted");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(method){this.urlMethod=method;return this},trigger:function(ignoreFailure){var args=slice.call(arguments);if(typeof ignoreFailure==="boolean"){args.shift()}else{ignoreFailure=false}trigger(this.router,this.state.handlerInfos.slice(0,this.resolveIndex+1),ignoreFailure,args)},followRedirects:function(){var router=this.router;return this.promise["catch"](function(reason){if(router.activeTransition){return router.activeTransition.followRedirects()}return Promise.reject(reason)})},toString:function(){return"Transition (sequence "+this.sequence+")"},log:function(message){log(this.router,this.sequence,message)}};Transition.prototype.send=Transition.prototype.trigger;function logAbort(transition){log(transition.router,transition.sequence,"detected abort.");return new TransitionAborted}function TransitionAborted(message){this.message=message||"TransitionAborted";this.name="TransitionAborted"}__exports__.Transition=Transition;__exports__.logAbort=logAbort;__exports__.TransitionAborted=TransitionAborted});define("router/utils",["exports"],function(__exports__){"use strict";var slice=Array.prototype.slice;var _isArray;if(!Array.isArray){_isArray=function(x){return Object.prototype.toString.call(x)==="[object Array]"}}else{_isArray=Array.isArray}var isArray=_isArray;__exports__.isArray=isArray;function merge(hash,other){for(var prop in other){if(other.hasOwnProperty(prop)){hash[prop]=other[prop]}}}var oCreate=Object.create||function(proto){function F(){}F.prototype=proto;return new F};__exports__.oCreate=oCreate;function extractQueryParams(array){var len=array&&array.length,head,queryParams;if(len&&len>0&&array[len-1]&&array[len-1].hasOwnProperty("queryParams")){queryParams=array[len-1].queryParams;head=slice.call(array,0,len-1);return[head,queryParams]}else{return[array,null]}}__exports__.extractQueryParams=extractQueryParams;function coerceQueryParamsToString(queryParams){for(var key in queryParams){if(typeof queryParams[key]==="number"){queryParams[key]=""+queryParams[key]}else if(isArray(queryParams[key])){for(var i=0,l=queryParams[key].length;i<l;i++){queryParams[key][i]=""+queryParams[key][i]}}}}function log(router,sequence,msg){if(!router.log){return}if(arguments.length===3){router.log("Transition #"+sequence+": "+msg)}else{msg=sequence;router.log(msg)}}__exports__.log=log;function bind(fn,context){var boundArgs=arguments;return function(value){var args=slice.call(boundArgs,2);args.push(value);return fn.apply(context,args)}}__exports__.bind=bind;function isParam(object){return typeof object==="string"||object instanceof String||typeof object==="number"||object instanceof Number}function forEach(array,callback){for(var i=0,l=array.length;i<l&&false!==callback(array[i]);i++){}}__exports__.forEach=forEach;function serialize(handler,model,names){var object={};if(isParam(model)){object[names[0]]=model;return object}if(handler.serialize){return handler.serialize(model,names)}if(names.length!==1){return}var name=names[0];if(/_id$/.test(name)){object[name]=model.id}else{object[name]=model}return object}__exports__.serialize=serialize;function trigger(router,handlerInfos,ignoreFailure,args){if(router.triggerEvent){router.triggerEvent(handlerInfos,ignoreFailure,args);return}var name=args.shift();if(!handlerInfos){if(ignoreFailure){return}throw new Error("Could not trigger event '"+name+"'. There are no active handlers")}var eventWasHandled=false;for(var i=handlerInfos.length-1;i>=0;i--){var handlerInfo=handlerInfos[i],handler=handlerInfo.handler;if(handler.events&&handler.events[name]){if(handler.events[name].apply(handler,args)===true){eventWasHandled=true}else{return}}}if(!eventWasHandled&&!ignoreFailure){throw new Error("Nothing handled the event '"+name+"'.")}}__exports__.trigger=trigger;function getChangelist(oldObject,newObject){var key;var results={all:{},changed:{},removed:{}};merge(results.all,newObject);var didChange=false;coerceQueryParamsToString(oldObject);coerceQueryParamsToString(newObject);for(key in oldObject){if(oldObject.hasOwnProperty(key)){if(!newObject.hasOwnProperty(key)){didChange=true;results.removed[key]=oldObject[key]}}}for(key in newObject){if(newObject.hasOwnProperty(key)){if(isArray(oldObject[key])&&isArray(newObject[key])){if(oldObject[key].length!==newObject[key].length){results.changed[key]=newObject[key];didChange=true}else{for(var i=0,l=oldObject[key].length;i<l;i++){if(oldObject[key][i]!==newObject[key][i]){results.changed[key]=newObject[key];didChange=true}}}}else{if(oldObject[key]!==newObject[key]){results.changed[key]=newObject[key];didChange=true}}}}return didChange&&results}__exports__.getChangelist=getChangelist;function promiseLabel(label){return"Router: "+label}__exports__.promiseLabel=promiseLabel;__exports__.merge=merge;__exports__.slice=slice;__exports__.isParam=isParam;__exports__.coerceQueryParamsToString=coerceQueryParamsToString});define("router",["./router/router","exports"],function(__dependency1__,__exports__){"use strict";var Router=__dependency1__["default"];__exports__["default"]=Router});define("route-recognizer",[],function(){return RouteRecognizer});define("rsvp/promise",[],function(){return RSVP});return requireModule("router").default}(window,{"default":require("./promise")},require("./route-recognizer"))})})(typeof define==="function"&&define.amd?define:function(factory){module.exports=factory(require)})},{"./promise":9,"./route-recognizer":10}],cherrytree:[function(require,module,exports){(function(define){"use strict";define(function(require){var _=require("./lib/util");var Router=require("./vendor/router");var BaseRoute=require("./route");var RouterDSL=require("./lib/dsl");var handlerCreator=require("./lib/handler_creator");var noneLocation=require("./location/none_location");var CherrytreeRoute=function(){this.initialize.apply(this,arguments)};_.extend(CherrytreeRoute.prototype,{initialize:function(options){var router=this;this.router=new Router;this.router.log=this.log;this.resolvers={};this.routes={};this.options=_.extend({location:noneLocation(),logging:false,onDidTransition:null,onURLChanged:null,BaseRoute:BaseRoute,resolver:function(name,cb){cb(router.routes[name])},map:null},options);if(this.options.routes){this.routes=this.options.routes}if(this.options.resolver){this.resolvers["application"]=this.options.resolver}if(this.options.logging){this.log=function(){console&&console.log.apply(console,arguments)}}if(this.options.map){this.map(this.options.map)}},map:function(callback){var router=this.router;var dsl=RouterDSL.map(function(){this.resource("application",{path:"/"},function(){callback.call(this)})});router.map(dsl.generate());_.extend(this.resolvers,dsl.resolvers);return this},startRouting:function(){var self=this;var router=this.router;var location=this.location=this.options.location||noneLocation();setupRouter(this,router,location);location.onChange(function(url){self.handleURL(url)});return this.handleURL(location.getURL())},transitionTo:function(){var args=[].slice.call(arguments);return doTransition(this,"transitionTo",args)},replaceWith:function(){var args=[].slice.call(arguments);return doTransition(this,"replaceWith",args)},generate:function(){var url=this.router.generate.apply(this.router,arguments);return this.location.formatURL(url)},isActive:function(routeName){var router=this.router;return router.isActive.apply(router,arguments)},send:function(name,context){this.router.trigger.apply(this.router,arguments)},hasRoute:function(route){return this.router.hasRoute(route)},getBranchNames:function(name){if(name==="application"){return["application"]}else if(name==="loading"){return["application","loading"]}else{var names=this.router.recognizer.names[name];return _.pluck(names.handlers,"handler")}},activeRoutes:function(name){var activeRoutes=_.pluck(_.pluck(this.router.currentHandlerInfos,"handler"),"route");if(name){for(var i=0,length=activeRoutes.length;i<length;i++){if(activeRoutes[i].name===name){return activeRoutes[i]}}}else{return activeRoutes}},activeRouteNames:function(){return _.pluck(_.pluck(_.pluck(this.router.currentHandlerInfos,"handler"),"route"),"name")},destroy:function(){if(this.location.destroy){this.location.destroy()}},log:function(){},didTransition:function(infos){if(this.options.onDidTransition){this.options.onDidTransition(routePath(infos))}},handleURL:function(url){scheduleLoadingRouteEntry(this);var self=this;return this.router.handleURL(url).then(function(){transitionCompleted(self)},function(err){transitionFailed(err,self);return err})},reset:function(){this.router.reset()}});return CherrytreeRoute;function assert(desc,test){if(!test)throw new Error("assertion failed: "+desc)}function routePath(handlerInfos){var path=[];for(var i=1,l=handlerInfos.length;i<l;i++){var name=handlerInfos[i].name,nameParts=name.split(".");path.push(nameParts[nameParts.length-1])}return path.join(".")}function setupRouter(cherrytree,router,location){router.getHandler=handlerCreator(cherrytree);router.updateURL=function(path){location.setURL(path)};router.replaceURL=function(path){location.replaceURL(path)};router.didTransition=function(infos){cherrytree.didTransition(infos)}}function doTransition(router,method,args){args=[].slice.call(args);args[0]=args[0]||"/";var passedName=args[0],name;if(passedName.charAt(0)==="/"){name=passedName}else{if(!router.router.hasRoute(passedName)){name=args[0]=passedName+".index"}else{name=passedName}assert("The route "+passedName+" was not found",router.router.hasRoute(name))}scheduleLoadingRouteEntry(router);var transitionPromise=router.router[method].apply(router.router,args);transitionPromise.then(function(){transitionCompleted(router)},function(err){transitionFailed(err,router);return err});return transitionPromise}function scheduleLoadingRouteEntry(router){if(router._loadingRouteActive){return}router._shouldEnterLoadingRoute=true;setTimeout(function(){enterLoadingRoute(router)},1)}function enterLoadingRoute(router){if(router._loadingRouteActive||!router._shouldEnterLoadingRoute){return}var loadingRoute=router.router.getHandler("loading");if(loadingRoute){if(loadingRoute.model){loadingRoute.model()}if(loadingRoute.enter){loadingRoute.enter()}if(loadingRoute.setup){loadingRoute.setup()}router._loadingRouteActive=true}}function exitLoadingRoute(router){router._shouldEnterLoadingRoute=false;if(!router._loadingRouteActive){return}var loadingRoute=router.router.getHandler("loading");if(loadingRoute&&loadingRoute.exit){loadingRoute.exit()}router._loadingRouteActive=false}function transitionCompleted(router){exitLoadingRoute(router);if(router.options.onURLChanged){router.options.onURLChanged(router.location.getURL())}}function transitionFailed(err,router){if(!router.router.activeTransition){transitionCompleted(router)}if(err.name!=="TransitionAborted"){console&&console.error(err.stack?err.stack:err)}}})})(typeof define==="function"&&define.amd?define:function(factory){module.exports=factory(require)})},{"./lib/dsl":2,"./lib/handler_creator":3,"./lib/util":6,"./location/none_location":7,"./route":8,"./vendor/router":11}]},{},[]);require=function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s}({1:[function(require,module,exports){(function(define){"use strict";define(function(){var _={};var breaker={};var ArrayProto=Array.prototype;var slice=ArrayProto.slice;var nativeMap=ArrayProto.map;var nativeForEach=ArrayProto.forEach;var nativeKeys=Object.keys;_.keys=nativeKeys||function(obj){if(obj!==Object(obj))throw new TypeError("Invalid object");var keys=[];for(var key in obj)if(_.has(obj,key))keys.push(key);return keys};var each=_.each=function(obj,iterator,context){if(obj===null)return;var i,length;if(nativeForEach&&obj.forEach===nativeForEach){obj.forEach(iterator,context)}else if(obj.length===+obj.length){for(i=0,length=obj.length;i<length;i++){if(iterator.call(context,obj[i],i,obj)===breaker)return}}else{var keys=_.keys(obj);for(i=0,length=keys.length;i<length;i++){if(iterator.call(context,obj[keys[i]],keys[i],obj)===breaker)return}}};_.map=function(obj,iterator,context){var results=[];if(obj===null)return results;if(nativeMap&&obj.map===nativeMap)return obj.map(iterator,context);each(obj,function(value,index,list){results.push(iterator.call(context,value,index,list))});return results};_.extend=function(obj){each(slice.call(arguments,1),function(source){if(source){for(var prop in source){obj[prop]=source[prop]}}});return obj};_.pluck=function(obj,key){return _.map(obj,function(value){return value[key]})};var idCounter=0;_.uniqueId=function uniqueId(prefix){var id=++idCounter+"";return prefix?prefix+id:id};return _})})(typeof define==="function"&&define.amd?define:function(factory){module.exports=factory(require)})},{}],2:[function(require,module,exports){(function(define){"use strict";define(function(){var exp={};var bind=window.addEventListener?"addEventListener":"attachEvent",unbind=window.removeEventListener?"removeEventListener":"detachEvent",prefix=bind!=="addEventListener"?"on":"";exp.bind=function(el,type,fn,capture){el[bind](prefix+type,fn,capture||false);return fn};exp.unbind=function(el,type,fn,capture){el[unbind](prefix+type,fn,capture||false);return fn};return exp})})(typeof define==="function"&&define.amd?define:function(factory){module.exports=factory(require)})},{}],3:[function(require,module,exports){(function(define){"use strict";define(function(require){var events=require("./events");var exports={};var link=function(element){element={parentNode:element};var root=document;while((element=element.parentNode)&&element!==document){if(element.tagName.toLowerCase()==="a"){return element}if(element===root){return}}};var delegate=function(el,type,fn){return events.bind(el,type,function(e){var target=e.target||e.srcElement;var el=link(target);if(el){fn(e,el)}})};var undelegate=function(el,type,fn){events.unbind(el,type,fn)};exports.delegate=function(el,fn){if("function"===typeof el){fn=el;el=document}delegate(el,"click",function(e,el){if(clickable(e,el))fn(e,el)})};exports.undelegate=function(el,fn){if("function"===typeof el){fn=el;el=document}undelegate(el,"click",fn)};function clickable(e,el){if(1!==which(e))return;if(e.metaKey||e.ctrlKey||e.shiftKey)return;if(e.defaultPrevented)return;if(el.target)return;if(el.getAttribute("data-bypass")!==null)return;var href=el.getAttribute("href");if(!href||href.length===0)return;if(href[0]==="#")return;if(href.indexOf("http://")===0||href.indexOf("https://")===0)return;if(href.indexOf("javascript:")===0)return;return true}function which(e){e=e||window.event;return null===e.which?e.button:e.which}return exports})})(typeof define==="function"&&define.amd?define:function(factory){module.exports=factory(require)})},{"./events":2}],4:[function(require,module,exports){(function(define){define(function(){var _={};_.extend=function extend(obj,source){for(var prop in source){obj[prop]=source[prop]}return obj};_.any=function any(arr,fn){for(var i=0,l=arr.length;i<l;i++){if(fn(arr[i])){return true}}return false};function on(obj,type,fn){if(obj.attachEvent){obj["e"+type+fn]=fn;obj[type+fn]=function(){obj["e"+type+fn](window.event)};obj.attachEvent("on"+type,obj[type+fn])}else{obj.addEventListener(type,fn,false)}}function off(obj,type,fn){if(obj.detachEvent){obj.detachEvent("on"+type,obj[type+fn]);obj[type+fn]=null}else{obj.removeEventListener(type,fn,false)}}var History=function(){this.handlers=[];var self=this;var checkUrl=this.checkUrl;this.checkUrl=function(){checkUrl.apply(self,arguments)};if(typeof window!=="undefined"){this.location=window.location;this.history=window.history}};var routeStripper=/^[#\/]|\s+$/g;var rootStripper=/^\/+|\/+$/g;var isExplorer=/msie [\w.]+/;var trailingSlash=/\/$/;var pathStripper=/#.*$/;History.started=false;_.extend(History.prototype,{interval:50,atRoot:function(){return this.location.pathname.replace(/[^\/]$/,"$&/")===this.root},getHash:function(window){var match=(window||this).location.href.match(/#(.*)$/);return match?match[1]:""},getFragment:function(fragment,forcePushState){if(fragment==null){if(this._hasPushState||!this._wantsHashChange||forcePushState){fragment=decodeURI(this.location.pathname+this.location.search);var root=this.root.replace(trailingSlash,"");if(!fragment.indexOf(root))fragment=fragment.slice(root.length)}else{fragment=this.getHash()}}return fragment.replace(routeStripper,"")},start:function(options){if(History.started)throw new Error("LocationBar has already been started");History.started=true;this.options=_.extend({root:"/"},options);this.root=this.options.root;this._wantsHashChange=this.options.hashChange!==false;this._wantsPushState=!!this.options.pushState;this._hasPushState=!!(this.options.pushState&&this.history&&this.history.pushState);var fragment=this.getFragment();var docMode=document.documentMode;var oldIE=isExplorer.exec(navigator.userAgent.toLowerCase())&&(!docMode||docMode<=7);this.root=("/"+this.root+"/").replace(rootStripper,"/");if(oldIE&&this._wantsHashChange){this.iframe=document.createElement("iframe");this.iframe.setAttribute("src","javascript:0");this.iframe.setAttribute("tabindex",-1);this.iframe.style.display="none";document.body.appendChild(this.iframe);this.iframe=this.iframe.contentWindow;this.navigate(fragment)}if(this._hasPushState){on(window,"popstate",this.checkUrl)}else if(this._wantsHashChange&&"onhashchange"in window&&!oldIE){on(window,"hashchange",this.checkUrl)}else if(this._wantsHashChange){this._checkUrlInterval=setInterval(this.checkUrl,this.interval)}this.fragment=fragment;var loc=this.location;if(this._wantsHashChange&&this._wantsPushState){if(!this._hasPushState&&!this.atRoot()){this.fragment=this.getFragment(null,true);this.location.replace(this.root+"#"+this.fragment);return true}else if(this._hasPushState&&this.atRoot()&&loc.hash){this.fragment=this.getHash().replace(routeStripper,"");this.history.replaceState({},document.title,this.root+this.fragment)}}if(!this.options.silent)return this.loadUrl()},stop:function(){off(window,"popstate",this.checkUrl);off(window,"hashchange",this.checkUrl);if(this._checkUrlInterval)clearInterval(this._checkUrlInterval);History.started=false},route:function(route,callback){this.handlers.unshift({route:route,callback:callback})},checkUrl:function(){var current=this.getFragment();if(current===this.fragment&&this.iframe){current=this.getFragment(this.getHash(this.iframe))}if(current===this.fragment)return false;if(this.iframe)this.navigate(current);this.loadUrl()},loadUrl:function(fragment){fragment=this.fragment=this.getFragment(fragment);return _.any(this.handlers,function(handler){if(handler.route.test(fragment)){handler.callback(fragment);return true}})},navigate:function(fragment,options){if(!History.started)return false;if(!options||options===true)options={trigger:!!options};var url=this.root+(fragment=this.getFragment(fragment||""));fragment=fragment.replace(pathStripper,"");if(this.fragment===fragment)return;this.fragment=fragment;if(fragment===""&&url!=="/")url=url.slice(0,-1);if(this._hasPushState){this.history[options.replace?"replaceState":"pushState"]({},document.title,url)}else if(this._wantsHashChange){this._updateHash(this.location,fragment,options.replace);if(this.iframe&&fragment!==this.getFragment(this.getHash(this.iframe))){if(!options.replace)this.iframe.document.open().close();this._updateHash(this.iframe.location,fragment,options.replace)}}else{return this.location.assign(url)}if(options.trigger)return this.loadUrl(fragment)},_updateHash:function(location,fragment,replace){if(replace){var href=location.href.replace(/(javascript:|#).*$/,"");location.replace(href+"#"+fragment)}else{location.hash="#"+fragment}}});History.prototype.update=function(){this.navigate.apply(this,arguments)};History.prototype.onChange=function(callback){this.route(/^(.*?)$/,callback)};History.prototype.hasPushState=function(){if(!History.started){throw new Error("only available after LocationBar.start()")}return this._hasPushState};return History})})(typeof define==="function"&&define.amd?define:function(factory){module.exports=factory(require)})},{}],"cherrytree/location/history_location":[function(require,module,exports){(function(define){"use strict";define(function(require){var _=require("../lib/util");var links=require("./history_location/link_delegate");var LocationBar=require("location-bar");var HistoryLocation=function(options){this.path="";this.options=_.extend({pushState:false,interceptLinks:true,root:"/"},options);var self=this;this.locationBar=new LocationBar;this.locationBar.onChange(function(path){self.handleURL("/"+(path||""))});this.locationBar.start(_.extend({},options));if(this.usesPushState()&&this.options.interceptLinks){this.interceptLinks()}};HistoryLocation.prototype.usesPushState=function(){return this.options.pushState&&this.locationBar.hasPushState()};HistoryLocation.prototype.getURL=function(){return this.path};HistoryLocation.prototype.setURL=function(path){if(this.path!==path){this.path=path;this.locationBar.update(path,{trigger:false})}};HistoryLocation.prototype.replaceURL=function(path){if(this.path!==path){this.path=path;this.locationBar.update(path,{trigger:false,replace:true})}};HistoryLocation.prototype.onChange=function(callback){this.changeCallback=callback};HistoryLocation.prototype.formatURL=function(path){if(this.locationBar.hasPushState()){var rootURL=this.options.root;if(path!==""){rootURL=rootURL.replace(/\/$/,"")}return rootURL+path}else{if(path[0]==="/"){path=path.substr(1)}return"#"+path}};HistoryLocation.prototype.destroy=function(){this.locationBar.stop();if(this.linkHandler){links.undelegate(this.linkHandler)}};HistoryLocation.prototype.interceptLinks=function(){var self=this;this.linkHandler=function(e,link){e.preventDefault();self.navigate(link.getAttribute("href"))};links.delegate(this.linkHandler)};HistoryLocation.prototype.navigate=function(url){this.locationBar.update(url,{trigger:true})};HistoryLocation.prototype.handleURL=function(url){this.path=url;if(this.changeCallback){this.changeCallback(url)}};return HistoryLocation})})(typeof define==="function"&&define.amd?define:function(factory){module.exports=factory(require)})},{"../lib/util":1,"./history_location/link_delegate":3,"location-bar":4}]},{},[]);var requestAnimationFrame=require("cherrytree");var requestAnimationFrame=require("cherrytree/location/history_location");
{
"name": "requirebin-sketch",
"version": "1.0.0",
"dependencies": {
"cherrytree": "0.4.0"
}
}
<style type='text/css'>html, body { margin: 0; padding: 0; border: 0; }
body, html { height: 100%; width: 100%; }</style>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment