// Compiled by ClojureScript 1.11.60 {:static-fns true, :optimize-constants true, :optimizations :advanced} goog.provide('secretary.core'); goog.require('cljs.core'); goog.require('cljs.core.constants'); goog.require('clojure.string'); goog.require('clojure.walk'); /** * @interface */ secretary.core.IRouteMatches = function(){}; var secretary$core$IRouteMatches$route_matches$dyn_10749 = (function (this$,route){ var x__5393__auto__ = (((this$ == null))?null:this$); var m__5394__auto__ = (secretary.core.route_matches[goog.typeOf(x__5393__auto__)]); if((!((m__5394__auto__ == null)))){ return (m__5394__auto__.cljs$core$IFn$_invoke$arity$2 ? m__5394__auto__.cljs$core$IFn$_invoke$arity$2(this$,route) : m__5394__auto__.call(null,this$,route)); } else { var m__5392__auto__ = (secretary.core.route_matches["_"]); if((!((m__5392__auto__ == null)))){ return (m__5392__auto__.cljs$core$IFn$_invoke$arity$2 ? m__5392__auto__.cljs$core$IFn$_invoke$arity$2(this$,route) : m__5392__auto__.call(null,this$,route)); } else { throw cljs.core.missing_protocol("IRouteMatches.route-matches",this$); } } }); secretary.core.route_matches = (function secretary$core$route_matches(this$,route){ if((((!((this$ == null)))) && ((!((this$.secretary$core$IRouteMatches$route_matches$arity$2 == null)))))){ return this$.secretary$core$IRouteMatches$route_matches$arity$2(this$,route); } else { return secretary$core$IRouteMatches$route_matches$dyn_10749(this$,route); } }); /** * @interface */ secretary.core.IRouteValue = function(){}; var secretary$core$IRouteValue$route_value$dyn_10750 = (function (this$){ var x__5393__auto__ = (((this$ == null))?null:this$); var m__5394__auto__ = (secretary.core.route_value[goog.typeOf(x__5393__auto__)]); if((!((m__5394__auto__ == null)))){ return (m__5394__auto__.cljs$core$IFn$_invoke$arity$1 ? m__5394__auto__.cljs$core$IFn$_invoke$arity$1(this$) : m__5394__auto__.call(null,this$)); } else { var m__5392__auto__ = (secretary.core.route_value["_"]); if((!((m__5392__auto__ == null)))){ return (m__5392__auto__.cljs$core$IFn$_invoke$arity$1 ? m__5392__auto__.cljs$core$IFn$_invoke$arity$1(this$) : m__5392__auto__.call(null,this$)); } else { throw cljs.core.missing_protocol("IRouteValue.route-value",this$); } } }); secretary.core.route_value = (function secretary$core$route_value(this$){ if((((!((this$ == null)))) && ((!((this$.secretary$core$IRouteValue$route_value$arity$1 == null)))))){ return this$.secretary$core$IRouteValue$route_value$arity$1(this$); } else { return secretary$core$IRouteValue$route_value$dyn_10750(this$); } }); /** * @interface */ secretary.core.IRenderRoute = function(){}; var secretary$core$IRenderRoute$render_route$dyn_10753 = (function() { var G__10754 = null; var G__10754__1 = (function (this$){ var x__5393__auto__ = (((this$ == null))?null:this$); var m__5394__auto__ = (secretary.core.render_route[goog.typeOf(x__5393__auto__)]); if((!((m__5394__auto__ == null)))){ return (m__5394__auto__.cljs$core$IFn$_invoke$arity$1 ? m__5394__auto__.cljs$core$IFn$_invoke$arity$1(this$) : m__5394__auto__.call(null,this$)); } else { var m__5392__auto__ = (secretary.core.render_route["_"]); if((!((m__5392__auto__ == null)))){ return (m__5392__auto__.cljs$core$IFn$_invoke$arity$1 ? m__5392__auto__.cljs$core$IFn$_invoke$arity$1(this$) : m__5392__auto__.call(null,this$)); } else { throw cljs.core.missing_protocol("IRenderRoute.render-route",this$); } } }); var G__10754__2 = (function (this$,params){ var x__5393__auto__ = (((this$ == null))?null:this$); var m__5394__auto__ = (secretary.core.render_route[goog.typeOf(x__5393__auto__)]); if((!((m__5394__auto__ == null)))){ return (m__5394__auto__.cljs$core$IFn$_invoke$arity$2 ? m__5394__auto__.cljs$core$IFn$_invoke$arity$2(this$,params) : m__5394__auto__.call(null,this$,params)); } else { var m__5392__auto__ = (secretary.core.render_route["_"]); if((!((m__5392__auto__ == null)))){ return (m__5392__auto__.cljs$core$IFn$_invoke$arity$2 ? m__5392__auto__.cljs$core$IFn$_invoke$arity$2(this$,params) : m__5392__auto__.call(null,this$,params)); } else { throw cljs.core.missing_protocol("IRenderRoute.render-route",this$); } } }); G__10754 = function(this$,params){ switch(arguments.length){ case 1: return G__10754__1.call(this,this$); case 2: return G__10754__2.call(this,this$,params); } throw(new Error('Invalid arity: ' + arguments.length)); }; G__10754.cljs$core$IFn$_invoke$arity$1 = G__10754__1; G__10754.cljs$core$IFn$_invoke$arity$2 = G__10754__2; return G__10754; })() ; secretary.core.render_route = (function secretary$core$render_route(var_args){ var G__10752 = arguments.length; switch (G__10752) { case 1: return secretary.core.render_route.cljs$core$IFn$_invoke$arity$1((arguments[(0)])); break; case 2: return secretary.core.render_route.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)])); break; default: throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join(''))); } }); (secretary.core.render_route.cljs$core$IFn$_invoke$arity$1 = (function (this$){ if((((!((this$ == null)))) && ((!((this$.secretary$core$IRenderRoute$render_route$arity$1 == null)))))){ return this$.secretary$core$IRenderRoute$render_route$arity$1(this$); } else { return secretary$core$IRenderRoute$render_route$dyn_10753.cljs$core$IFn$_invoke$arity$1(this$); } })); (secretary.core.render_route.cljs$core$IFn$_invoke$arity$2 = (function (this$,params){ if((((!((this$ == null)))) && ((!((this$.secretary$core$IRenderRoute$render_route$arity$2 == null)))))){ return this$.secretary$core$IRenderRoute$render_route$arity$2(this$,params); } else { return secretary$core$IRenderRoute$render_route$dyn_10753.cljs$core$IFn$_invoke$arity$2(this$,params); } })); (secretary.core.render_route.cljs$lang$maxFixedArity = 2); secretary.core._STAR_config_STAR_ = cljs.core.atom.cljs$core$IFn$_invoke$arity$1(new cljs.core.PersistentArrayMap(null, 1, [cljs.core.cst$kw$prefix,""], null)); /** * Gets a value for *config* at path. */ secretary.core.get_config = (function secretary$core$get_config(path){ var path__$1 = ((cljs.core.sequential_QMARK_(path))?path:new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [path], null)); return cljs.core.get_in.cljs$core$IFn$_invoke$arity$2(cljs.core.deref(secretary.core._STAR_config_STAR_),path__$1); }); /** * Associates a value val for *config* at path. */ secretary.core.set_config_BANG_ = (function secretary$core$set_config_BANG_(path,val){ var path__$1 = ((cljs.core.sequential_QMARK_(path))?path:new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [path], null)); return cljs.core.swap_BANG_.cljs$core$IFn$_invoke$arity$4(secretary.core._STAR_config_STAR_,cljs.core.assoc_in,path__$1,val); }); secretary.core.encode = encodeURIComponent; if((typeof secretary !== 'undefined') && (typeof secretary.core !== 'undefined') && (typeof secretary.core.encode_pair !== 'undefined')){ } else { /** * Given a key and a value return and encoded key-value pair. */ secretary.core.encode_pair = (function (){var method_table__5642__auto__ = cljs.core.atom.cljs$core$IFn$_invoke$arity$1(cljs.core.PersistentArrayMap.EMPTY); var prefer_table__5643__auto__ = cljs.core.atom.cljs$core$IFn$_invoke$arity$1(cljs.core.PersistentArrayMap.EMPTY); var method_cache__5644__auto__ = cljs.core.atom.cljs$core$IFn$_invoke$arity$1(cljs.core.PersistentArrayMap.EMPTY); var cached_hierarchy__5645__auto__ = cljs.core.atom.cljs$core$IFn$_invoke$arity$1(cljs.core.PersistentArrayMap.EMPTY); var hierarchy__5646__auto__ = cljs.core.get.cljs$core$IFn$_invoke$arity$3(cljs.core.PersistentArrayMap.EMPTY,cljs.core.cst$kw$hierarchy,(function (){var fexpr__10756 = cljs.core.get_global_hierarchy; return (fexpr__10756.cljs$core$IFn$_invoke$arity$0 ? fexpr__10756.cljs$core$IFn$_invoke$arity$0() : fexpr__10756.call(null)); })()); return (new cljs.core.MultiFn(cljs.core.symbol.cljs$core$IFn$_invoke$arity$2("secretary.core","encode-pair"),(function (p__10757){ var vec__10758 = p__10757; var k = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__10758,(0),null); var v = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__10758,(1),null); if(((cljs.core.sequential_QMARK_(v)) || (cljs.core.set_QMARK_(v)))){ return cljs.core.cst$kw$secretary$core_SLASH_sequential; } else { if((function (){var or__5045__auto__ = cljs.core.map_QMARK_(v); if(or__5045__auto__){ return or__5045__auto__; } else { if((!((v == null)))){ if((((v.cljs$lang$protocol_mask$partition0$ & (67108864))) || ((cljs.core.PROTOCOL_SENTINEL === v.cljs$core$IRecord$)))){ return true; } else { if((!v.cljs$lang$protocol_mask$partition0$)){ return cljs.core.native_satisfies_QMARK_(cljs.core.IRecord,v); } else { return false; } } } else { return cljs.core.native_satisfies_QMARK_(cljs.core.IRecord,v); } } })()){ return cljs.core.cst$kw$secretary$core_SLASH_map; } else { return null; } } }),cljs.core.cst$kw$default,hierarchy__5646__auto__,method_table__5642__auto__,prefer_table__5643__auto__,method_cache__5644__auto__,cached_hierarchy__5645__auto__)); })(); } secretary.core.key_index = (function secretary$core$key_index(var_args){ var G__10763 = arguments.length; switch (G__10763) { case 1: return secretary.core.key_index.cljs$core$IFn$_invoke$arity$1((arguments[(0)])); break; case 2: return secretary.core.key_index.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)])); break; default: throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join(''))); } }); (secretary.core.key_index.cljs$core$IFn$_invoke$arity$1 = (function (k){ return [cljs.core.name(k),"[]"].join(''); })); (secretary.core.key_index.cljs$core$IFn$_invoke$arity$2 = (function (k,index){ return [cljs.core.name(k),"[",cljs.core.str.cljs$core$IFn$_invoke$arity$1(index),"]"].join(''); })); (secretary.core.key_index.cljs$lang$maxFixedArity = 2); secretary.core.encode_pair.cljs$core$IMultiFn$_add_method$arity$3(null,cljs.core.cst$kw$secretary$core_SLASH_sequential,(function (p__10765){ var vec__10766 = p__10765; var k = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__10766,(0),null); var v = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__10766,(1),null); var encoded = cljs.core.map_indexed.cljs$core$IFn$_invoke$arity$2((function (i,x){ var pair = ((cljs.core.coll_QMARK_(x))?new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [secretary.core.key_index.cljs$core$IFn$_invoke$arity$2(k,i),x], null):new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [secretary.core.key_index.cljs$core$IFn$_invoke$arity$1(k),x], null)); return (secretary.core.encode_pair.cljs$core$IFn$_invoke$arity$1 ? secretary.core.encode_pair.cljs$core$IFn$_invoke$arity$1(pair) : secretary.core.encode_pair.call(null,pair)); }),v); return clojure.string.join.cljs$core$IFn$_invoke$arity$2("&",encoded); })); secretary.core.encode_pair.cljs$core$IMultiFn$_add_method$arity$3(null,cljs.core.cst$kw$secretary$core_SLASH_map,(function (p__10769){ var vec__10770 = p__10769; var k = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__10770,(0),null); var v = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__10770,(1),null); var encoded = cljs.core.map.cljs$core$IFn$_invoke$arity$2((function (p__10773){ var vec__10774 = p__10773; var ik = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__10774,(0),null); var iv = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__10774,(1),null); var G__10777 = new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [secretary.core.key_index.cljs$core$IFn$_invoke$arity$2(k,cljs.core.name(ik)),iv], null); return (secretary.core.encode_pair.cljs$core$IFn$_invoke$arity$1 ? secretary.core.encode_pair.cljs$core$IFn$_invoke$arity$1(G__10777) : secretary.core.encode_pair.call(null,G__10777)); }),v); return clojure.string.join.cljs$core$IFn$_invoke$arity$2("&",encoded); })); secretary.core.encode_pair.cljs$core$IMultiFn$_add_method$arity$3(null,cljs.core.cst$kw$default,(function (p__10778){ var vec__10779 = p__10778; var k = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__10779,(0),null); var v = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__10779,(1),null); return [cljs.core.name(k),"=",cljs.core.str.cljs$core$IFn$_invoke$arity$1((function (){var G__10783 = cljs.core.str.cljs$core$IFn$_invoke$arity$1(v); return (secretary.core.encode.cljs$core$IFn$_invoke$arity$1 ? secretary.core.encode.cljs$core$IFn$_invoke$arity$1(G__10783) : secretary.core.encode.call(null,G__10783)); })())].join(''); })); /** * Convert a map of query parameters into url encoded string. */ secretary.core.encode_query_params = (function secretary$core$encode_query_params(query_params){ return clojure.string.join.cljs$core$IFn$_invoke$arity$2("&",cljs.core.map.cljs$core$IFn$_invoke$arity$2(secretary.core.encode_pair,query_params)); }); /** * Like js/encodeURIComponent excepts ignore slashes. */ secretary.core.encode_uri = (function secretary$core$encode_uri(uri){ return clojure.string.join.cljs$core$IFn$_invoke$arity$2("/",cljs.core.map.cljs$core$IFn$_invoke$arity$2(secretary.core.encode,clojure.string.split.cljs$core$IFn$_invoke$arity$2(uri,/\//))); }); secretary.core.decode = decodeURIComponent; /** * Parse a value from a serialized query-string key index. If the * index value is empty 0 is returned, if it's a digit it returns the * js/parseInt value, otherwise it returns the extracted index. */ secretary.core.parse_path = (function secretary$core$parse_path(path){ var index_re = /\[([^\]]*)\]*/; var parts = cljs.core.re_seq(index_re,path); return cljs.core.map.cljs$core$IFn$_invoke$arity$2((function (p__10784){ var vec__10785 = p__10784; var _ = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__10785,(0),null); var part = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__10785,(1),null); if(cljs.core.empty_QMARK_(part)){ return (0); } else { if(cljs.core.truth_(cljs.core.re_matches(/\d+/,part))){ return parseInt(part); } else { return part; } } }),parts); }); /** * Return a key path for a serialized query-string entry. * * Ex. * * (key-parse "foo[][a][][b]") * ;; => ("foo" 0 "a" 0 "b") * */ secretary.core.key_parse = (function secretary$core$key_parse(k){ var re = /([^\[\]]+)((?:\[[^\]]*\])*)?/; var vec__10788 = cljs.core.re_matches(re,k); var _ = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__10788,(0),null); var key = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__10788,(1),null); var path = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__10788,(2),null); var parsed_path = (cljs.core.truth_(path)?secretary.core.parse_path(path):null); return cljs.core.cons(key,parsed_path); }); /** * Like assoc-in but numbers in path create vectors instead of maps. * * Ex. * * (assoc-in-query-params {} ["foo" 0] 1) * ;; => {"foo" [1]} * * (assoc-in-query-params {} ["foo" 0 "a"] 1) * ;; => {"foo" [{"a" 1}]} * */ secretary.core.assoc_in_query_params = (function secretary$core$assoc_in_query_params(m,path,v){ var heads = (function (xs){ return cljs.core.map_indexed.cljs$core$IFn$_invoke$arity$2((function (i,_){ return cljs.core.take.cljs$core$IFn$_invoke$arity$2((i + (1)),xs); }),xs); }); var hs = heads(path); var m__$1 = cljs.core.reduce.cljs$core$IFn$_invoke$arity$3((function (m__$1,h){ if(((typeof cljs.core.last(h) === 'number') && ((!(cljs.core.vector_QMARK_(cljs.core.get_in.cljs$core$IFn$_invoke$arity$2(m__$1,cljs.core.butlast(h)))))))){ return cljs.core.assoc_in(m__$1,cljs.core.butlast(h),cljs.core.PersistentVector.EMPTY); } else { return m__$1; } }),m,hs); if((cljs.core.last(path) === (0))){ return cljs.core.update_in.cljs$core$IFn$_invoke$arity$4(m__$1,cljs.core.butlast(path),cljs.core.conj,v); } else { return cljs.core.assoc_in(m__$1,path,v); } }); /** * Extract a map of query parameters from a query string. */ secretary.core.decode_query_params = (function secretary$core$decode_query_params(query_string){ var parts = clojure.string.split.cljs$core$IFn$_invoke$arity$2(query_string,/&/); var params = cljs.core.reduce.cljs$core$IFn$_invoke$arity$3((function (m,part){ var vec__10791 = clojure.string.split.cljs$core$IFn$_invoke$arity$3(part,/=/,(2)); var k = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__10791,(0),null); var v = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__10791,(1),null); return secretary.core.assoc_in_query_params(m,secretary.core.key_parse((secretary.core.decode.cljs$core$IFn$_invoke$arity$1 ? secretary.core.decode.cljs$core$IFn$_invoke$arity$1(k) : secretary.core.decode.call(null,k))),(secretary.core.decode.cljs$core$IFn$_invoke$arity$1 ? secretary.core.decode.cljs$core$IFn$_invoke$arity$1(v) : secretary.core.decode.call(null,v))); }),cljs.core.PersistentArrayMap.EMPTY,parts); var params__$1 = clojure.walk.keywordize_keys(params); return params__$1; }); /** * Like re-matches but result is a always vector. If re does not * capture matches then it will return a vector of [m m] as if it had a * single capture. Other wise it maintains consistent behavior with * re-matches. */ secretary.core.re_matches_STAR_ = (function secretary$core$re_matches_STAR_(re,s){ var ms = cljs.core.re_matches(re,s); if(cljs.core.truth_(ms)){ if(cljs.core.sequential_QMARK_(ms)){ return ms; } else { return new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [ms,ms], null); } } else { return null; } }); secretary.core.re_escape_chars = cljs.core.set("\\.*+|?()[]{}$^"); secretary.core.re_escape = (function secretary$core$re_escape(s){ return cljs.core.reduce.cljs$core$IFn$_invoke$arity$3((function (s__$1,c){ if(cljs.core.truth_((secretary.core.re_escape_chars.cljs$core$IFn$_invoke$arity$1 ? secretary.core.re_escape_chars.cljs$core$IFn$_invoke$arity$1(c) : secretary.core.re_escape_chars.call(null,c)))){ return [cljs.core.str.cljs$core$IFn$_invoke$arity$1(s__$1),"\\",cljs.core.str.cljs$core$IFn$_invoke$arity$1(c)].join(''); } else { return [cljs.core.str.cljs$core$IFn$_invoke$arity$1(s__$1),cljs.core.str.cljs$core$IFn$_invoke$arity$1(c)].join(''); } }),"",s); }); /** * Attempt to lex a single token from s with clauses. Each clause is a * pair of [regexp action] where action is a function. regexp is * expected to begin with ^ and contain a single capture. If the * attempt is successful a vector of [s-without-token (action capture)] * is returned. Otherwise the result is nil. */ secretary.core.lex_STAR_ = (function secretary$core$lex_STAR_(s,clauses){ return cljs.core.some((function (p__10794){ var vec__10795 = p__10794; var re = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__10795,(0),null); var action = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__10795,(1),null); var temp__4657__auto__ = cljs.core.re_find(re,s); if(cljs.core.truth_(temp__4657__auto__)){ var vec__10798 = temp__4657__auto__; var m = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__10798,(0),null); var c = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__10798,(1),null); return new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.subs.cljs$core$IFn$_invoke$arity$2(s,cljs.core.count(m)),(action.cljs$core$IFn$_invoke$arity$1 ? action.cljs$core$IFn$_invoke$arity$1(c) : action.call(null,c))], null); } else { return null; } }),clauses); }); /** * Return a pair of [regex params]. regex is a compiled regular * expression for matching routes. params is a list of route param * names (:*, :id, etc.). */ secretary.core.lex_route = (function secretary$core$lex_route(s,clauses){ var s__$1 = s; var pattern = ""; var params = cljs.core.PersistentVector.EMPTY; while(true){ if(cljs.core.seq(s__$1)){ var vec__10807 = secretary.core.lex_STAR_(s__$1,clauses); var s__$2 = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__10807,(0),null); var vec__10810 = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__10807,(1),null); var r = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__10810,(0),null); var p = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__10810,(1),null); var G__10813 = s__$2; var G__10814 = [pattern,cljs.core.str.cljs$core$IFn$_invoke$arity$1(r)].join(''); var G__10815 = cljs.core.conj.cljs$core$IFn$_invoke$arity$2(params,p); s__$1 = G__10813; pattern = G__10814; params = G__10815; continue; } else { return new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.re_pattern(["^",pattern,"$"].join('')),cljs.core.remove.cljs$core$IFn$_invoke$arity$2(cljs.core.nil_QMARK_,params)], null); } break; } }); /** * Given a route return an instance of IRouteMatches. */ secretary.core.compile_route = (function secretary$core$compile_route(orig_route){ var clauses = new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [/^\*([^\s.:*\/]*)/,(function (v){ var r = "(.*?)"; var p = ((cljs.core.seq(v))?cljs.core.keyword.cljs$core$IFn$_invoke$arity$1(v):cljs.core.cst$kw$_STAR_); return new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [r,p], null); })], null),new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [/^\:([^\s.:*\/]+)/,(function (v){ var r = "([^,;?/]+)"; var p = cljs.core.keyword.cljs$core$IFn$_invoke$arity$1(v); return new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [r,p], null); })], null),new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [/^([^:*]+)/,(function (v){ var r = secretary.core.re_escape(v); return new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [r], null); })], null)], null); var vec__10816 = secretary.core.lex_route(orig_route,clauses); var re = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__10816,(0),null); var params = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__10816,(1),null); if((typeof secretary !== 'undefined') && (typeof secretary.core !== 'undefined') && (typeof secretary.core.t_secretary$core10819 !== 'undefined')){ } else { /** * @constructor * @implements {secretary.core.IRouteValue} * @implements {cljs.core.IMeta} * @implements {cljs.core.IWithMeta} * @implements {secretary.core.IRouteMatches} */ secretary.core.t_secretary$core10819 = (function (orig_route,clauses,vec__10816,re,params,meta10820){ this.orig_route = orig_route; this.clauses = clauses; this.vec__10816 = vec__10816; this.re = re; this.params = params; this.meta10820 = meta10820; this.cljs$lang$protocol_mask$partition0$ = 393216; this.cljs$lang$protocol_mask$partition1$ = 0; }); (secretary.core.t_secretary$core10819.prototype.cljs$core$IWithMeta$_with_meta$arity$2 = (function (_10821,meta10820__$1){ var self__ = this; var _10821__$1 = this; return (new secretary.core.t_secretary$core10819(self__.orig_route,self__.clauses,self__.vec__10816,self__.re,self__.params,meta10820__$1)); })); (secretary.core.t_secretary$core10819.prototype.cljs$core$IMeta$_meta$arity$1 = (function (_10821){ var self__ = this; var _10821__$1 = this; return self__.meta10820; })); (secretary.core.t_secretary$core10819.prototype.secretary$core$IRouteValue$ = cljs.core.PROTOCOL_SENTINEL); (secretary.core.t_secretary$core10819.prototype.secretary$core$IRouteValue$route_value$arity$1 = (function (this$){ var self__ = this; var this$__$1 = this; return self__.orig_route; })); (secretary.core.t_secretary$core10819.prototype.secretary$core$IRouteMatches$ = cljs.core.PROTOCOL_SENTINEL); (secretary.core.t_secretary$core10819.prototype.secretary$core$IRouteMatches$route_matches$arity$2 = (function (_,route){ var self__ = this; var ___$1 = this; var temp__4657__auto__ = secretary.core.re_matches_STAR_(self__.re,route); if(cljs.core.truth_(temp__4657__auto__)){ var vec__10822 = temp__4657__auto__; var seq__10823 = cljs.core.seq(vec__10822); var first__10824 = cljs.core.first(seq__10823); var seq__10823__$1 = cljs.core.next(seq__10823); var ___$2 = first__10824; var ms = seq__10823__$1; return cljs.core.merge_with.cljs$core$IFn$_invoke$arity$variadic(cljs.core.vector,cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([cljs.core.PersistentArrayMap.EMPTY,cljs.core.map.cljs$core$IFn$_invoke$arity$2((function (p__10825){ var vec__10826 = p__10825; var k = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__10826,(0),null); var v = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__10826,(1),null); return (new cljs.core.MapEntry(k,v,null)); }),cljs.core.partition.cljs$core$IFn$_invoke$arity$2((2),cljs.core.interleave.cljs$core$IFn$_invoke$arity$2(self__.params,cljs.core.map.cljs$core$IFn$_invoke$arity$2(secretary.core.decode,ms))))], 0)); } else { return null; } })); (secretary.core.t_secretary$core10819.getBasis = (function (){ return new cljs.core.PersistentVector(null, 6, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.cst$sym$orig_DASH_route,cljs.core.cst$sym$clauses,cljs.core.cst$sym$vec__10816,cljs.core.cst$sym$re,cljs.core.cst$sym$params,cljs.core.cst$sym$meta10820], null); })); (secretary.core.t_secretary$core10819.cljs$lang$type = true); (secretary.core.t_secretary$core10819.cljs$lang$ctorStr = "secretary.core/t_secretary$core10819"); (secretary.core.t_secretary$core10819.cljs$lang$ctorPrWriter = (function (this__5330__auto__,writer__5331__auto__,opt__5332__auto__){ return cljs.core._write(writer__5331__auto__,"secretary.core/t_secretary$core10819"); })); /** * Positional factory function for secretary.core/t_secretary$core10819. */ secretary.core.__GT_t_secretary$core10819 = (function secretary$core$compile_route_$___GT_t_secretary$core10819(orig_route__$1,clauses__$1,vec__10816__$1,re__$1,params__$1,meta10820){ return (new secretary.core.t_secretary$core10819(orig_route__$1,clauses__$1,vec__10816__$1,re__$1,params__$1,meta10820)); }); } return (new secretary.core.t_secretary$core10819(orig_route,clauses,vec__10816,re,params,cljs.core.PersistentArrayMap.EMPTY)); }); secretary.core.render_route_STAR_ = (function secretary$core$render_route_STAR_(var_args){ var args__5775__auto__ = []; var len__5769__auto___10832 = arguments.length; var i__5770__auto___10833 = (0); while(true){ if((i__5770__auto___10833 < len__5769__auto___10832)){ args__5775__auto__.push((arguments[i__5770__auto___10833])); var G__10834 = (i__5770__auto___10833 + (1)); i__5770__auto___10833 = G__10834; continue; } else { } break; } var argseq__5776__auto__ = ((((1) < args__5775__auto__.length))?(new cljs.core.IndexedSeq(args__5775__auto__.slice((1)),(0),null)):null); return secretary.core.render_route_STAR_.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),argseq__5776__auto__); }); (secretary.core.render_route_STAR_.cljs$core$IFn$_invoke$arity$variadic = (function (obj,args){ if((((!((obj == null))))?((((false) || ((cljs.core.PROTOCOL_SENTINEL === obj.secretary$core$IRenderRoute$))))?true:(((!obj.cljs$lang$protocol_mask$partition$))?cljs.core.native_satisfies_QMARK_(secretary.core.IRenderRoute,obj):false)):cljs.core.native_satisfies_QMARK_(secretary.core.IRenderRoute,obj))){ return cljs.core.apply.cljs$core$IFn$_invoke$arity$3(secretary.core.render_route,obj,args); } else { return null; } })); (secretary.core.render_route_STAR_.cljs$lang$maxFixedArity = (1)); /** @this {Function} */ (secretary.core.render_route_STAR_.cljs$lang$applyTo = (function (seq10829){ var G__10830 = cljs.core.first(seq10829); var seq10829__$1 = cljs.core.next(seq10829); var self__5754__auto__ = this; return self__5754__auto__.cljs$core$IFn$_invoke$arity$variadic(G__10830,seq10829__$1); })); secretary.core._STAR_routes_STAR_ = cljs.core.atom.cljs$core$IFn$_invoke$arity$1(cljs.core.PersistentVector.EMPTY); secretary.core.add_route_BANG_ = (function secretary$core$add_route_BANG_(obj,action){ var obj__$1 = ((typeof obj === 'string')?secretary.core.compile_route(obj):obj); return cljs.core.swap_BANG_.cljs$core$IFn$_invoke$arity$3(secretary.core._STAR_routes_STAR_,cljs.core.conj,new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [obj__$1,action], null)); }); secretary.core.remove_route_BANG_ = (function secretary$core$remove_route_BANG_(obj){ return cljs.core.swap_BANG_.cljs$core$IFn$_invoke$arity$2(secretary.core._STAR_routes_STAR_,(function (rs){ return cljs.core.filterv((function (p__10835){ var vec__10836 = p__10835; var x = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__10836,(0),null); var _ = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__10836,(1),null); return cljs.core.not_EQ_.cljs$core$IFn$_invoke$arity$2(x,obj); }),rs); })); }); secretary.core.reset_routes_BANG_ = (function secretary$core$reset_routes_BANG_(){ return cljs.core.reset_BANG_(secretary.core._STAR_routes_STAR_,cljs.core.PersistentVector.EMPTY); }); secretary.core.locate_route = (function secretary$core$locate_route(route){ return cljs.core.some((function (p__10839){ var vec__10840 = p__10839; var compiled_route = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__10840,(0),null); var action = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__10840,(1),null); var temp__4657__auto__ = secretary.core.route_matches(compiled_route,route); if(cljs.core.truth_(temp__4657__auto__)){ var params = temp__4657__auto__; return new cljs.core.PersistentArrayMap(null, 3, [cljs.core.cst$kw$action,action,cljs.core.cst$kw$params,params,cljs.core.cst$kw$route,compiled_route], null); } else { return null; } }),cljs.core.deref(secretary.core._STAR_routes_STAR_)); }); /** * Returns original route value as set in defroute when passed a URI path. */ secretary.core.locate_route_value = (function secretary$core$locate_route_value(uri){ return secretary.core.route_value(cljs.core.cst$kw$route.cljs$core$IFn$_invoke$arity$1(secretary.core.locate_route(uri))); }); secretary.core.prefix = (function secretary$core$prefix(){ return cljs.core.str.cljs$core$IFn$_invoke$arity$1(secretary.core.get_config(new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.cst$kw$prefix], null))); }); secretary.core.uri_without_prefix = (function secretary$core$uri_without_prefix(uri){ return clojure.string.replace(uri,cljs.core.re_pattern(["^",secretary.core.prefix()].join('')),""); }); /** * Ensures that the uri has a leading slash */ secretary.core.uri_with_leading_slash = (function secretary$core$uri_with_leading_slash(uri){ if(cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2("/",cljs.core.first(uri))){ return uri; } else { return ["/",cljs.core.str.cljs$core$IFn$_invoke$arity$1(uri)].join(''); } }); /** * Dispatch an action for a given route if it matches the URI path. */ secretary.core.dispatch_BANG_ = (function secretary$core$dispatch_BANG_(uri){ var vec__10843 = clojure.string.split.cljs$core$IFn$_invoke$arity$2(secretary.core.uri_without_prefix(uri),/\?/); var uri_path = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__10843,(0),null); var query_string = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__10843,(1),null); var uri_path__$1 = secretary.core.uri_with_leading_slash(uri_path); var query_params = (cljs.core.truth_(query_string)?new cljs.core.PersistentArrayMap(null, 1, [cljs.core.cst$kw$query_DASH_params,secretary.core.decode_query_params(query_string)], null):null); var map__10846 = secretary.core.locate_route(uri_path__$1); var map__10846__$1 = cljs.core.__destructure_map(map__10846); var action = cljs.core.get.cljs$core$IFn$_invoke$arity$2(map__10846__$1,cljs.core.cst$kw$action); var params = cljs.core.get.cljs$core$IFn$_invoke$arity$2(map__10846__$1,cljs.core.cst$kw$params); var action__$1 = (function (){var or__5045__auto__ = action; if(cljs.core.truth_(or__5045__auto__)){ return or__5045__auto__; } else { return cljs.core.identity; } })(); var params__$1 = cljs.core.merge.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([params,query_params], 0)); return (action__$1.cljs$core$IFn$_invoke$arity$1 ? action__$1.cljs$core$IFn$_invoke$arity$1(params__$1) : action__$1.call(null,params__$1)); }); secretary.core.invalid_params = (function secretary$core$invalid_params(params,validations){ return cljs.core.reduce.cljs$core$IFn$_invoke$arity$3((function (m,p__10847){ var vec__10848 = p__10847; var key = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__10848,(0),null); var validation = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__10848,(1),null); var value = cljs.core.get.cljs$core$IFn$_invoke$arity$2(params,key); if(cljs.core.truth_(cljs.core.re_matches(validation,value))){ return m; } else { return cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(m,key,new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [value,validation], null)); } }),cljs.core.PersistentArrayMap.EMPTY,cljs.core.partition.cljs$core$IFn$_invoke$arity$2((2),validations)); }); secretary.core.params_valid_QMARK_ = (function secretary$core$params_valid_QMARK_(params,validations){ return cljs.core.empty_QMARK_(secretary.core.invalid_params(params,validations)); }); (secretary.core.IRouteMatches["string"] = true); (secretary.core.route_matches["string"] = (function (this$,route){ return secretary.core.compile_route(this$).secretary$core$IRouteMatches$route_matches$arity$2(null,route); })); (RegExp.prototype.secretary$core$IRouteMatches$ = cljs.core.PROTOCOL_SENTINEL); (RegExp.prototype.secretary$core$IRouteMatches$route_matches$arity$2 = (function (this$,route){ var this$__$1 = this; var temp__4657__auto__ = secretary.core.re_matches_STAR_(this$__$1,route); if(cljs.core.truth_(temp__4657__auto__)){ var vec__10851 = temp__4657__auto__; var seq__10852 = cljs.core.seq(vec__10851); var first__10853 = cljs.core.first(seq__10852); var seq__10852__$1 = cljs.core.next(seq__10852); var _ = first__10853; var ms = seq__10852__$1; return cljs.core.vec(ms); } else { return null; } })); (cljs.core.PersistentVector.prototype.secretary$core$IRouteMatches$ = cljs.core.PROTOCOL_SENTINEL); (cljs.core.PersistentVector.prototype.secretary$core$IRouteMatches$route_matches$arity$2 = (function (p__10854,route){ var vec__10855 = p__10854; var seq__10856 = cljs.core.seq(vec__10855); var first__10857 = cljs.core.first(seq__10856); var seq__10856__$1 = cljs.core.next(seq__10856); var route_string = first__10857; var validations = seq__10856__$1; var vec__10858 = this; var seq__10859 = cljs.core.seq(vec__10858); var first__10860 = cljs.core.first(seq__10859); var seq__10859__$1 = cljs.core.next(seq__10859); var route_string__$1 = first__10860; var validations__$1 = seq__10859__$1; var params = secretary.core.compile_route(route_string__$1).secretary$core$IRouteMatches$route_matches$arity$2(null,route); if(secretary.core.params_valid_QMARK_(params,validations__$1)){ return params; } else { return null; } })); (secretary.core.IRouteValue["string"] = true); (secretary.core.route_value["string"] = (function (this$){ return secretary.core.compile_route(this$).secretary$core$IRouteValue$route_value$arity$1(null); })); (RegExp.prototype.secretary$core$IRouteValue$ = cljs.core.PROTOCOL_SENTINEL); (RegExp.prototype.secretary$core$IRouteValue$route_value$arity$1 = (function (this$){ var this$__$1 = this; return this$__$1; })); (cljs.core.PersistentVector.prototype.secretary$core$IRouteValue$ = cljs.core.PROTOCOL_SENTINEL); (cljs.core.PersistentVector.prototype.secretary$core$IRouteValue$route_value$arity$1 = (function (p__10861){ var vec__10862 = p__10861; var seq__10863 = cljs.core.seq(vec__10862); var first__10864 = cljs.core.first(seq__10863); var seq__10863__$1 = cljs.core.next(seq__10863); var route_string = first__10864; var validations = seq__10863__$1; var vec__10865 = this; var seq__10866 = cljs.core.seq(vec__10865); var first__10867 = cljs.core.first(seq__10866); var seq__10866__$1 = cljs.core.next(seq__10866); var route_string__$1 = first__10867; var validations__$1 = seq__10866__$1; return cljs.core.vec(cljs.core.cons(secretary.core.route_value(route_string__$1),validations__$1)); })); (secretary.core.IRenderRoute["string"] = true); (secretary.core.render_route["string"] = (function() { var G__10876 = null; var G__10876__1 = (function (this$){ return secretary.core.render_route.cljs$core$IFn$_invoke$arity$2(this$,cljs.core.PersistentArrayMap.EMPTY); }); var G__10876__2 = (function (this$,params){ var map__10868 = params; var map__10868__$1 = cljs.core.__destructure_map(map__10868); var m = map__10868__$1; var query_params = cljs.core.get.cljs$core$IFn$_invoke$arity$2(map__10868__$1,cljs.core.cst$kw$query_DASH_params); var a = cljs.core.atom.cljs$core$IFn$_invoke$arity$1(m); var path = this$.replace((new RegExp(":[^\\s.:*/]+|\\*[^\\s.:*/]*","g")),(function ($1){ var lookup = cljs.core.keyword.cljs$core$IFn$_invoke$arity$1(((cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2($1,"*"))?$1:cljs.core.subs.cljs$core$IFn$_invoke$arity$2($1,(1)))); var v = cljs.core.get.cljs$core$IFn$_invoke$arity$2(cljs.core.deref(a),lookup); var replacement = ((cljs.core.sequential_QMARK_(v))?(function (){ cljs.core.swap_BANG_.cljs$core$IFn$_invoke$arity$4(a,cljs.core.assoc,lookup,cljs.core.next(v)); return secretary.core.encode_uri(cljs.core.first(v)); })() :(cljs.core.truth_(v)?secretary.core.encode_uri(v):$1)); return replacement; })); var path__$1 = [cljs.core.str.cljs$core$IFn$_invoke$arity$1(secretary.core.get_config(new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.cst$kw$prefix], null))),cljs.core.str.cljs$core$IFn$_invoke$arity$1(path)].join(''); var temp__4655__auto__ = (function (){var and__5043__auto__ = query_params; if(cljs.core.truth_(and__5043__auto__)){ return secretary.core.encode_query_params(query_params); } else { return and__5043__auto__; } })(); if(cljs.core.truth_(temp__4655__auto__)){ var query_string = temp__4655__auto__; return [path__$1,"?",cljs.core.str.cljs$core$IFn$_invoke$arity$1(query_string)].join(''); } else { return path__$1; } }); G__10876 = function(this$,params){ switch(arguments.length){ case 1: return G__10876__1.call(this,this$); case 2: return G__10876__2.call(this,this$,params); } throw(new Error('Invalid arity: ' + arguments.length)); }; G__10876.cljs$core$IFn$_invoke$arity$1 = G__10876__1; G__10876.cljs$core$IFn$_invoke$arity$2 = G__10876__2; return G__10876; })() ); (cljs.core.PersistentVector.prototype.secretary$core$IRenderRoute$ = cljs.core.PROTOCOL_SENTINEL); (cljs.core.PersistentVector.prototype.secretary$core$IRenderRoute$render_route$arity$1 = (function (this$){ var this$__$1 = this; return secretary.core.render_route.cljs$core$IFn$_invoke$arity$2(this$__$1,cljs.core.PersistentArrayMap.EMPTY); })); (cljs.core.PersistentVector.prototype.secretary$core$IRenderRoute$render_route$arity$2 = (function (p__10869,params){ var vec__10870 = p__10869; var seq__10871 = cljs.core.seq(vec__10870); var first__10872 = cljs.core.first(seq__10871); var seq__10871__$1 = cljs.core.next(seq__10871); var route_string = first__10872; var validations = seq__10871__$1; var vec__10873 = this; var seq__10874 = cljs.core.seq(vec__10873); var first__10875 = cljs.core.first(seq__10874); var seq__10874__$1 = cljs.core.next(seq__10874); var route_string__$1 = first__10875; var validations__$1 = seq__10874__$1; var invalid = secretary.core.invalid_params(params,validations__$1); if(cljs.core.empty_QMARK_(invalid)){ return secretary.core.render_route.cljs$core$IFn$_invoke$arity$2(route_string__$1,params); } else { throw cljs.core.ex_info.cljs$core$IFn$_invoke$arity$2("Could not build route: invalid params",invalid); } }));